
From nobody Mon Nov  2 09:57:07 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8153E3A0ED5 for <webtransport@ietfa.amsl.com>; Mon,  2 Nov 2020 09:57:05 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.087
X-Spam-Level: 
X-Spam-Status: No, score=-2.087 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 b0DWPmNNR3V4 for <webtransport@ietfa.amsl.com>; Mon,  2 Nov 2020 09:57:04 -0800 (PST)
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) (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 EA70A3A0C41 for <webtransport@ietf.org>; Mon,  2 Nov 2020 09:57:03 -0800 (PST)
Received: by mail-lj1-x22d.google.com with SMTP id m16so16013064ljo.6 for <webtransport@ietf.org>; Mon, 02 Nov 2020 09:57:03 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=5OerUktPK+odCek5DnFakc9ZJ93vHD+XwobmKFB03Jg=; b=AOs7ZMJ176RXNT12C5l+ra84btl+YQzentddVLUxUBajYMTgw4v0XYQTDzBSn36XHL JyHTsQ/6KlcfAtPa49A2TU6Cf6bA1Wphdq4SDRM+nus79Aw+COXYAj9YW60+uRh5XbZd utV5OZNGVKIb0w1r7O5aCUI9HmX5+FXoOsPs+yMld8UvVQpBqW+bt0wPZnRplg3qvysU OtXgaEBXFlFFA3s1MoFnMqrtuvZy6JEpottsFDDFBTSD6UHSk7gp2Ao8wUNXoMJMNCmf ZjyoY00pDPz1R69VpFmkcKmMRLeIgXkgwEj8o6ga5m0lPEQNvvvj3DGAFBvSt/ZmkqRn 7Zig==
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; bh=5OerUktPK+odCek5DnFakc9ZJ93vHD+XwobmKFB03Jg=; b=mzkGlaDsqY19HOej7MW3oituCtcTE1JRS2cFx6LHzRn2PGk1sMS6ieqhQJDSg/NlqO ElJ3KDX+kt5t/75gDBQklPEr5RxqdlZu6ptufLhP7eBEGdc0CT/RouWQRXJWhNX+teRW Wz6NScj735xlC3erQ8dprCzNC9fm5u2CU+yRjwmghFsdbg5OlK557bkSbAh8BIHj0JsI wHEX34DwUkvw9NGbvr3FlAuEP6Xg2i6nZJdJSgSnSesCGZYI7DZrmwnlCxHIyfsNxQXO 3dyBxooCO2Lz331F4OmYNX8QjtZ71Tg9nyAXcE+LG7ySJ2nXM6vSSMz7ROctmQE16W6/ UfDQ==
X-Gm-Message-State: AOAM530GgIa8fKqTwAf7douUsxyBXA5sdHaCRRwIBO50qzu9rb/4a96D FXFuScQQYw3fExOsGFXUPidrt91Pq70lZauQzTrYOYBC5py4dQ==
X-Google-Smtp-Source: ABdhPJwh/Tx0kkOy/6bXcRmPinAVZ6Ab36bWFFXka/tY5w4Nlfner7SeOzEyhF/JmbOxdl95cCOYnefrQPNImJOaji0=
X-Received: by 2002:a2e:8798:: with SMTP id n24mr6554773lji.317.1604339821750;  Mon, 02 Nov 2020 09:57:01 -0800 (PST)
MIME-Version: 1.0
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Mon, 2 Nov 2020 09:56:52 -0800
Message-ID: <CAOW+2du-z39pacBDoK1WDu=w1tu1yDqNzU9N5_BuVXLgWhB07A@mail.gmail.com>
To: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000002caccd05b32379e4"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/luAhRdHGPN_mco60En4Rbp0wc9g>
Subject: [Webtransport] Reminder: I-D submission deadline today!
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 02 Nov 2020 17:57:06 -0000

--0000000000002caccd05b32379e4
Content-Type: text/plain; charset="UTF-8"

Today is the deadline for submission of Internet Drafts for IETF 109 (UTC
23:59).


   - 2020-11-02 (Monday): Internet Draft submission cut-off (for all
   drafts, including -00) by UTC 23:59. Upload using the ID Submission Tool
   <https://datatracker.ietf.org/submit/>.

--0000000000002caccd05b32379e4
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">Today is the deadline for submission of I=
nternet Drafts for IETF 109 (UTC 23:59).=C2=A0</div><div dir=3D"ltr"><br><u=
l style=3D"box-sizing:border-box;margin-top:0px;margin-bottom:10.5px;font-f=
amily:&quot;PT Serif&quot;,Palatino,&quot;Neue Swift&quot;,serif;font-size:=
15px"><li style=3D"box-sizing:border-box"><span style=3D"box-sizing:border-=
box;font-weight:700">2020-11-02 (Monday):</span>=C2=A0Internet Draft submis=
sion cut-off (for all drafts, including -00) by UTC 23:59. Upload using the=
=C2=A0<a href=3D"https://datatracker.ietf.org/submit/" style=3D"box-sizing:=
border-box;background-color:transparent;color:rgb(61,34,179);text-decoratio=
n-line:none">ID Submission Tool</a>.</li></ul></div></div>

--0000000000002caccd05b32379e4--


From nobody Tue Nov  3 05:55:17 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AE1343A00C9 for <webtransport@ietfa.amsl.com>; Tue,  3 Nov 2020 05:55:15 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 iaRlnuyhy-jP for <webtransport@ietfa.amsl.com>; Tue,  3 Nov 2020 05:55:14 -0800 (PST)
Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [IPv6:2a00:1450:4864:20::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 C57953A0AC6 for <webtransport@ietf.org>; Tue,  3 Nov 2020 05:55:13 -0800 (PST)
Received: by mail-lj1-x22c.google.com with SMTP id v19so14189367lji.5 for <webtransport@ietf.org>; Tue, 03 Nov 2020 05:55:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=SIGn92AwQRda7HUEsyjVi40lwjmqo2vlO5KdDktJK6M=; b=JQq6IZoh4bCym0WW4tZKpvh/4zQ7DYK2FPOpbuO3UKlDzVysDHBZNk5o2Ry4Mkheoo S2TGCL5uEiXhD9BC1Bh8pONO3LigtdKr/x0E/IN3zOuwabXnll6EELoV7ZA9VO5q1Sd4 gKnj2mdMgdHpD0fA0B/b8lyWmKcT3bHZCKJp4lSE3tmDJujNoj54WholDiQyfZneurHW EzUfxml5y5ffAXUjCeZzlmybsY1e8629N3XubXmFcVwSMLS0Hl+NyjyKLib+QK+PQ/nz 8z3aLcMznEuHrOe6lB949VGmf/H80HKYvQzF3BKBsfbWqDS6HmH/98o2extYFFGP7MFx 691A==
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; bh=SIGn92AwQRda7HUEsyjVi40lwjmqo2vlO5KdDktJK6M=; b=YBzbdj80cn7qavSbDgWP0TW3ieCI3MCrtVa1cLBDiB/mnqJlW7GYDrvG8cEG/Xk5Q8 ykNKHUeEyanT+9EuwPi9WanwaJMyEJCW90/woxECB+fVFsKSZFsgz0c/9bjHOngjzfcr Ji/sF0hKWucvE5YPrqovaaVCGjybHwIS0wb9LRYsWDRouxmY2Jy6waGWFnztVpfb8H5K HzMnGEEJY/BTK7MAv3Zk+mXb20UAVSPP4YtXj5oDsqMrYf98SFOIEcLmwGlI+VHSsx/Q cOwUtMHKnQkK3p1U6LzVsYK+T+6wQSZM0h7fe/cnGD74edk56nI5bX94uxYgnILablfP MOMA==
X-Gm-Message-State: AOAM531zevuy1/se1l9fQnZ7j0im52eY6goA3idfXwhTTZxs/P4vJ2B+ 7P7QSGtJim/RXlbYTWvf2XDaTl8WT/5asEjga6w0ACfP5MRM4A==
X-Google-Smtp-Source: ABdhPJxI8nQnYaMBEomHs9vCLr1mAaXzFMTcDpRCYSmyUZ7P1PUj/NtjiVVQqIqe9YfN3KShnibvN+dWAUZ9j3CrRy8=
X-Received: by 2002:a2e:7216:: with SMTP id n22mr9294125ljc.187.1604411711629;  Tue, 03 Nov 2020 05:55:11 -0800 (PST)
MIME-Version: 1.0
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Tue, 3 Nov 2020 05:55:00 -0800
Message-ID: <CAOW+2ds0LG-ZoMPgdcbJvj5fXSbr4=5n9U4voEdVjL_KN=ihfg@mail.gmail.com>
To: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000252f1005b33436cc"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/8gD2IauzFavPRLSBNUT78wRNRG8>
Subject: [Webtransport] Call for Agenda Items: WebTransport WG at IETF 109
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 03 Nov 2020 13:55:16 -0000

--000000000000252f1005b33436cc
Content-Type: text/plain; charset="UTF-8"

This is a call for agenda items for the WebTransport WG meeting at IETF
109.

The WebTransport WG is scheduled to meet at IETF 109:

Monday, November 16, 2020 01:00 - 03:00 Pacific Time
Monday, November 16, 2020 09:00 - 11:00 UTC
Monday, November 16, 2020 16:00 - 18:00 Banghok

A tentative agenda is available here:
https://www.ietf.org/proceedings/109/agenda/agenda-109-webtrans-01

--000000000000252f1005b33436cc
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">This is a call for agend=
a items for the WebTransport WG meeting at IETF 109.=C2=A0</div><div dir=3D=
"ltr"><br></div><div dir=3D"ltr">The WebTransport WG is scheduled to meet a=
t IETF 109:<div><br></div><div><div>Monday, November 16, 2020 01:00 - 03:00=
 Pacific Time</div><div>Monday, November 16, 2020 09:00 - 11:00 UTC</div><d=
iv>Monday, November 16, 2020 16:00 - 18:00 Banghok</div></div><div><br></di=
v><div>A tentative agenda is available here:=C2=A0</div><div><a href=3D"htt=
ps://www.ietf.org/proceedings/109/agenda/agenda-109-webtrans-01">https://ww=
w.ietf.org/proceedings/109/agenda/agenda-109-webtrans-01</a><br></div></div=
></div></div>

--000000000000252f1005b33436cc--


From nobody Wed Nov  4 15:26:37 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3AAAA3A115C for <webtransport@ietfa.amsl.com>; Wed,  4 Nov 2020 15:26:36 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 Ji8cOZkbGRfp for <webtransport@ietfa.amsl.com>; Wed,  4 Nov 2020 15:26:34 -0800 (PST)
Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com [IPv6:2a00:1450:4864:20::132]) (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 AB62B3A114E for <webtransport@ietf.org>; Wed,  4 Nov 2020 15:26:34 -0800 (PST)
Received: by mail-lf1-x132.google.com with SMTP id e27so111133lfn.7 for <webtransport@ietf.org>; Wed, 04 Nov 2020 15:26:34 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=rDivhJR0xq3y7cv9FR8Rq7pScC8iGu4LHdZGrU2QUiQ=; b=FddvfgBdyxLun+sidtcPH/gl5EXkXfepmhAAriTwk8t3yqHWGzzGsd5suUcAEeh8fW 9LYbwuYMnRQ6HrJNVtkjpTKAzOi/PLc2oh2kKRrFTAoqw3l6rXHSicIlch3UZe7mnUzz 4tu96id1tPHDtu/IcHNOWtSSLjqZH/tFWAQDacOTsvNQR+txnPdyDfiIWCerr4rR9Gcg c1b9+VQb94DALSc8qAqK2dT4dS17tPSewK8dL7fbenbU4yq3bUqfIyaIKuaPL6KNq3km bNeAudD0FCxzMCAo3CMVn9eYib6PKqj9o5se66wy2pSWva6cjoXLD9J11XFCct9sAdmK eJNg==
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; bh=rDivhJR0xq3y7cv9FR8Rq7pScC8iGu4LHdZGrU2QUiQ=; b=kQdgLT0J+1WPvObXitrmGg/EeUCXRXzd+JuO6gq0O4MB9gWD1hPRRrW+cL7wxZmW8n km2EVeRb0q6o/pdzidbgZnwYMPk3T5GBwxafqA2Q86XSqT1ZnLIJDzJFPPNAjjBZxs2V Kt231cKs6M4dWJTo6zwsynNN7fd6kpPM5+ekwZKSJfEIowbvCldVEmGkxKdBTqsWoMLd 0TC+cREg25AcFS3P/aWZlsPPyQiVd5kmNGQQ4e5VyGegYupDkyePXCEOjaIYUSv6FEvK Wewz5eYo64JpTxY1+llVwhqk48QL32UnkYP6qTMtzLE08s+iyKB7I/LTAzHE67o8rDo2 8SzA==
X-Gm-Message-State: AOAM531uxHDvTxYWFGO+cU8bSjTD+BBOnHRMAardprXalId64UD/cVMt js7yugVa437MxdnYQhuaXuM5jvQMcHs4uIUmDHBcyollOyO4LA==
X-Google-Smtp-Source: ABdhPJz1ZWG4NTbjRUA1oomvDSddcwBW8wBFAJ+tSsdokbIzmQmAt4khwiC1HgI+FGIt4PB6SYcnM1ZJUtoWkMpEnYI=
X-Received: by 2002:a19:5206:: with SMTP id m6mr19803lfb.367.1604532392064; Wed, 04 Nov 2020 15:26:32 -0800 (PST)
MIME-Version: 1.0
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Wed, 4 Nov 2020 15:26:21 -0800
Message-ID: <CAOW+2dsdA4Fz4Tnq9Hur2_P0eJ3r1=a21OUoQZqotLSrPPJvPw@mail.gmail.com>
To: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000427ae505b3504fd0"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/2UrHql375ZELpAMZUjQnn9Dv_ak>
Subject: [Webtransport] Reminder: Call for Agenda Items for IETF 109 WEBTRANS WG Meeting
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 04 Nov 2020 23:26:36 -0000

--000000000000427ae505b3504fd0
Content-Type: text/plain; charset="UTF-8"

This is a reminder of the Call for Agenda items at the IETF 109 WEBTRANS WG
Meeting.  A tentative agenda is available for inspection here:
https://codimd.ietf.org/notes-ietf-109-webtrans

Draft slides are available here:
https://docs.google.com/presentation/d/1zB6dcIOlKwZW8NUfYw-HtatNLpSJZBnrk-0ZpmSpfIQ/

The IETF WEBTRANS WG will meet on Monday, November 16 from 1 AM - 3 AM
Pacific TIme.  In other time zones, the meeting will occur on:

Monday, November 16, 2020 from 09:00 - 11:00 (UTC)
Monday, November 16, 2020 from 16:00 - 18:00 (Banghok).

--000000000000427ae505b3504fd0
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div di=
r=3D"ltr">This is a reminder of the Call for Agenda items at the IETF 109 W=
EBTRANS WG Meeting.=C2=A0 A tentative agenda is available for inspection he=
re:=C2=A0</div><div dir=3D"ltr"><a href=3D"https://codimd.ietf.org/notes-ie=
tf-109-webtrans">https://codimd.ietf.org/notes-ietf-109-webtrans</a><br></d=
iv><div dir=3D"ltr"><br></div><div dir=3D"ltr"><div>Draft slides are availa=
ble here:=C2=A0</div><div><a href=3D"https://docs.google.com/presentation/d=
/1zB6dcIOlKwZW8NUfYw-HtatNLpSJZBnrk-0ZpmSpfIQ/">https://docs.google.com/pre=
sentation/d/1zB6dcIOlKwZW8NUfYw-HtatNLpSJZBnrk-0ZpmSpfIQ/</a></div></div><d=
iv dir=3D"ltr"><br></div><div dir=3D"ltr">The IETF WEBTRANS WG will meet on=
 Monday, November 16 from 1 AM - 3 AM Pacific TIme.=C2=A0 In other time zon=
es, the meeting will occur on:=C2=A0</div><div dir=3D"ltr"><br></div><div>M=
onday, November 16, 2020 from 09:00 - 11:00 (UTC)=C2=A0</div><div>Monday, N=
ovember 16, 2020 from 16:00 - 18:00 (Banghok).=C2=A0</div><div><br></div><d=
iv><br></div><div dir=3D"ltr"><div><br></div><div><br></div><div><br></div>=
<div><br></div><div><br></div></div></div></div></div></div>

--000000000000427ae505b3504fd0--


From nobody Wed Nov  4 17:38:00 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 593703A124E for <webtransport@ietfa.amsl.com>; Wed,  4 Nov 2020 17:37:59 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 TBF06Fy2i0fh for <webtransport@ietfa.amsl.com>; Wed,  4 Nov 2020 17:37:57 -0800 (PST)
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com [IPv6:2a00:1450:4864:20::232]) (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 C2D2E3A124F for <webtransport@ietf.org>; Wed,  4 Nov 2020 17:37:56 -0800 (PST)
Received: by mail-lj1-x232.google.com with SMTP id y16so539435ljk.1 for <webtransport@ietf.org>; Wed, 04 Nov 2020 17:37:56 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=izB8MStc42S2p8Qf9ZmEW0s+UhP0yrgJcqp/M2LFOCg=; b=CnEBx9eSprqu+NhkLhdeXc0Dpd2pub34ufiBR+M8B0sH5q2g99HtjIw5EV2wsBEkbv XKTv6NSXbv7l1z2iIpBY1+AwER93jtJ+MjRaVoLnyK3rCa6u/GqOF4sJ5HCTR33QvYdt tvuWfMpPBxa4OX7O1xGbHq9aHkLF0uQCVqNyhpUMtQIN2KMKXBxXTgUaeGnsoWuerStD BhkVe2xF/9uMNveXuPcB5iD6/DVhCOmTN8FXHJFcEjgG3vMMnVnsYnnsrrnRcWJq7vBC IHBK/th1vnZKKjTJ8eG8qWgHkZcwDFmDpy1foo6o02aH8TZ1c+uzbfnCrZnel3EBj/wL W+1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=izB8MStc42S2p8Qf9ZmEW0s+UhP0yrgJcqp/M2LFOCg=; b=pb6Dus3xKP/hAW/9YmmnTZr2Hv8aWsw+qO6PafYu1HfOPVGeRTU6usSKhHxs2BMFL0 VxfarCjBLiLPd7CGELN8ir1HEyaTOOGlEi/5hWGFnpGb0MAjzktyNSsOA5RVveWs++b0 SfrFaMGSf1/0XTh1r2+EgjghKdDy9E4OOWvJZqJkDoWHgvmmOW6im36mJVfGMP5Vyz1I mCbLc4makgvUIdtb0YJWnmoB1IYnBohwkEN6hS3CErUi7oJjtAS7TE0FUDYOm1zMc/PN ++SE9T9bsnlO5MFj4EdjJgVwQDEIuUK7tw51OmfPHeZGJX5PZm7rH5F63Wr1bNlQbFjd ZV3A==
X-Gm-Message-State: AOAM531Pi0Kby6K2ds9r7ytWmLrhIUDT+CxrTZZYcO0wCYoHRQXQDhRO p6hlSIBOhO1k83RphwYjHaGczyzkvDt17G1g5JQ=
X-Google-Smtp-Source: ABdhPJzP040JcJS+YZO14o0iocmGTevm0JgnB4trVPFAuwi27YMZu6F8q8Db35Muv/Rh4P4g/bqwHQsHdbUSvHCuM3s=
X-Received: by 2002:a2e:9dc1:: with SMTP id x1mr6251ljj.240.1604540274756; Wed, 04 Nov 2020 17:37:54 -0800 (PST)
MIME-Version: 1.0
References: <CAAZdMafdbwusA3Ks_k=RW9FXCh+OMj90Y_7A7Pj5cBHTXgyQPA@mail.gmail.com> <CALGR9oYHka0qQYkAQAj7omX9koGsgy4VyHt-irBAZC=9ygvZ8A@mail.gmail.com> <CAHVo=ZmV99mg=bb43JrWga19tHKJQF29xCgowQVFBtUvBTDd_A@mail.gmail.com> <3ad5cc09-315b-ec3b-419d-807e5356b8a8@it.aoyama.ac.jp> <CAHVo=ZnBew3O5KPbj-34LcF0E52yTvmrMnSXPrP_txgrB1DnPQ@mail.gmail.com> <8854F1BE-31ED-4C06-9D43-D9EABE686F0B@apple.com> <CABihn6HVXVNeBYg33FqFf6hNJQ4iPt1=tPWt3s_qVF0is0C5Mg@mail.gmail.com>
In-Reply-To: <CABihn6HVXVNeBYg33FqFf6hNJQ4iPt1=tPWt3s_qVF0is0C5Mg@mail.gmail.com>
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Wed, 4 Nov 2020 17:37:44 -0800
Message-ID: <CAOW+2dsjY6=7Ympov7-QUiktPMjAyQ43zW9kjDka=Wsg=gQt6w@mail.gmail.com>
To: Yutaka Hirano <yhirano=40google.com@dmarc.ietf.org>
Cc: Eric Kinnear <ekinnear=40apple.com@dmarc.ietf.org>,  WebTransport <webtransport@ietf.org>, Luke Curley <kixelated@gmail.com>,  Lucas Pardue <lucaspardue.24.7@gmail.com>, =?UTF-8?Q?Martin_J=2E_D=C3=BCrst?= <duerst@it.aoyama.ac.jp>,  Victor Vasiliev <vasilvv=40google.com@dmarc.ietf.org>
Content-Type: multipart/alternative; boundary="0000000000001ad09b05b3522563"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/oV41BmsnBiL70pO0lHouB_e_gM4>
Subject: Re: [Webtransport] Choosing the Transport, pt. 2
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 05 Nov 2020 01:37:59 -0000

--0000000000001ad09b05b3522563
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Yutaka said:

"+1 to Victor. The server implementation cost is convincing to me."

[BA]  I (Chair hat off) agree with what Victor said in the paragraph below,
but perhaps not for the same reasons.

Victor said:

"So I propose that we adapt all of them. As it stands, webtransport-quic is=
 a
simple-to-implement and proven-to-work solution that should not require muc=
h
of working group's time. There are questions regarding whether

webtransport-http is too complex; I believe that we won't know unless
we try, and since there's clearly interest in trying, I believe we
should adopt that draft and actually start working out those complex
details."


[BA] Sometimes it is easier to specify multiple (potentially competing)
protocols rather than spend a lot of resources trying to figure out which
one will eventually succeed. Once the protocols are specified the market
often makes a very clearcut decision. For example, WebSockets over HTTP/2
hasn't gotten much traction.

In this case, one of the transports (QuicTransport) is simple, so it's not
like the WG will spend a lot of time and effort getting it to the point
where implementers can get their hands on it, and decide if it is useful.
It is nearly there now (it would be nice to have more choices for a
QuicTransport server, but aioquic is usable today).  Having QuicTransport
is also convenient for testing the API, as well as gaining experience with
WebTransport deployment in general.  There may be some more work to do on
QuicTransport in order to address some of the deployment problems with
WebSockets (such as in draining and load balancing), but that's probably
not too onerous and might also carry over to other transports.

So the decision is really about going forward with HTTP/2 and HTTP/3. These
will take more time and effort to get right and so there's a higher cost to
working on them. But there still seems to be enough enthusiasm among the
authors and implementers, and there are use cases that these transports
seem uniquely able to address. They also have quite a bit in common.

What use cases will be compelling enough to follow all the way through to
implementation and deployment of the various transports is always a
guessing game.  I wonder whether QuicTransport will overcome the
deficiencies of WebSockets and also whether the complexity of
Http3Transport will eventually lead to simpler solutions being preferred.
But those are engineering challenges that the WG can presumably recognize
and work on solving, assuming we can get started and focus on them.

One particular challenge that I see relates to the mixed HTTP/3 and
WebTransport use cases.  There seems to be quite a bit of enthusiasm about
those, because they enable things that are not possible today while reusing
HTTP infrastructure. But I suspect that most HTTP/3 servers will not be
able to easily support the mixed HTTP/3 and WebTransport over HTTP/3
scenarios, and those that do (e.g. node.js) could take 18+ months at least.
So Http3Transport could be a "late bloomer".


On Thu, Oct 29, 2020 at 4:17 AM Yutaka Hirano <yhirano=3D
40google.com@dmarc.ietf.org> wrote:

> +1 to Victor. The server implementation cost is convincing to me.
>
> On Thu, Oct 29, 2020 at 3:43 AM Eric Kinnear <ekinnear=3D
> 40apple.com@dmarc.ietf.org> wrote:
>
>>
>>
>> On Oct 28, 2020, at 2:03 AM, Luke Curley <kixelated@gmail.com> wrote:
>>
>> Sorry, I was trying to be too terse and should explain.
>>
>> The QuicTransport indication involves an origin and a path using a custo=
m
>> encoding. Like Victor mentioned, these are very similar to existing HTTP
>> headers and could be encoded as such. This would reduce the differences
>> between QuicTransport and Http3Transport.
>>
>> Http3Transport establishes the connection with HTTP headers but then
>> ditches the HTTP semantics. It instead exposes the underlying QUIC
>> connection and offers the same API as QUIC and QuicTransport.
>>
>> I was trying to express that QuicTransport and Http3Transport are
>> converging. You can look at this in one of two ways: Either there's not
>> enough differences to justify two protocols, or there are so few
>> differences that they can share everything but the wire protocol.
>>
>>
>> Just curious: if they share everything but the wire protocol, then are
>> there significant use cases where we=E2=80=99d expect someone to need or=
 only
>> support one wire protocol over another? In other words, if they share
>> everything but a wire protocol, why do we need two wire protocols?
>> (There may be completely sensible reasons for this, just thought I=E2=80=
=99d ask
>> since I thought we=E2=80=99d previously been discussing choosing one or =
the other
>> as a layering decision, rather than maintaining both.)
>>
>> Thanks,
>> Eric
>>
>>
>> On Tue, Oct 27, 2020 at 10:40 PM Martin J. D=C3=BCrst <duerst@it.aoyama.=
ac.jp>
>> wrote:
>>
>>> On 28/10/2020 09:34, Luke Curley wrote:
>>> > Yeah, I definitely agree that there's a grey area between
>>> QuicTransport and
>>> > Http3Transport. The QuicTransport indication is similar to HTTP, whil=
e
>>> > HttpTransport behaves like QUIC.
>>>
>>> I'm confused by the last sentence. Reformatting it, it reads:
>>>
>>> The   QuicTransport indication is similar to HTTP,
>>> while HttpTransport behaves       like       QUIC.
>>>
>>> Is that a typo, or does this crossover naming carry some deep
>>> philosophical meaning that I didn't get?
>>>
>>> Regards,   Martin.
>>>
>>> > But I think the decision to implement multiple protocols needs to be
>>> more
>>> > objective. Every WebTransport variant should add functionality or
>>> provide
>>> > backwards compatibility. Otherwise we'll be defining and implementing
>>> > standards that serve no purpose.
>>>
>>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
>>
>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--0000000000001ad09b05b3522563
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">Yutaka said:=C2=A0<div><=
br></div><div>&quot;+1 to Victor. The server implementation cost is convinc=
ing=C2=A0to me.&quot;=C2=A0</div><div><br></div><div>[BA]=C2=A0 I (Chair ha=
t off) agree with what Victor said in the paragraph below, but perhaps not =
for the same reasons.=C2=A0=C2=A0</div><div><br></div><div><div>Victor said=
:=C2=A0</div><div><br></div><div>&quot;<span style=3D"color:rgb(33,37,41);f=
ont-family:SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;=
,&quot;Courier New&quot;,monospace;font-size:12.25px;white-space:pre-wrap">=
So I propose that we adapt all of them.  As it stands, webtransport-quic is=
 </span><span style=3D"color:rgb(33,37,41);font-family:SFMono-Regular,Menlo=
,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,monosp=
ace;font-size:12.25px;white-space:pre-wrap">a simple-to-implement and prove=
n-to-work solution that should not require </span><span style=3D"color:rgb(=
33,37,41);font-family:SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation=
 Mono&quot;,&quot;Courier New&quot;,monospace;font-size:12.25px;white-space=
:pre-wrap">much </span>of working<span style=3D"color:rgb(33,37,41);font-fa=
mily:SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot=
;Courier New&quot;,monospace;font-size:12.25px;white-space:pre-wrap"> group=
&#39;s time.  There are questions regarding whether</span></div><pre class=
=3D"gmail-wordwrap" style=3D"box-sizing:border-box;font-family:SFMono-Regul=
ar,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&quot=
;,monospace;font-size:12.25px;margin-top:0px;margin-bottom:1rem;overflow:au=
to;color:rgb(33,37,41);white-space:pre-wrap;word-break:normal;padding:0px">=
webtransport-http is too complex; I believe that we won&#39;t know unless w=
e try, and since there&#39;s clearly interest in trying, I believe we shoul=
d adopt that draft and actually start working out those complex details.<sp=
an style=3D"font-family:Arial,Helvetica,sans-serif;font-size:small;color:rg=
b(34,34,34)">&quot;</span></pre></div><div><br></div><div>[BA] Sometimes it=
 is easier to specify multiple (potentially competing) protocols rather tha=
n spend a lot of resources=C2=A0trying to figure out which one will eventua=
lly succeed. Once the protocols are specified the market often makes a very=
 clearcut decision. For example, WebSockets over HTTP/2 hasn&#39;t gotten m=
uch traction.=C2=A0<br></div><div><br></div><div>In this case, one of the t=
ransports (QuicTransport) is simple, so it&#39;s not like the WG will spend=
 a lot of time and effort getting it to the point where implementers can ge=
t their hands on it, and decide if it is useful.=C2=A0 It is nearly there n=
ow (it would be nice to have more choices for a QuicTransport server, but a=
ioquic is usable today).=C2=A0 Having QuicTransport is also convenient for =
testing=C2=A0the API, as well as gaining experience with WebTransport deplo=
yment in general.=C2=A0 There may be some more work to do on QuicTransport =
in order to address some of the deployment problems with WebSockets (such a=
s in draining and load balancing), but that&#39;s probably not too onerous =
and might also carry over to other transports.</div><div><br></div><div>So =
the decision is really about going forward with HTTP/2 and HTTP/3. These wi=
ll take more time and effort to get right and so there&#39;s a higher cost =
to working on them. But there=C2=A0still seems to be enough enthusiasm amon=
g the authors and implementers, and there are use cases that these transpor=
ts seem uniquely able to address. They also have quite a bit in common.=C2=
=A0</div><div><br></div><div>What use cases will be compelling enough to fo=
llow all the way through to implementation and deployment of the various tr=
ansports is always a guessing game.=C2=A0 I wonder whether QuicTransport wi=
ll overcome the deficiencies of WebSockets and also whether the complexity =
of Http3Transport will eventually lead to simpler solutions being preferred=
. But those are engineering challenges that the WG can presumably recognize=
 and work on solving, assuming we can get started and focus on them.=C2=A0<=
/div><div><br></div><div>One particular challenge that I see relates to the=
 mixed HTTP/3 and WebTransport use cases.=C2=A0 There seems to be quite a b=
it of enthusiasm about those, because they enable things that are not possi=
ble today while reusing HTTP infrastructure. But I suspect that most HTTP/3=
 servers will not be able to easily support the mixed HTTP/3 and WebTranspo=
rt over HTTP/3 scenarios, and those that do (e.g. node.js) could take 18+ m=
onths at least. So Http3Transport=C2=A0could be a &quot;late bloomer&quot;.=
=C2=A0</div><div><br></div></div></div></div><br><div class=3D"gmail_quote"=
><div dir=3D"ltr" class=3D"gmail_attr">On Thu, Oct 29, 2020 at 4:17 AM Yuta=
ka Hirano &lt;yhirano=3D<a href=3D"mailto:40google.com@dmarc.ietf.org">40go=
ogle.com@dmarc.ietf.org</a>&gt; wrote:<br></div><blockquote class=3D"gmail_=
quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,=
204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmai=
l_default" style=3D"font-size:small">+1 to Victor. The server implementatio=
n cost is convincing to me.<br></div></div><br><div class=3D"gmail_quote"><=
div dir=3D"ltr" class=3D"gmail_attr">On Thu, Oct 29, 2020 at 3:43 AM Eric K=
innear &lt;ekinnear=3D<a href=3D"mailto:40apple.com@dmarc.ietf.org" target=
=3D"_blank">40apple.com@dmarc.ietf.org</a>&gt; wrote:<br></div><blockquote =
class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px sol=
id rgb(204,204,204);padding-left:1ex"><div><br><div><br><blockquote type=3D=
"cite"><div>On Oct 28, 2020, at 2:03 AM, Luke Curley &lt;<a href=3D"mailto:=
kixelated@gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:</=
div><br><div><div dir=3D"ltr"><div>Sorry, I was trying to be too terse and =
should explain.</div><div><br></div><div>The QuicTransport indication invol=
ves an origin and a path using a custom encoding. Like Victor mentioned, th=
ese are very similar to existing HTTP headers and could be encoded as such.=
 This would reduce the differences between QuicTransport and Http3Transport=
.</div><div><br></div><div>Http3Transport establishes the connection with=
=C2=A0HTTP headers but then ditches the HTTP semantics. It instead exposes =
the underlying QUIC connection and offers the same API as QUIC and QuicTran=
sport.</div><div><br></div><div>I was=C2=A0trying to express that QuicTrans=
port and Http3Transport are converging. You can look at this in one of two =
ways: Either there&#39;s not enough differences to justify two protocols, o=
r there are so few differences that they can share everything but the wire =
protocol.</div></div></div></blockquote><div><br></div>Just curious: if the=
y share everything but the wire protocol, then are there significant use ca=
ses where we=E2=80=99d expect someone to need or only support one wire prot=
ocol over another? In other words, if they share everything but a wire prot=
ocol, why do we need two wire protocols?=C2=A0</div><div>(There may be comp=
letely sensible reasons for this, just thought I=E2=80=99d ask since I thou=
ght we=E2=80=99d previously been discussing choosing one or the other as a =
layering decision, rather than maintaining both.)</div><div><br></div><div>=
Thanks,</div><div>Eric</div><div><br><blockquote type=3D"cite"><div><br><di=
v class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, Oct 2=
7, 2020 at 10:40 PM Martin J. D=C3=BCrst &lt;<a href=3D"mailto:duerst@it.ao=
yama.ac.jp" target=3D"_blank">duerst@it.aoyama.ac.jp</a>&gt; wrote:<br></di=
v><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;borde=
r-left:1px solid rgb(204,204,204);padding-left:1ex">On 28/10/2020 09:34, Lu=
ke Curley wrote:<br>
&gt; Yeah, I definitely agree that there&#39;s a grey area between QuicTran=
sport and<br>
&gt; Http3Transport. The QuicTransport indication is similar to HTTP, while=
<br>
&gt; HttpTransport behaves like QUIC.<br>
<br>
I&#39;m confused by the last sentence. Reformatting it, it reads:<br>
<br>
The=C2=A0 =C2=A0QuicTransport indication is similar to HTTP,<br>
while HttpTransport behaves=C2=A0 =C2=A0 =C2=A0 =C2=A0like=C2=A0 =C2=A0 =C2=
=A0 =C2=A0QUIC.<br>
<br>
Is that a typo, or does this crossover naming carry some deep <br>
philosophical meaning that I didn&#39;t get?<br>
<br>
Regards,=C2=A0 =C2=A0Martin.<br>
<br>
&gt; But I think the decision to implement multiple protocols needs to be m=
ore<br>
&gt; objective. Every WebTransport variant should add functionality or prov=
ide<br>
&gt; backwards compatibility. Otherwise we&#39;ll be defining and implement=
ing<br>
&gt; standards that serve no purpose.<br>
<br>
</blockquote></div>
-- <br>Webtransport mailing list<br><a href=3D"mailto:Webtransport@ietf.org=
" target=3D"_blank">Webtransport@ietf.org</a><br><a href=3D"https://www.iet=
f.org/mailman/listinfo/webtransport" target=3D"_blank">https://www.ietf.org=
/mailman/listinfo/webtransport</a><br></div></blockquote></div><br></div>--=
 <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>

--0000000000001ad09b05b3522563--


From nobody Mon Nov  9 10:32:54 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BCF1E3A12B9 for <webtransport@ietfa.amsl.com>; Mon,  9 Nov 2020 10:32:52 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 vHvOnsY-XP1m for <webtransport@ietfa.amsl.com>; Mon,  9 Nov 2020 10:32:51 -0800 (PST)
Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com [IPv6:2a00:1450:4864:20::12c]) (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 50FB03A12B8 for <webtransport@ietf.org>; Mon,  9 Nov 2020 10:32:51 -0800 (PST)
Received: by mail-lf1-x12c.google.com with SMTP id j205so6470449lfj.6 for <webtransport@ietf.org>; Mon, 09 Nov 2020 10:32:51 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=90vq9jeEaso4rA/kh9k9WxJrynU8ccY0wxZv4ci++hk=; b=IlPBDufF+5DygJpUW1e2DWyPqNHVjEDzdXl10f26Gu3mU2wLajWYtus7LfUEp89QEV CtfWDgo2r9XJSt5MLLDypPca+rjp77JQrJ8NzVOuUbKTf0kWAAF/cE3IhuxBBKeEueMB HXUaIpj3Uc7RlJbGmiys0oeoXQOAGi0QcoNGZtxIoqry2FShAmoAGWLHfonvl3kS9xSv z4K3pAHNWck40vkx31peLQMvxiAjwYN2uTepjETyfHvoOE2UZTASYWQdaQXSEI0zJ9Iv NW+WYps2IWNgCmuxJkbIpkmM0Y6/tDbsOojtletc74GMvNRZrCdTW7iHi0hV4NVMiBBU OviA==
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; bh=90vq9jeEaso4rA/kh9k9WxJrynU8ccY0wxZv4ci++hk=; b=ekoovcD2fM+5P9vUQNmxo9ecKJVL/3ofRzLn3t6zkXMMgRG+7ykYlCxjokt8CXeRIF qvImV7j1y8QCbnyWGmX6hynfiPyJarAQUEp19keLulINdSILAMobzbz/ZIqTNBVNrgjc MyYNvhE/vMy4ivVa5tnx+93mzkp1X3b84FztFlfySCMc8Ivkg1CQlTfOIwR/J9MKBREu gp9VTdcmDhkN7h+8fqvFSklHpw//VBoXbDx9AuUEQprreOSGsy7O+ihKsjl+SxVvPZ8o 7pLXEdz+1DsvwOEHCIyd/Tla3GGku7c+iPW0kEvtDRYXY0cHoRZalOVd8Pd7auXi5fmi bU0g==
X-Gm-Message-State: AOAM533AhmSBJpGgUHonsPhBAlPk+2bN96huhhaX10jl+dGtGIWm95aV OPvUl0ZUD28od+rDJ3PQKeRuIcnjnLJxu3Q9BQJvcI/v+tOThQ==
X-Google-Smtp-Source: ABdhPJzx8t300apWTpJ14Ycng+2+H4PxfYg9/9EojRZcuDFmnup7xU/TwX2gfmaHJnMEVebMA8Zr5/fctGo/OEEiBaw=
X-Received: by 2002:ac2:53ad:: with SMTP id j13mr3762577lfh.177.1604946769178;  Mon, 09 Nov 2020 10:32:49 -0800 (PST)
MIME-Version: 1.0
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Mon, 9 Nov 2020 10:32:38 -0800
Message-ID: <CAOW+2duHJTByX_E2jrQMuapKm=cxVwiZKUYWtpz-K-nw9SWQiw@mail.gmail.com>
To: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000000f793e05b3b0caf1"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/wT-LsZUci-KU_QNTU90oYqllj0I>
Subject: [Webtransport] Http3Transport pooling/sharing
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Nov 2020 18:32:53 -0000

--0000000000000f793e05b3b0caf1
Content-Type: text/plain; charset="UTF-8"

One of the use cases that has been described in the recent W3C WebTransport
WG meeting was sharing of an HTTP/3 QUIC connection between HTTP/3
Request/Response and WebTransport.

In looking into how this would work in practice, it appears that there are
some complications.

Http3Transport requires support for HTTP/3 Datagrams.
draft-vvv-webtransport-http3
Section 4.1 says:

"If "http3_transport_support" is negotiated, support for the QUIC DATAGRAM
extension MUST be negotiated."
What happens if there is an existing HTTP/3 connection to the same Origin
but that connection did not negotiate support for QUIC DATAGRAMS?

--0000000000000f793e05b3b0caf1
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">One of the use cases tha=
t has been described in the recent W3C WebTransport WG meeting was sharing =
of an HTTP/3 QUIC connection between HTTP/3 Request/Response and WebTranspo=
rt.=C2=A0<div><br></div><div>In looking into how this would work in practic=
e, it appears that there are some complications.=C2=A0</div><div><br></div>=
<div><span style=3D"color:rgb(36,41,46);font-family:-apple-system,BlinkMacS=
ystemFont,&quot;Segoe UI&quot;,Helvetica,Arial,sans-serif,&quot;Apple Color=
 Emoji&quot;,&quot;Segoe UI Emoji&quot;;font-size:14px">Http3Transport requ=
ires support for HTTP/3 Datagrams.=C2=A0</span><span style=3D"color:rgb(36,=
41,46);font-family:-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,He=
lvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji=
&quot;;font-size:14px">draft-vvv-webtransport-http3 Section 4.1 says:</span=
></div><p style=3D"box-sizing:border-box;margin-top:0px;margin-bottom:16px;=
color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,&quot;Sego=
e UI&quot;,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;S=
egoe UI Emoji&quot;;font-size:14px">&quot;If &quot;http3_transport_support&=
quot; is negotiated, support for the QUIC DATAGRAM extension MUST be negoti=
ated.&quot;</p><div><span style=3D"color:rgb(36,41,46);font-family:-apple-s=
ystem,BlinkMacSystemFont,&quot;Segoe UI&quot;,Helvetica,Arial,sans-serif,&q=
uot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;font-size:14px">What=
 happens if there is an existing HTTP/3 connection</span><span style=3D"col=
or:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,&quot;Segoe U=
I&quot;,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Sego=
e UI Emoji&quot;;font-size:14px">=C2=A0to the same Origin but that connecti=
on did not negotiate support for QUIC DATAGRAMS?</span></div></div></div></=
div>

--0000000000000f793e05b3b0caf1--


From nobody Mon Nov  9 19:18:55 2020
Return-Path: <mt@lowentropy.net>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A6BA03A10E8 for <webtransport@ietfa.amsl.com>; Mon,  9 Nov 2020 19:18:53 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=lowentropy.net header.b=HMAhCiOV; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=OoiJjpLT
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 Ghx2jIPhLr67 for <webtransport@ietfa.amsl.com>; Mon,  9 Nov 2020 19:18:52 -0800 (PST)
Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com [66.111.4.26]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5E2AA3A108A for <webtransport@ietf.org>; Mon,  9 Nov 2020 19:18:52 -0800 (PST)
Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 8E5055C015E for <webtransport@ietf.org>; Mon,  9 Nov 2020 22:18:51 -0500 (EST)
Received: from imap10 ([10.202.2.60]) by compute1.internal (MEProxy); Mon, 09 Nov 2020 22:18:51 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lowentropy.net; h=mime-version:message-id:in-reply-to:references:date:from:to :subject:content-type; s=fm3; bh=KKJPR7KoXZqBoV6kNESLqaXKY6x+dWQ Ae/ykVfEOIEQ=; b=HMAhCiOVArJt2HGFYJXaKWqT8oFIkr/GBlVM4/lBUXVmrbN Q051P8Q/0AfL32y2/vBfyQ3gbz1fuU/8p2BWB2T+pUkEfJ+WA3/8oErfurKEQGlT t0SidyUitIqrSgOAHFg2sIAR4+vVr8cQCNVx7v0ReQkmbmkWTmZlwekVeM4NZkC/ GGIvmiYAGRGDBFRD+tYDLLIJYFs07T2saE5Wgpltt9+Ujq92O7eRNuHXIeq6XK91 aSUbaGCRo/ZHXUL0Q6acZyJmqJcCYFLonMZkmkvAeNFqW9fifoYOei6u/y6JE0Mb COKTS/AgzZahf5seAjGhDKR9qKiVVp/Zif4NFHQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=KKJPR7 KoXZqBoV6kNESLqaXKY6x+dWQAe/ykVfEOIEQ=; b=OoiJjpLTMHvO0MuvpBDfgV BP6mMcRe0kAqmVwQu01/KEVgtgGJVBKqWImfQyyOTsYMFi9GDj1Zo/m4WA8bpn4b wUnmBewxG1EdLbCd4Xw8uZLvXXzXMz6AWX/pqzThwylAZMbxnxvivILrM+Wj+5QC mPz1LguODQ57+CYMojPA+parmv+U9Dgb4Jd3ntCnrKJJoidv9bHmmufDoWxBTmDz 4CMBFvE3RROaxghqSATaETnKSryLYinAGPPFzSEuGFeW4Mj5QD5y2U/NgWG+9+ew CJk9k0eZPytbF0bdJKgBOsQxHmWOUl0aT5qDZd9v8bcVYPsjLDngnrfvYDfOOFag ==
X-ME-Sender: <xms:mwaqX0f-Lk331HPZXEGkFVOFyEylyreYQqJeY6-KFHUziGEM2qEusA> <xme:mwaqX2Mq4FhJSzn1OJCCKuGOhR0lXgfRjeeVu24aX7WLTVGXs4z2qW2x1skRpOp7g brp7sZQJDondBWCbmU>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrudduiedgheelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefofgggkfgjfhffhffvufgtsehttd ertderredtnecuhfhrohhmpedfofgrrhhtihhnucfvhhhomhhsohhnfdcuoehmtheslhho figvnhhtrhhophihrdhnvghtqeenucggtffrrghtthgvrhhnpeekjeevvedvvdehveeije egffehheetgfetvedtgfeljeegkedutdehudetueeigfenucffohhmrghinhephhhtthhp fehrvghquhgvshhtrhgvshhpohhnshgvrghnugifvggsthhrrghnshhpohhrthdrihhnpd hivghtfhdrohhrghenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhl fhhrohhmpehmtheslhhofigvnhhtrhhophihrdhnvght
X-ME-Proxy: <xmx:mwaqX1hWKyKaTmc3xChKVM5k7HjVDn98mmssQHssYJuVfYrrPli8cQ> <xmx:mwaqX58_CqooE2itz2OwRfleRr4Y_2U23E0Iz5RAG7AfQTVIhmlTzg> <xmx:mwaqXwu1XWBiPvwTRR6311yef2wMaoOWZTK2iO9GObFNFD35v_3R3w> <xmx:mwaqX-5KkIgjXJ7XG7hN6K3vjOwFOxZu0Yf3ygUueB2WoPIiEGH9AQ>
Received: by mailuser.nyi.internal (Postfix, from userid 501) id EE8632038B; Mon,  9 Nov 2020 22:18:50 -0500 (EST)
X-Mailer: MessagingEngine.com Webmail Interface
User-Agent: Cyrus-JMAP/3.3.0-570-gba0a262-fm-20201106.001-gba0a2623
Mime-Version: 1.0
Message-Id: <2759a04d-949e-45ed-86db-bd499b7cff19@www.fastmail.com>
In-Reply-To: <CAOW+2duHJTByX_E2jrQMuapKm=cxVwiZKUYWtpz-K-nw9SWQiw@mail.gmail.com>
References: <CAOW+2duHJTByX_E2jrQMuapKm=cxVwiZKUYWtpz-K-nw9SWQiw@mail.gmail.com>
Date: Tue, 10 Nov 2020 14:18:29 +1100
From: "Martin Thomson" <mt@lowentropy.net>
To: webtransport@ietf.org
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/yER101CInK4z0RDp1z2DM61xc6U>
Subject: Re: [Webtransport] Http3Transport pooling/sharing
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2020 03:18:54 -0000

There is a common problem with piecemeal negotiation.  I can imagine several responses to the case where you have an existing connection that doesn't support the features you want.

1. Fail.
2. Make a new connection.
3. Synthesize datagram support (probably not worth it).

Failing isn't completely unreasonable.  If the connection doesn't have the features you need, and you have no reason to believe that the negotiation would be different next time, then this is a good reaction.  Of course, you need to be offering datagram support when you make the original connection, even if you are not currently aware of the need for the feature.

The quote you provide indicates doesn't seem at all problematic: both features are negotiated at the same time, and one requires the other.  This is not particularly difficult to arrange.

There is a more difficult problem to address: what if you have a connection to a server that supports h2 and webtransport, but you get Alt-Svc indicating support for h3.  Do you upgrade?  What if the upgraded service doesn't support webtransport?  If, at the time you upgrade, you don't know, it seems reasonable to upgrade.  But then if you later learn that you need webtransport, what then?

On Tue, Nov 10, 2020, at 05:32, Bernard Aboba wrote:
> One of the use cases that has been described in the recent W3C 
> WebTransport WG meeting was sharing of an HTTP/3 QUIC connection 
> between HTTP/3 Request/Response and WebTransport. 
> 
> In looking into how this would work in practice, it appears that there 
> are some complications. 
> 
> Http3Transport requires support for HTTP/3 Datagrams. 
> draft-vvv-webtransport-http3 Section 4.1 says:
> "If "http3_transport_support" is negotiated, support for the QUIC 
> DATAGRAM extension MUST be negotiated."
> 
> What happens if there is an existing HTTP/3 connection to the same 
> Origin but that connection did not negotiate support for QUIC DATAGRAMS?
> -- 
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>


From nobody Mon Nov  9 19:44:31 2020
Return-Path: <lucaspardue.24.7@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EA1623A0603 for <webtransport@ietfa.amsl.com>; Mon,  9 Nov 2020 19:44:29 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.847
X-Spam-Level: 
X-Spam-Status: No, score=-1.847 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 acDQDn5bR6NB for <webtransport@ietfa.amsl.com>; Mon,  9 Nov 2020 19:44:28 -0800 (PST)
Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) (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 2910E3A05D0 for <webtransport@ietf.org>; Mon,  9 Nov 2020 19:44:28 -0800 (PST)
Received: by mail-ej1-x62f.google.com with SMTP id me8so5990587ejb.10 for <webtransport@ietf.org>; Mon, 09 Nov 2020 19:44:27 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=K1V2LsYDz2VwceMuLmSqrWd8pmwy7o0oIzgAjnBQtBE=; b=pzrTaIuFWrcOUVJi2Nn5sHo1QzYH61reAQlTMt8hvwGdwyqgJ7I7HDZkeh7TjuwIMr tEMpjCd9lWVVKNM6V38tmTageDg72K3aWd5bf+hSlZ8u+owX6E8+qKJDZJ+OeEzsmERh pgXp2/nzbpvNVk3u0cUOBkaKHfxtHI874zvbiKM3cUCREUxW+dsrMcEH8fde/2lzmDz6 VMeKyZiuyPDAbZq58lccUhcIRrSPI5WKXTofmHNs7jRxSzz55f/DMkGCF7ZXZsxxrHy+ cCwTif6P2HAUbGrpmGzNCLsyTLlukfFPVQqn64e6zaRiWtQYPkrcqAwIS5IcW+AcLvGn DwkQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=K1V2LsYDz2VwceMuLmSqrWd8pmwy7o0oIzgAjnBQtBE=; b=WU9bQT0xI/J00IlW6N0uyc084L9ZwNwdpz5K2pgS11Ajukxq/x411PT9OKHd45Na0f sgBHsQ4aZzFfH8tEfcIGLa7XP+wwysGP7PMhd27TXEq+6Qxgq6AAAWdhY4kXdUTfbYf7 yLJoDloO80MnDx7dXYbxqTTMQrsIw/yiwpwK2418qXfspDbrJQlfe2hdpaBrYU5Rjo3x aUKKSRIQ3b5hqWAKyq+LZ8p8uPiX5XeZ+cTFxNkC93DmPymUOs5AVA7261ZPvYveKBpR kakBkJsB5TAX04KInfPqRDuqgtn9vUbHVL4Ev5fASqe53xTvTWbM6TFrPIBLl5TEMDRV YdJg==
X-Gm-Message-State: AOAM533fDS0XK+PAzD4h5qfPNOWOh31ygTHhCICL0xqdamGp+jE/m8Vc Fm6OFdT0PAKk+/hEzHKvuLmBwym4dBSICiFpdxrvHUk1
X-Google-Smtp-Source: ABdhPJwcT4oaPzNJkSvp6Kj3iWQvukYj8b+L/hh1mbw17gf0JxEtltH24QwNtOU7EIrNQ2B5TOQcaNKKn3QZ2rKRP6A=
X-Received: by 2002:a17:906:3b81:: with SMTP id u1mr17908931ejf.542.1604979866563;  Mon, 09 Nov 2020 19:44:26 -0800 (PST)
MIME-Version: 1.0
References: <CAOW+2duHJTByX_E2jrQMuapKm=cxVwiZKUYWtpz-K-nw9SWQiw@mail.gmail.com> <2759a04d-949e-45ed-86db-bd499b7cff19@www.fastmail.com>
In-Reply-To: <2759a04d-949e-45ed-86db-bd499b7cff19@www.fastmail.com>
From: Lucas Pardue <lucaspardue.24.7@gmail.com>
Date: Tue, 10 Nov 2020 03:44:19 +0000
Message-ID: <CALGR9oYj+EUT-ryVcwfP7zWra5K0hXkc+R86GWPOWn7vtqveTQ@mail.gmail.com>
To: Martin Thomson <mt@lowentropy.net>
Cc: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000d1772305b3b87e8b"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/AA3rz03pTTfwnXRFHkmnei4Rv2Y>
Subject: Re: [Webtransport] Http3Transport pooling/sharing
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2020 03:44:30 -0000

--000000000000d1772305b3b87e8b
Content-Type: text/plain; charset="UTF-8"

On Tue, 10 Nov 2020, 03:18 Martin Thomson, <mt@lowentropy.net> wrote:

> There is a common problem with piecemeal negotiation.  I can imagine
> several responses to the case where you have an existing connection that
> doesn't support the features you want.
>
> 1. Fail.
> 2. Make a new connection.
> 3. Synthesize datagram support (probably not worth it).
>
> Failing isn't completely unreasonable.  If the connection doesn't have the
> features you need, and you have no reason to believe that the negotiation
> would be different next time, then this is a good reaction.  Of course, you
> need to be offering datagram support when you make the original connection,
> even if you are not currently aware of the need for the feature.
>
> The quote you provide indicates doesn't seem at all problematic: both
> features are negotiated at the same time, and one requires the other.  This
> is not particularly difficult to arrange.
>
> There is a more difficult problem to address: what if you have a
> connection to a server that supports h2 and webtransport, but you get
> Alt-Svc indicating support for h3.  Do you upgrade?  What if the upgraded
> service doesn't support webtransport?  If, at the time you upgrade, you
> don't know, it seems reasonable to upgrade.  But then if you later learn
> that you need webtransport, what then?
>

+1, especially that last part.

Things gets thorny with support of extensions across HTTP versions. I
started on draft-pardue-alt-svc-ext-unsupported [1] to explain some of
this, with the mere solution of coining an error code. I didn't have a
strong problem case for it to apply to yet so it's been sat idle...

Cheers,
Lucas

https://datatracker.ietf.org/doc/draft-pardue-alt-svc-ext-unsupported/

>

--000000000000d1772305b3b87e8b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto"><div><br><br><div class=3D"gmail_quote"><div dir=3D"ltr" =
class=3D"gmail_attr">On Tue, 10 Nov 2020, 03:18 Martin Thomson, &lt;<a href=
=3D"mailto:mt@lowentropy.net">mt@lowentropy.net</a>&gt; wrote:<br></div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #=
ccc solid;padding-left:1ex">There is a common problem with piecemeal negoti=
ation.=C2=A0 I can imagine several responses to the case where you have an =
existing connection that doesn&#39;t support the features you want.<br>
<br>
1. Fail.<br>
2. Make a new connection.<br>
3. Synthesize datagram support (probably not worth it).<br>
<br>
Failing isn&#39;t completely unreasonable.=C2=A0 If the connection doesn&#3=
9;t have the features you need, and you have no reason to believe that the =
negotiation would be different next time, then this is a good reaction.=C2=
=A0 Of course, you need to be offering datagram support when you make the o=
riginal connection, even if you are not currently aware of the need for the=
 feature.<br>
<br>
The quote you provide indicates doesn&#39;t seem at all problematic: both f=
eatures are negotiated at the same time, and one requires the other.=C2=A0 =
This is not particularly difficult to arrange.<br>
<br>
There is a more difficult problem to address: what if you have a connection=
 to a server that supports h2 and webtransport, but you get Alt-Svc indicat=
ing support for h3.=C2=A0 Do you upgrade?=C2=A0 What if the upgraded servic=
e doesn&#39;t support webtransport?=C2=A0 If, at the time you upgrade, you =
don&#39;t know, it seems reasonable to upgrade.=C2=A0 But then if you later=
 learn that you need webtransport, what then?<br></blockquote></div></div><=
div dir=3D"auto"><br></div><div dir=3D"auto">+1, especially that last part.=
</div><div dir=3D"auto"><br></div><div dir=3D"auto">Things gets thorny with=
 support of extensions across HTTP versions. I started on=C2=A0<span style=
=3D"font-family:sans-serif">draft-pardue-alt-svc-ext-unsupported</span>=C2=
=A0[1] to explain some of this, with the mere solution of coining an error =
code. I didn&#39;t have a strong problem case for it to apply to yet so it&=
#39;s been sat idle...</div><div dir=3D"auto"><br></div><div dir=3D"auto">C=
heers,=C2=A0</div><div dir=3D"auto">Lucas=C2=A0</div><div dir=3D"auto"><br>=
</div><div dir=3D"auto"><a href=3D"https://datatracker.ietf.org/doc/draft-p=
ardue-alt-svc-ext-unsupported/">https://datatracker.ietf.org/doc/draft-pard=
ue-alt-svc-ext-unsupported/</a><br></div><div dir=3D"auto"><div class=3D"gm=
ail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bor=
der-left:1px #ccc solid;padding-left:1ex"></blockquote></div></div></div>

--000000000000d1772305b3b87e8b--


From nobody Mon Nov  9 21:05:16 2020
Return-Path: <mt@lowentropy.net>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 13C5A3A0CF4 for <webtransport@ietfa.amsl.com>; Mon,  9 Nov 2020 21:05:16 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.598
X-Spam-Level: 
X-Spam-Status: No, score=-1.598 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, GB_ABOUTYOU=0.5, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=lowentropy.net header.b=UVpl08T0; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=bfUkqu/H
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 Aqezlxz7jK8A for <webtransport@ietfa.amsl.com>; Mon,  9 Nov 2020 21:05:14 -0800 (PST)
Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 791E03A0CFE for <webtransport@ietf.org>; Mon,  9 Nov 2020 21:05:14 -0800 (PST)
Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 9D6C55C01D2 for <webtransport@ietf.org>; Tue, 10 Nov 2020 00:05:13 -0500 (EST)
Received: from imap10 ([10.202.2.60]) by compute1.internal (MEProxy); Tue, 10 Nov 2020 00:05:13 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lowentropy.net; h=mime-version:message-id:in-reply-to:references:date:from:to :subject:content-type:content-transfer-encoding; s=fm3; bh=7l8VF VYUaNn75za+Abp3z7AxmarOSc5bXm0vlcZKz+c=; b=UVpl08T0Buyi8gH+DsPhD sXIbIwzQXnLKkirbkBKzpvCOGPQG5z1OmEqEgbSpx8TA6bw51Cj/mHvPwLmps4hi 7Z1s011pLP/8CRkeO3w+7rbbJuye7xKAVJEaXcqsXiUqeC9hktqIcxsWHK82Bjbf BkK535iqLYewsKbuQKhGlEPxRyqCiCi4rKHfK6ZWiRHdTZiOCmaGiJJVnYq3qky5 l0TKBDD7i3XAKWXseLqy+LL+josK/ZF8bqCQXh4lKGlfkNL2N/PLAKcAoQHC5wOh FdOajHV9KFVcMaJWVf/0RV/VNl6KnbhpsIygnHfZnQxCPlCwHO0k5Pyv6YCsQvAx g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; bh=7l8VFVYUaNn75za+Abp3z7AxmarOSc5bXm0vlcZKz +c=; b=bfUkqu/H84fFqCubxGL4e1sEpCl092SIQz0bSNr0/5xM3Yq1TI5c5chPh /HY9chW6AqSTcuTxpwuoGpSlZ8GsNOJCBS+PUJvOmjblHIgK0d0xS7ZH+L2EBJYm DGANqbbi1xsxrV53dRMp+L6VBIrFX/hqhX0t63vlid7tcVkcfm1epBgp5wKx4iGz MBocLQkURdChisNO+cNQzKscZjJENwJTGz4p9d5qeBLKgoGDAGIoTEf/8B/yGV89 crGXEtI272pozGQCrN/8afQ6M5JUNvombPcwaPgFsFpjDVtxe47Rstqa065tiTnz jzgUxJGVosjNZt7EOtIOlMzuJ83+A==
X-ME-Sender: <xms:iR-qX7ho2_lsUdioIOy5v8xYzxj3yQ7_ag9_L8RP5JYxDUCFW-oLUw> <xme:iR-qX4ACF-THXpupT10J9spD5MZgYYDWxTiDzauIQGPxrhbcZTBPU0g1sNwvPaqTP CUeMJCwTMAph0ZLKFw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrudduiedgkedtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefofgggkfgjfhffhffvufgtgfesth hqredtreerjeenucfhrhhomhepfdforghrthhinhcuvfhhohhmshhonhdfuceomhhtsehl ohifvghnthhrohhphidrnhgvtheqnecuggftrfgrthhtvghrnhepieehgffgvddtkeduie eufedtteetueehkeeihedtgfffudeggeeiuddtudfguedtnecuffhomhgrihhnpehivght fhdrohhrghdpghhithhhuhgsrdgtohhmnecuvehluhhsthgvrhfuihiivgeptdenucfrrg hrrghmpehmrghilhhfrhhomhepmhhtsehlohifvghnthhrohhphidrnhgvth
X-ME-Proxy: <xmx:iR-qX7Foaw8agb-GCMocMK8WZjatq7khT88SV9YxmJGGemfPC2FQKA> <xmx:iR-qX4QF2lZG74SOda3UtC8ies0Pxfy-j2tK3q9iM1AScniel0hhkw> <xmx:iR-qX4y1vKWbKqTr46Lj7i9MyGp-RoQTtSAQuQBeRddXamVxZ2N0fQ> <xmx:iR-qX38yO3IcvMXPQulkDAFvZIxifw0H4HoORtCajkOtHltianzdLA>
Received: by mailuser.nyi.internal (Postfix, from userid 501) id 33D8320373; Tue, 10 Nov 2020 00:05:13 -0500 (EST)
X-Mailer: MessagingEngine.com Webmail Interface
User-Agent: Cyrus-JMAP/3.3.0-570-gba0a262-fm-20201106.001-gba0a2623
Mime-Version: 1.0
Message-Id: <98dfa9e0-6a37-4b79-9eb5-b4bbf8b6850d@www.fastmail.com>
In-Reply-To: <CAAZdMafdbwusA3Ks_k=RW9FXCh+OMj90Y_7A7Pj5cBHTXgyQPA@mail.gmail.com>
References: <CAAZdMafdbwusA3Ks_k=RW9FXCh+OMj90Y_7A7Pj5cBHTXgyQPA@mail.gmail.com>
Date: Tue, 10 Nov 2020 16:04:52 +1100
From: "Martin Thomson" <mt@lowentropy.net>
To: webtransport@ietf.org
Content-Type: text/plain;charset=utf-8
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/Vkizx496DzlhYujr6kdrmfdvnZM>
Subject: Re: [Webtransport] Choosing the Transport, pt. 2
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2020 05:05:16 -0000

Hey Victor,

I have a hard time understanding this.

If I recall correctly, your original proposal involved multiple protocol=
s.  So this sounds like you have discovered something that supports that=
 view, or at least has consolidated your own opinion.  But I don't see a=
ny actual evidence here to support building multiple protocols.

Building one protocol is hard enough.  It seems like we signed on to do =
two here, on the basis that we need a fallback.  But I don't see how tha=
t naturally extends to three.  On the contrary, just one protocol is pre=
tty tempting at this point.  TCP fallback could be handled by a websocke=
ts polyfill outside of the browser (or a WebRTC polyfill for those who a=
re less complexity-averse).

It seems your arguments are based on it being possible to hide a bunch o=
f this complexity under a unified API.  That's great, but it doesn't mea=
n that the abstraction won't leak.  I'm sure that running over h2 will l=
ook very different to running on bare QUIC.

That doesn't meant that I'm not curious about your semantic unification =
idea.  I don't understand that either, but it's an abstract notion with =
some appeal to me.

Cheers,
Martin

On Wed, Oct 28, 2020, at 03:22, Victor Vasiliev wrote:
> (previous iteration of this thread here=20
> <https://mailarchive.ietf.org/arch/msg/webtransport/CEGNLkMqrvug3uPyPm=
QIXnWVIAY/>)
>=20
> Hello everyone,
>=20
> As you might remember, we've still not decided which of QuicTransport,=
=20
> Http2Transport and Http3Transport we should adapt:
>  1. There has been a strong interest in running WebTransport over HTTP=
.=20
> HTTP allows us to do connection pooling, a well-understood mechanism o=
f=20
> falling back to TCP and better integration with existing load balancer=
s.
>  2. There has also been interest in running WebTransport over QUIC=20
> itself, due to the complexity of WebTransport over HTTP, both in terms=
=20
> of design and in terms of writing servers for it (nice discussion here=
=20
> <https://mailarchive.ietf.org/arch/msg/webtransport/O8P5nmmw0ywra1VWtJ=
mS4lBglhI/>).
>  3. There has been a desire to pick only one of those.
> I've been reworking <https://github.com/vasilvv/webtransport/pull/18>=20=

> the QuicTransport draft based on what we've found while implementing i=
t=20
> in Chrome.  Doing that, and observing how it becomes more and more lik=
e=20
> HTTP with every revision, has convinced me more than ever that all of=20=

> the transports above should be the same thing conceptually, differing=20=

> only in wire protocol.  That observation was very helpful, since it=20=

> allowed us to replace <https://github.com/w3c/webtransport/issues/129>=
=20
> all of the different API entry points with just one, already=20
> dramatically simplifying the situation.  Same observation also can=20
> potentially help us make some progress here.  We can unify all of the=20=

> proposals semantically (make them share a URL scheme and the headers=20=

> format), and then the variants just become different encodings.
>=20
> If we compare the WebTransport proposals to the HTTP ecosystem, beside=
s=20
> the obvious equivalences (webtransport-http2 =E2=89=85 HTTP/2,=20
> webtransport-http3 =E2=89=85 HTTP/3), it becomes apparent that=20
> webtransport-quic =E2=89=85 HTTP/1.1.  This gives us a hint of why we =
might=20
> want all three of those.  This is also really nice, since we know how=20=

> to switch between all of those protocols, and we have a lot of=20
> experience with an ecosystem shaped like that: webtransport-quic and=20=

> webtransport-http3 can be switched via ALPN, webtransport-http2 can be=
=20
> raced in parallel with the former.
>=20
> So I propose that we adapt all of them.  As it stands,=20
> webtransport-quic is a simple-to-implement and proven-to-work solution=
=20
> that should not require much of working group's time.  There are=20
> questions regarding whether webtransport-http is too complex; I believ=
e=20
> that we won't know unless we try, and since there's clearly interest i=
n=20
> trying, I believe we should adopt that draft and actually start workin=
g=20
> out those complex details.
>=20
> What does everyone think?
>=20
> Cheers,
>   Victor.
> --=20
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>


From nobody Tue Nov 10 08:38:09 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 21CD13A0A34 for <webtransport@ietfa.amsl.com>; Tue, 10 Nov 2020 08:38:08 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.597
X-Spam-Level: 
X-Spam-Status: No, score=-1.597 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, GB_ABOUTYOU=0.5, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 qSWvanMCa2dy for <webtransport@ietfa.amsl.com>; Tue, 10 Nov 2020 08:38:06 -0800 (PST)
Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [IPv6:2a00:1450:4864:20::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 E731D3A0C8E for <webtransport@ietf.org>; Tue, 10 Nov 2020 08:37:25 -0800 (PST)
Received: by mail-lj1-x22c.google.com with SMTP id 11so15446394ljf.2 for <webtransport@ietf.org>; Tue, 10 Nov 2020 08:37:25 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=WMRkrX8Wkftl6FKqm/bBYQyC4BBm/Y1K3HSxcHM/XWE=; b=bQcac/z4zUlXD5vw/wbMQz+793SbQICT6T1WFtdCbMP0bWfmldShCeP12n2rz7McuW Xfm53zD6LsqzCSO0tFdXsyvzltN2M7p6CyZfWGlAQX0jsBJQDvGxfBXeLQeKtQ1FVPis QSpAoAhT8gBrkucmbCbJQYOsZVU/DHDl58Vs9301COIbeifJH2v5SbT2dBRPkzUSdkob jL+MdLWr8oCJqrvdG9GIv8i6LgYOIZyq77UYqv5rf4YaizSApUM8zBa95NUDyCDsLCbq Cu0vLfcQZIS0dXhrAnGuwGgPSdsEGjDqB09eAB7yF3bkSoXeT8/ODPzgwW7g4rBIoM1Z gqsA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=WMRkrX8Wkftl6FKqm/bBYQyC4BBm/Y1K3HSxcHM/XWE=; b=ARMNAulWoWgEO4JoiehYgDCaMmx80Yuyj+nqZkTguAm2ft6EvLEu+EXwQLeFcSZRyI UecHXeauBhBlSx2xua5IW7iK3zeVipiQcfTqGlNVRCUCg9UMczKNBTWds0skowLsIJED gdA+FwNBRlSwF4zGSMUSf8eCMZBsgXGhJfOPtRZ3GN0k/SnCstq6o3KuNN4EeCsm0I3E 6AFik+qzROq8/W70FbWjrYzGRiS4Tb3/aj9g3tyMWZnHIP9g/8CUOTViXMuMugqs95cs KQl1DU2vGB/dwbBQ8MF0HBrkXAdTO4jjDMoO7cjHeblIDTlZ9drpecwXZkop8sMn/bbG i2CA==
X-Gm-Message-State: AOAM533cYQJeyTfwy4m/8oZv3mO3qU5gJWUtrqu1cxbriBxDXIePyGH9 igLcCrorIu7axemKMW2EEoNKzqojF8AWQjP9mdy0E6dbGVDcVg==
X-Google-Smtp-Source: ABdhPJxAyt3qPEbn9lIUkPFdElTQtEQA5sMAjnZenyXa2h2An6y0z3BGUtpCXr2SgrvZSGyE54C4ZFBam5q5Nw5i/u4=
X-Received: by 2002:a2e:7216:: with SMTP id n22mr9147804ljc.187.1605026243642;  Tue, 10 Nov 2020 08:37:23 -0800 (PST)
MIME-Version: 1.0
References: <CAAZdMafdbwusA3Ks_k=RW9FXCh+OMj90Y_7A7Pj5cBHTXgyQPA@mail.gmail.com> <98dfa9e0-6a37-4b79-9eb5-b4bbf8b6850d@www.fastmail.com>
In-Reply-To: <98dfa9e0-6a37-4b79-9eb5-b4bbf8b6850d@www.fastmail.com>
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Tue, 10 Nov 2020 08:37:13 -0800
Message-ID: <CAOW+2duCDcnzuc4YHdWZafo+cv4-RBnJ1t3OMniTCbdVpEmLxg@mail.gmail.com>
To: Martin Thomson <mt@lowentropy.net>
Cc: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000001b8a3a05b3c34b06"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/N4i0K8VoLczsqNMdOk5yC4i6Xng>
Subject: Re: [Webtransport] Choosing the Transport, pt. 2
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2020 16:38:08 -0000

--0000000000001b8a3a05b3c34b06
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Martin said:

"It seems your arguments are based on it being possible to hide a bunch of
this complexity under a unified API.  That's great, but it doesn't mean
that the abstraction won't leak.  I'm sure that running over h2 will look
very different to running on bare QUIC."

[BA] There is a question whether h2 is supported within the WebTransport
API:
https://github.com/w3c/webtransport/issues/164

Part of the concern is the complexity that would be added by supporting
failover within the API, rather than outside of it.

Currently, if QUIC and associated functionality (such as datagram support)
cannot be negotiated, the WebTransport constructor will fail.  Among other
things this implies that if the WebTransport constructor succeeds and the
ready promise is resolved, that the datagramWritable and datagramReadable
attributes are always defined.

It does not make sense to me to pretend that datagram functionality is
available when running over a transport that does not support datagrams.

On Mon, Nov 9, 2020 at 9:05 PM Martin Thomson <mt@lowentropy.net> wrote:

> Hey Victor,
>
> I have a hard time understanding this.
>
> If I recall correctly, your original proposal involved multiple
> protocols.  So this sounds like you have discovered something that suppor=
ts
> that view, or at least has consolidated your own opinion.  But I don't se=
e
> any actual evidence here to support building multiple protocols.
>
> Building one protocol is hard enough.  It seems like we signed on to do
> two here, on the basis that we need a fallback.  But I don't see how that
> naturally extends to three.  On the contrary, just one protocol is pretty
> tempting at this point.  TCP fallback could be handled by a websockets
> polyfill outside of the browser (or a WebRTC polyfill for those who are
> less complexity-averse).
>
> It seems your arguments are based on it being possible to hide a bunch of
> this complexity under a unified API.  That's great, but it doesn't mean
> that the abstraction won't leak.  I'm sure that running over h2 will look
> very different to running on bare QUIC.
>
> That doesn't meant that I'm not curious about your semantic unification
> idea.  I don't understand that either, but it's an abstract notion with
> some appeal to me.
>
> Cheers,
> Martin
>
> On Wed, Oct 28, 2020, at 03:22, Victor Vasiliev wrote:
> > (previous iteration of this thread here
> > <
> https://mailarchive.ietf.org/arch/msg/webtransport/CEGNLkMqrvug3uPyPmQIXn=
WVIAY/
> >)
> >
> > Hello everyone,
> >
> > As you might remember, we've still not decided which of QuicTransport,
> > Http2Transport and Http3Transport we should adapt:
> >  1. There has been a strong interest in running WebTransport over HTTP.
> > HTTP allows us to do connection pooling, a well-understood mechanism of
> > falling back to TCP and better integration with existing load balancers=
.
> >  2. There has also been interest in running WebTransport over QUIC
> > itself, due to the complexity of WebTransport over HTTP, both in terms
> > of design and in terms of writing servers for it (nice discussion here
> > <
> https://mailarchive.ietf.org/arch/msg/webtransport/O8P5nmmw0ywra1VWtJmS4l=
BglhI/
> >).
> >  3. There has been a desire to pick only one of those.
> > I've been reworking <https://github.com/vasilvv/webtransport/pull/18>
> > the QuicTransport draft based on what we've found while implementing it
> > in Chrome.  Doing that, and observing how it becomes more and more like
> > HTTP with every revision, has convinced me more than ever that all of
> > the transports above should be the same thing conceptually, differing
> > only in wire protocol.  That observation was very helpful, since it
> > allowed us to replace <https://github.com/w3c/webtransport/issues/129>
> > all of the different API entry points with just one, already
> > dramatically simplifying the situation.  Same observation also can
> > potentially help us make some progress here.  We can unify all of the
> > proposals semantically (make them share a URL scheme and the headers
> > format), and then the variants just become different encodings.
> >
> > If we compare the WebTransport proposals to the HTTP ecosystem, besides
> > the obvious equivalences (webtransport-http2 =E2=89=85 HTTP/2,
> > webtransport-http3 =E2=89=85 HTTP/3), it becomes apparent that
> > webtransport-quic =E2=89=85 HTTP/1.1.  This gives us a hint of why we m=
ight
> > want all three of those.  This is also really nice, since we know how
> > to switch between all of those protocols, and we have a lot of
> > experience with an ecosystem shaped like that: webtransport-quic and
> > webtransport-http3 can be switched via ALPN, webtransport-http2 can be
> > raced in parallel with the former.
> >
> > So I propose that we adapt all of them.  As it stands,
> > webtransport-quic is a simple-to-implement and proven-to-work solution
> > that should not require much of working group's time.  There are
> > questions regarding whether webtransport-http is too complex; I believe
> > that we won't know unless we try, and since there's clearly interest in
> > trying, I believe we should adopt that draft and actually start working
> > out those complex details.
> >
> > What does everyone think?
> >
> > Cheers,
> >   Victor.
> > --
> > Webtransport mailing list
> > Webtransport@ietf.org
> > https://www.ietf.org/mailman/listinfo/webtransport
> >
>
> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--0000000000001b8a3a05b3c34b06
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">Martin said:=C2=A0<div><=
br></div><div>&quot;It seems your arguments are based on it being possible =
to hide a bunch of this complexity under a unified API.=C2=A0 That&#39;s gr=
eat, but it doesn&#39;t mean that the abstraction won&#39;t leak.=C2=A0 I&#=
39;m sure that running over h2 will look very different to running on bare =
QUIC.&quot;</div><div><br></div><div>[BA] There is a question whether h2 is=
 supported within the WebTransport API:</div><div><a href=3D"https://github=
.com/w3c/webtransport/issues/164">https://github.com/w3c/webtransport/issue=
s/164</a></div><div><br></div><div>Part of the concern is the complexity th=
at would be added by supporting failover within the API, rather than outsid=
e of it.=C2=A0</div><div><br></div><div>Currently, if QUIC and associated f=
unctionality (such as datagram support) cannot be negotiated, the WebTransp=
ort constructor will fail.=C2=A0 Among other things this implies that if th=
e WebTransport constructor succeeds and the ready promise is resolved, that=
 the datagramWritable and datagramReadable attributes are always defined.=
=C2=A0</div><div><br></div><div>It does not make sense to me to pretend tha=
t datagram functionality is available when running over a transport that do=
es not support datagrams.=C2=A0</div></div></div></div><br><div class=3D"gm=
ail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 9, 2020 at 9:0=
5 PM Martin Thomson &lt;<a href=3D"mailto:mt@lowentropy.net">mt@lowentropy.=
net</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"marg=
in:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1e=
x">Hey Victor,<br>
<br>
I have a hard time understanding this.<br>
<br>
If I recall correctly, your original proposal involved multiple protocols.=
=C2=A0 So this sounds like you have discovered something that supports that=
 view, or at least has consolidated your own opinion.=C2=A0 But I don&#39;t=
 see any actual evidence here to support building multiple protocols.<br>
<br>
Building one protocol is hard enough.=C2=A0 It seems like we signed on to d=
o two here, on the basis that we need a fallback.=C2=A0 But I don&#39;t see=
 how that naturally extends to three.=C2=A0 On the contrary, just one proto=
col is pretty tempting at this point.=C2=A0 TCP fallback could be handled b=
y a websockets polyfill outside of the browser (or a WebRTC polyfill for th=
ose who are less complexity-averse).<br>
<br>
It seems your arguments are based on it being possible to hide a bunch of t=
his complexity under a unified API.=C2=A0 That&#39;s great, but it doesn&#3=
9;t mean that the abstraction won&#39;t leak.=C2=A0 I&#39;m sure that runni=
ng over h2 will look very different to running on bare QUIC.<br>
<br>
That doesn&#39;t meant that I&#39;m not curious about your semantic unifica=
tion idea.=C2=A0 I don&#39;t understand that either, but it&#39;s an abstra=
ct notion with some appeal to me.<br>
<br>
Cheers,<br>
Martin<br>
<br>
On Wed, Oct 28, 2020, at 03:22, Victor Vasiliev wrote:<br>
&gt; (previous iteration of this thread here <br>
&gt; &lt;<a href=3D"https://mailarchive.ietf.org/arch/msg/webtransport/CEGN=
LkMqrvug3uPyPmQIXnWVIAY/" rel=3D"noreferrer" target=3D"_blank">https://mail=
archive.ietf.org/arch/msg/webtransport/CEGNLkMqrvug3uPyPmQIXnWVIAY/</a>&gt;=
)<br>
&gt; <br>
&gt; Hello everyone,<br>
&gt; <br>
&gt; As you might remember, we&#39;ve still not decided which of QuicTransp=
ort, <br>
&gt; Http2Transport and Http3Transport we should adapt:<br>
&gt;=C2=A0 1. There has been a strong interest in running WebTransport over=
 HTTP. <br>
&gt; HTTP allows us to do connection pooling, a well-understood mechanism o=
f <br>
&gt; falling back to TCP and better integration with existing load balancer=
s.<br>
&gt;=C2=A0 2. There has also been interest in running WebTransport over QUI=
C <br>
&gt; itself, due to the complexity of WebTransport over HTTP, both in terms=
 <br>
&gt; of design and in terms of writing servers for it (nice discussion here=
 <br>
&gt; &lt;<a href=3D"https://mailarchive.ietf.org/arch/msg/webtransport/O8P5=
nmmw0ywra1VWtJmS4lBglhI/" rel=3D"noreferrer" target=3D"_blank">https://mail=
archive.ietf.org/arch/msg/webtransport/O8P5nmmw0ywra1VWtJmS4lBglhI/</a>&gt;=
).<br>
&gt;=C2=A0 3. There has been a desire to pick only one of those.<br>
&gt; I&#39;ve been reworking &lt;<a href=3D"https://github.com/vasilvv/webt=
ransport/pull/18" rel=3D"noreferrer" target=3D"_blank">https://github.com/v=
asilvv/webtransport/pull/18</a>&gt; <br>
&gt; the QuicTransport draft based on what we&#39;ve found while implementi=
ng it <br>
&gt; in Chrome.=C2=A0 Doing that, and observing how it becomes more and mor=
e like <br>
&gt; HTTP with every revision, has convinced me more than ever that all of =
<br>
&gt; the transports above should be the same thing conceptually, differing =
<br>
&gt; only in wire protocol.=C2=A0 That observation was very helpful, since =
it <br>
&gt; allowed us to replace &lt;<a href=3D"https://github.com/w3c/webtranspo=
rt/issues/129" rel=3D"noreferrer" target=3D"_blank">https://github.com/w3c/=
webtransport/issues/129</a>&gt; <br>
&gt; all of the different API entry points with just one, already <br>
&gt; dramatically simplifying the situation.=C2=A0 Same observation also ca=
n <br>
&gt; potentially help us make some progress here.=C2=A0 We can unify all of=
 the <br>
&gt; proposals semantically (make them share a URL scheme and the headers <=
br>
&gt; format), and then the variants just become different encodings.<br>
&gt; <br>
&gt; If we compare the WebTransport proposals to the HTTP ecosystem, beside=
s <br>
&gt; the obvious equivalences (webtransport-http2 =E2=89=85 HTTP/2, <br>
&gt; webtransport-http3 =E2=89=85 HTTP/3), it becomes apparent that <br>
&gt; webtransport-quic =E2=89=85 HTTP/1.1.=C2=A0 This gives us a hint of wh=
y we might <br>
&gt; want all three of those.=C2=A0 This is also really nice, since we know=
 how <br>
&gt; to switch between all of those protocols, and we have a lot of <br>
&gt; experience with an ecosystem shaped like that: webtransport-quic and <=
br>
&gt; webtransport-http3 can be switched via ALPN, webtransport-http2 can be=
 <br>
&gt; raced in parallel with the former.<br>
&gt; <br>
&gt; So I propose that we adapt all of them.=C2=A0 As it stands, <br>
&gt; webtransport-quic is a simple-to-implement and proven-to-work solution=
 <br>
&gt; that should not require much of working group&#39;s time.=C2=A0 There =
are <br>
&gt; questions regarding whether webtransport-http is too complex; I believ=
e <br>
&gt; that we won&#39;t know unless we try, and since there&#39;s clearly in=
terest in <br>
&gt; trying, I believe we should adopt that draft and actually start workin=
g <br>
&gt; out those complex details.<br>
&gt; <br>
&gt; What does everyone think?<br>
&gt; <br>
&gt; Cheers,<br>
&gt;=C2=A0 =C2=A0Victor.<br>
&gt; -- <br>
&gt; Webtransport mailing list<br>
&gt; <a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtranspor=
t@ietf.org</a><br>
&gt; <a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"=
noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtran=
sport</a><br>
&gt;<br>
<br>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>

--0000000000001b8a3a05b3c34b06--


From nobody Tue Nov 10 08:51:57 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B20513A0AA3 for <webtransport@ietfa.amsl.com>; Tue, 10 Nov 2020 08:51:55 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 AdCiAZgA_fnx for <webtransport@ietfa.amsl.com>; Tue, 10 Nov 2020 08:51:54 -0800 (PST)
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) (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 96B073A0AA7 for <webtransport@ietf.org>; Tue, 10 Nov 2020 08:51:53 -0800 (PST)
Received: by mail-lj1-x229.google.com with SMTP id p12so919770ljc.9 for <webtransport@ietf.org>; Tue, 10 Nov 2020 08:51:53 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=kubw9uUIcmDPQIGGXQO8zT60YgUQ/lc2Z8VT+cNQQ9c=; b=k06/CnD6JdBE2MT7DhCQ/RsmIn2j/gyQzofPrqMUZMRdCTigpKeGdzcCmCikScIQCQ YIPUyuZWjTF9F00J++faqe1NX4nWO7JDrJIYydy9VanyWMsTDgx0lVQ5z5lZDIbjrIBn 4ItLGAoLc49AkoxggbdLd+MqOrQ2EIKShTbXyo1fOjNQ0lV33NVE2XJSHC0DWWawv8Nl axjtz92zjmhDhq5BsUSN8rHgZRXSmLcv9WdjR8MfrOM6yrUnE99u2YSO0uYAdEh6Rw76 fk6vPTiloM4Zjl+XaItPqoHj+OcCw9PsqNGIgh/OjGwNwNsIfnLHniCF+LdErMULd2MS feqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=kubw9uUIcmDPQIGGXQO8zT60YgUQ/lc2Z8VT+cNQQ9c=; b=WWYzECRwrDmNAVJg4GssUJ42WnXgFXpVj7tVCB7Lv7YglI6gWhDmrXk3JYLVLGDgan pT5JPPE1qGZvcNwZ9Zyd4X7C17q7crmhx7osdr5dKqXk3nImdT1oQpJ/a/nAzy365sEA jBbzbrO0abeyc2vGOyraFWhI47XNCK1PpyJeM0yNGX1sUtCqpLzWZLVPbJi/A82d8fI3 hAm7wMr7JdSaflnvVSjtbXz5VO/iVD7CucoP/fEluAYkjFb6mu5wug6/7LavMYzopSgh 2pqUNn7zCD+572m48mJKUDqbC1G3p2ZaDP8NC6qUknJ7HnHvrC9bhNhcUf2+CUzjYsKS y46g==
X-Gm-Message-State: AOAM531yIUTU9qjjbpfY9fBWqkC3CKVPNR34QI5an80XiMCAhn1AiDMe OUl5J8Dlz7s9UVADA3D0OzLs1IxFkKt2a1xiDPM=
X-Google-Smtp-Source: ABdhPJxuLFLJN+C9U/axTL/dZd2/fYzwnePHtIPghjKyBLLxboOtw/gwCPAz4BPxLbEJjuQU+k2P9ptoJt4L8sCAgqU=
X-Received: by 2002:a2e:b70d:: with SMTP id j13mr1158843ljo.240.1605027111724;  Tue, 10 Nov 2020 08:51:51 -0800 (PST)
MIME-Version: 1.0
References: <CAOW+2duHJTByX_E2jrQMuapKm=cxVwiZKUYWtpz-K-nw9SWQiw@mail.gmail.com> <2759a04d-949e-45ed-86db-bd499b7cff19@www.fastmail.com>
In-Reply-To: <2759a04d-949e-45ed-86db-bd499b7cff19@www.fastmail.com>
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Tue, 10 Nov 2020 08:51:42 -0800
Message-ID: <CAOW+2dtRvpi0zKKi4NnjmsqTvGVFA4EVLjwtZePHUJ-fge3RQA@mail.gmail.com>
To: Martin Thomson <mt@lowentropy.net>
Cc: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000d9855305b3c37e80"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/NpGL7MayRumxqoqBoVx_D4DqOG4>
Subject: Re: [Webtransport] Http3Transport pooling/sharing
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2020 16:51:56 -0000

--000000000000d9855305b3c37e80
Content-Type: text/plain; charset="UTF-8"

Martin said:

"But then if you later learn that you need webtransport, what then?"

[BA] Exactly.

It doesn't seem right to me to require support for WebTransport (and
associated functionality such as datagrams) on a connection that initially
is only to be used for HTTP/3.  It is also cumbersome to require that APIs
be used in a certain order (e.g. always call the WebTransport constructor
before fetch if you want to share the same connection).

On Mon, Nov 9, 2020 at 7:18 PM Martin Thomson <mt@lowentropy.net> wrote:

> There is a common problem with piecemeal negotiation.  I can imagine
> several responses to the case where you have an existing connection that
> doesn't support the features you want.
>
> 1. Fail.
> 2. Make a new connection.
> 3. Synthesize datagram support (probably not worth it).
>
> Failing isn't completely unreasonable.  If the connection doesn't have the
> features you need, and you have no reason to believe that the negotiation
> would be different next time, then this is a good reaction.  Of course, you
> need to be offering datagram support when you make the original connection,
> even if you are not currently aware of the need for the feature.
>
> The quote you provide indicates doesn't seem at all problematic: both
> features are negotiated at the same time, and one requires the other.  This
> is not particularly difficult to arrange.
>
> There is a more difficult problem to address: what if you have a
> connection to a server that supports h2 and webtransport, but you get
> Alt-Svc indicating support for h3.  Do you upgrade?  What if the upgraded
> service doesn't support webtransport?  If, at the time you upgrade, you
> don't know, it seems reasonable to upgrade.  But then if you later learn
> that you need webtransport, what then?
>
> On Tue, Nov 10, 2020, at 05:32, Bernard Aboba wrote:
> > One of the use cases that has been described in the recent W3C
> > WebTransport WG meeting was sharing of an HTTP/3 QUIC connection
> > between HTTP/3 Request/Response and WebTransport.
> >
> > In looking into how this would work in practice, it appears that there
> > are some complications.
> >
> > Http3Transport requires support for HTTP/3 Datagrams.
> > draft-vvv-webtransport-http3 Section 4.1 says:
> > "If "http3_transport_support" is negotiated, support for the QUIC
> > DATAGRAM extension MUST be negotiated."
> >
> > What happens if there is an existing HTTP/3 connection to the same
> > Origin but that connection did not negotiate support for QUIC DATAGRAMS?
> > --
> > Webtransport mailing list
> > Webtransport@ietf.org
> > https://www.ietf.org/mailman/listinfo/webtransport
> >
>
> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--000000000000d9855305b3c37e80
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">Martin said:=C2=A0<div><br></div><div>&qu=
ot;But then if you later learn that you need webtransport, what then?&quot;=
</div><div><br></div><div>[BA] Exactly.=C2=A0</div><div><br></div><div>It d=
oesn&#39;t seem right to me to require support for WebTransport (and associ=
ated functionality such as datagrams) on a connection that initially is onl=
y to be used for HTTP/3.=C2=A0 It is also cumbersome to require that APIs b=
e used in a certain order (e.g. always call the WebTransport constructor be=
fore fetch if you want to share the same connection).=C2=A0=C2=A0</div></di=
v></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr=
">On Mon, Nov 9, 2020 at 7:18 PM Martin Thomson &lt;<a href=3D"mailto:mt@lo=
wentropy.net">mt@lowentropy.net</a>&gt; wrote:<br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex">There is a common problem with piecemeal n=
egotiation.=C2=A0 I can imagine several responses to the case where you hav=
e an existing connection that doesn&#39;t support the features you want.<br=
>
<br>
1. Fail.<br>
2. Make a new connection.<br>
3. Synthesize datagram support (probably not worth it).<br>
<br>
Failing isn&#39;t completely unreasonable.=C2=A0 If the connection doesn&#3=
9;t have the features you need, and you have no reason to believe that the =
negotiation would be different next time, then this is a good reaction.=C2=
=A0 Of course, you need to be offering datagram support when you make the o=
riginal connection, even if you are not currently aware of the need for the=
 feature.<br>
<br>
The quote you provide indicates doesn&#39;t seem at all problematic: both f=
eatures are negotiated at the same time, and one requires the other.=C2=A0 =
This is not particularly difficult to arrange.<br>
<br>
There is a more difficult problem to address: what if you have a connection=
 to a server that supports h2 and webtransport, but you get Alt-Svc indicat=
ing support for h3.=C2=A0 Do you upgrade?=C2=A0 What if the upgraded servic=
e doesn&#39;t support webtransport?=C2=A0 If, at the time you upgrade, you =
don&#39;t know, it seems reasonable to upgrade.=C2=A0 But then if you later=
 learn that you need webtransport, what then?<br>
<br>
On Tue, Nov 10, 2020, at 05:32, Bernard Aboba wrote:<br>
&gt; One of the use cases that has been described in the recent W3C <br>
&gt; WebTransport WG meeting was sharing of an HTTP/3 QUIC connection <br>
&gt; between HTTP/3 Request/Response and WebTransport. <br>
&gt; <br>
&gt; In looking into how this would work in practice, it appears that there=
 <br>
&gt; are some complications. <br>
&gt; <br>
&gt; Http3Transport requires support for HTTP/3 Datagrams. <br>
&gt; draft-vvv-webtransport-http3 Section 4.1 says:<br>
&gt; &quot;If &quot;http3_transport_support&quot; is negotiated, support fo=
r the QUIC <br>
&gt; DATAGRAM extension MUST be negotiated.&quot;<br>
&gt; <br>
&gt; What happens if there is an existing HTTP/3 connection to the same <br=
>
&gt; Origin but that connection did not negotiate support for QUIC DATAGRAM=
S?<br>
&gt; -- <br>
&gt; Webtransport mailing list<br>
&gt; <a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtranspor=
t@ietf.org</a><br>
&gt; <a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"=
noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtran=
sport</a><br>
&gt;<br>
<br>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>

--000000000000d9855305b3c37e80--


From nobody Tue Nov 10 15:33:26 2020
Return-Path: <kixelated@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A51B33A11E5 for <webtransport@ietfa.amsl.com>; Tue, 10 Nov 2020 15:33:25 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 kpKoKcs0E_i7 for <webtransport@ietfa.amsl.com>; Tue, 10 Nov 2020 15:33:23 -0800 (PST)
Received: from mail-ot1-x331.google.com (mail-ot1-x331.google.com [IPv6:2607:f8b0:4864:20::331]) (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 B650C3A11E3 for <webtransport@ietf.org>; Tue, 10 Nov 2020 15:33:23 -0800 (PST)
Received: by mail-ot1-x331.google.com with SMTP id k3so404948otp.12 for <webtransport@ietf.org>; Tue, 10 Nov 2020 15:33:23 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=f4ecRj11vahTESr5RfdK/xLee+eDksIqHfH1aVMp8So=; b=VmTIUzpxp3/xU/MiZ3yDHPz8go5IN/0DXyckmZF1eWK1e5c7lyYwqQf0eNX3i97KSC pjJ0UaKvSblYIF7hK8IV5Bxd0UMwj165tBRLTZoMZPTYyUSdEprCpxpemLOkEF6xYsSE dufP+Nrq2sNA9ZiCP37igCmyEDUAYpNU8fb7+wtodpL3QQ/ReCsNN9MuFwyrgS3oZmcl 2bSki/ZVrnIlJg49me6NOKLsyNiDnHn7sawRd5TtlBEiV2sBTPrXHUxVHTtr0wvFDzvG NqndSfOVoEM3sSMxPQzaW8kqsQmiCJw6cWSRY7QgkQSm2v9YdoRyMq+BVXhiyxVKvitd gpig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=f4ecRj11vahTESr5RfdK/xLee+eDksIqHfH1aVMp8So=; b=HPlR/J6N57xKQexwglXNBMnK6oSLo66gD4CTFUNYwMPkbcb3Jx0jq/mhkdZHgHRBLg qH/UWXzJCoIbhZ6lEbuR7/z3DO+TSVInWCHVQshv7LUi9PdktkO5RKIk7IpTWsQD572O A3J9PxxLQKB5EObHNuXvC/voztcNGpJAy3YyR61VH3E7nJSfEXPh9Au3Y/1BStp5hj4r bz/JxHZ2fdGuNuyYgwc+BfZkDqE0NOPHg3JO7FqpNJaN0xocSxS1uMz+Xhhg8eOw/zFM nTpaSoSQ8r31xqS8u4BL5bxS4h2TU5FRcwYPByi6J3vRER83SpGeark6ipsHUONzxfzh LUlg==
X-Gm-Message-State: AOAM5330OGmGSSUOpFJwCuM3png/+Fgb4SQMv4bZALB5WmTfaOtODBtx DNSnjHhgGCo1vjVvugKsr39RFbJGy6L8/a2E/C8=
X-Google-Smtp-Source: ABdhPJxeEfzpTWfTAmZmjLlz5sPiuiQEx8WHHuTt3XZBQq3L7h8/Aac6VtWU89UgVpfA9EMUzPGQWw7aB+G1uxM5Rt0=
X-Received: by 2002:a05:6830:22da:: with SMTP id q26mr16519769otc.127.1605051202979;  Tue, 10 Nov 2020 15:33:22 -0800 (PST)
MIME-Version: 1.0
References: <CAOW+2duHJTByX_E2jrQMuapKm=cxVwiZKUYWtpz-K-nw9SWQiw@mail.gmail.com> <2759a04d-949e-45ed-86db-bd499b7cff19@www.fastmail.com> <CAOW+2dtRvpi0zKKi4NnjmsqTvGVFA4EVLjwtZePHUJ-fge3RQA@mail.gmail.com>
In-Reply-To: <CAOW+2dtRvpi0zKKi4NnjmsqTvGVFA4EVLjwtZePHUJ-fge3RQA@mail.gmail.com>
From: Luke Curley <kixelated@gmail.com>
Date: Tue, 10 Nov 2020 15:33:13 -0800
Message-ID: <CAHVo=Z=-F-5sZ_w7KW8Qv5ykzMv9eRzEWZvHjs1=N8m9qSEADg@mail.gmail.com>
To: Bernard Aboba <bernard.aboba@gmail.com>
Cc: Martin Thomson <mt@lowentropy.net>, WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000cccb5005b3c91a86"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/ozmURUF_i1r9wzXn8VRdLdStYo0>
Subject: Re: [Webtransport] Http3Transport pooling/sharing
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2020 23:33:26 -0000

--000000000000cccb5005b3c91a86
Content-Type: text/plain; charset="UTF-8"

Do all WebTransports need to have the same functionality? Would it make
sense to have optional functionality? I see a problem trying to force all
of the transports to behave the same in general.

While it's possible to emulate datagrams over reliable streams, this
subtly causes different behavior depending on the transport.
Applications built on top of QuicTransport datagrams will assume UDP-like
functionality. These assumptions are broken when using Http2Transport and
potentially broken when using Http3Transport, depending on extension
support.

On Tue, Nov 10, 2020 at 8:51 AM Bernard Aboba <bernard.aboba@gmail.com>
wrote:

> Martin said:
>
> "But then if you later learn that you need webtransport, what then?"
>
> [BA] Exactly.
>
> It doesn't seem right to me to require support for WebTransport (and
> associated functionality such as datagrams) on a connection that initially
> is only to be used for HTTP/3.  It is also cumbersome to require that APIs
> be used in a certain order (e.g. always call the WebTransport constructor
> before fetch if you want to share the same connection).
>
> On Mon, Nov 9, 2020 at 7:18 PM Martin Thomson <mt@lowentropy.net> wrote:
>
>> There is a common problem with piecemeal negotiation.  I can imagine
>> several responses to the case where you have an existing connection that
>> doesn't support the features you want.
>>
>> 1. Fail.
>> 2. Make a new connection.
>> 3. Synthesize datagram support (probably not worth it).
>>
>> Failing isn't completely unreasonable.  If the connection doesn't have
>> the features you need, and you have no reason to believe that the
>> negotiation would be different next time, then this is a good reaction.  Of
>> course, you need to be offering datagram support when you make the original
>> connection, even if you are not currently aware of the need for the feature.
>>
>> The quote you provide indicates doesn't seem at all problematic: both
>> features are negotiated at the same time, and one requires the other.  This
>> is not particularly difficult to arrange.
>>
>> There is a more difficult problem to address: what if you have a
>> connection to a server that supports h2 and webtransport, but you get
>> Alt-Svc indicating support for h3.  Do you upgrade?  What if the upgraded
>> service doesn't support webtransport?  If, at the time you upgrade, you
>> don't know, it seems reasonable to upgrade.  But then if you later learn
>> that you need webtransport, what then?
>>
>> On Tue, Nov 10, 2020, at 05:32, Bernard Aboba wrote:
>> > One of the use cases that has been described in the recent W3C
>> > WebTransport WG meeting was sharing of an HTTP/3 QUIC connection
>> > between HTTP/3 Request/Response and WebTransport.
>> >
>> > In looking into how this would work in practice, it appears that there
>> > are some complications.
>> >
>> > Http3Transport requires support for HTTP/3 Datagrams.
>> > draft-vvv-webtransport-http3 Section 4.1 says:
>> > "If "http3_transport_support" is negotiated, support for the QUIC
>> > DATAGRAM extension MUST be negotiated."
>> >
>> > What happens if there is an existing HTTP/3 connection to the same
>> > Origin but that connection did not negotiate support for QUIC DATAGRAMS?
>> > --
>> > Webtransport mailing list
>> > Webtransport@ietf.org
>> > https://www.ietf.org/mailman/listinfo/webtransport
>> >
>>
>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--000000000000cccb5005b3c91a86
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Do all WebTransports need to have the same functionality? =
Would it make sense to have optional functionality? I see a problem trying =
to force all of the transports to behave the same in general.=C2=A0<div><br=
></div><div>While it&#39;s possible to emulate datagrams over reliable stre=
ams, this subtly=C2=A0causes different behavior depending on the transport.=
 Applications=C2=A0built on top of QuicTransport datagrams will assume UDP-=
like functionality. These assumptions are broken when using Http2Transport =
and potentially broken when using Http3Transport, depending on extension su=
pport.</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"=
gmail_attr">On Tue, Nov 10, 2020 at 8:51 AM Bernard Aboba &lt;<a href=3D"ma=
ilto:bernard.aboba@gmail.com">bernard.aboba@gmail.com</a>&gt; wrote:<br></d=
iv><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord=
er-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div =
dir=3D"ltr">Martin said:=C2=A0<div><br></div><div>&quot;But then if you lat=
er learn that you need webtransport, what then?&quot;</div><div><br></div><=
div>[BA] Exactly.=C2=A0</div><div><br></div><div>It doesn&#39;t seem right =
to me to require support for WebTransport (and associated functionality suc=
h as datagrams) on a connection that initially is only to be used for HTTP/=
3.=C2=A0 It is also cumbersome to require that APIs be used in a certain or=
der (e.g. always call the WebTransport constructor before fetch if you want=
 to share the same connection).=C2=A0=C2=A0</div></div></div><br><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 9, 2020 =
at 7:18 PM Martin Thomson &lt;<a href=3D"mailto:mt@lowentropy.net" target=
=3D"_blank">mt@lowentropy.net</a>&gt; wrote:<br></div><blockquote class=3D"=
gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20=
4,204,204);padding-left:1ex">There is a common problem with piecemeal negot=
iation.=C2=A0 I can imagine several responses to the case where you have an=
 existing connection that doesn&#39;t support the features you want.<br>
<br>
1. Fail.<br>
2. Make a new connection.<br>
3. Synthesize datagram support (probably not worth it).<br>
<br>
Failing isn&#39;t completely unreasonable.=C2=A0 If the connection doesn&#3=
9;t have the features you need, and you have no reason to believe that the =
negotiation would be different next time, then this is a good reaction.=C2=
=A0 Of course, you need to be offering datagram support when you make the o=
riginal connection, even if you are not currently aware of the need for the=
 feature.<br>
<br>
The quote you provide indicates doesn&#39;t seem at all problematic: both f=
eatures are negotiated at the same time, and one requires the other.=C2=A0 =
This is not particularly difficult to arrange.<br>
<br>
There is a more difficult problem to address: what if you have a connection=
 to a server that supports h2 and webtransport, but you get Alt-Svc indicat=
ing support for h3.=C2=A0 Do you upgrade?=C2=A0 What if the upgraded servic=
e doesn&#39;t support webtransport?=C2=A0 If, at the time you upgrade, you =
don&#39;t know, it seems reasonable to upgrade.=C2=A0 But then if you later=
 learn that you need webtransport, what then?<br>
<br>
On Tue, Nov 10, 2020, at 05:32, Bernard Aboba wrote:<br>
&gt; One of the use cases that has been described in the recent W3C <br>
&gt; WebTransport WG meeting was sharing of an HTTP/3 QUIC connection <br>
&gt; between HTTP/3 Request/Response and WebTransport. <br>
&gt; <br>
&gt; In looking into how this would work in practice, it appears that there=
 <br>
&gt; are some complications. <br>
&gt; <br>
&gt; Http3Transport requires support for HTTP/3 Datagrams. <br>
&gt; draft-vvv-webtransport-http3 Section 4.1 says:<br>
&gt; &quot;If &quot;http3_transport_support&quot; is negotiated, support fo=
r the QUIC <br>
&gt; DATAGRAM extension MUST be negotiated.&quot;<br>
&gt; <br>
&gt; What happens if there is an existing HTTP/3 connection to the same <br=
>
&gt; Origin but that connection did not negotiate support for QUIC DATAGRAM=
S?<br>
&gt; -- <br>
&gt; Webtransport mailing list<br>
&gt; <a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtranspor=
t@ietf.org</a><br>
&gt; <a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"=
noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtran=
sport</a><br>
&gt;<br>
<br>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>

--000000000000cccb5005b3c91a86--


From nobody Wed Nov 11 13:42:55 2020
Return-Path: <kixelated@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C295B3A1142 for <webtransport@ietfa.amsl.com>; Wed, 11 Nov 2020 13:42:53 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 NIlj_eTi7rLQ for <webtransport@ietfa.amsl.com>; Wed, 11 Nov 2020 13:42:52 -0800 (PST)
Received: from mail-oo1-xc2e.google.com (mail-oo1-xc2e.google.com [IPv6:2607:f8b0:4864:20::c2e]) (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 957CD3A1101 for <webtransport@ietf.org>; Wed, 11 Nov 2020 13:42:52 -0800 (PST)
Received: by mail-oo1-xc2e.google.com with SMTP id y3so802381ooq.2 for <webtransport@ietf.org>; Wed, 11 Nov 2020 13:42:52 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=BcqFIAxiFBYsv/eDTV7253oNtGCYAZ+xcxo1Wd4ag2o=; b=FcqPiqtRChxu4hVC4Mfua4/S1032d73EAroiCjnthoTGVlDnI5sFVOiLGiXMfYpWQn 62g4BD/CPdJ7hTFu+4/p7G1UMAncJucAyxXA3bYh3nHvlpFQXJ+FTmcTBZcqEY1CMO9I c5gW47GAG8gw2bTb2uP27WEwkg4Lv0S3sS7yBOhUfv4rWWnmrQLMoCtedmk4i8sSLudg kN/6zFeNOTBT+9Psl0IwwkhZ2rWTcagpaAL1lMy94EZdwsTj4hymqUZFa5vfMuwNjBAP 0DHDcpZ4AmWya1Br/Vs3xmXTQ9eInEI1KOfqe3cMG2pPFJFREBY5d8ccrwl7NyEwVLyi osDA==
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; bh=BcqFIAxiFBYsv/eDTV7253oNtGCYAZ+xcxo1Wd4ag2o=; b=rv7zGc9sBXaJnMP+d9qF9DQU4m4c55x52K8UW2fxPHbChG7H0cXC9fLZf/wjn3QHeS ay5EZzqj1NuVfcnx41swfx1TjJwugSknPVxIE3kfp2MukYLFfi1Y7tc/eVY5CPFvLqCk tpq0/N+wSvyyhflPZuvOAMgDVahBI5LVpQa9iwT1mXSM4jlN4oXvAfOnsfBQt+Voa95/ JzJ058y6hZbKMEw5p1LkmR1RmRRFDQR0nzCtJ2FtPLwt7+MscvDz717WJqAkspMiaJpM yZsPGSt92GbcP/8HOZSPiLPVgcxy4jCTa4vSXQVxpvih/442M3f6HVprdcjkRji2H6vO fkbw==
X-Gm-Message-State: AOAM531Gx05BnBcmWVfKAO/T+X0mrZ3qPVQw1EAViEd1O2IdEFE69qMp YHJ31buG66foqGsukFzW53mVTZNb1+7ol24LHHr0iX94igSKsg==
X-Google-Smtp-Source: ABdhPJxsgTkwrBYUby8f0pyTWFXsIA2pNOjIcY7ZxrSLsBolRyGCARrsIQlVf6d1EU6hkX33hmy/3Iq9K2eSl2Ku2xs=
X-Received: by 2002:a4a:9607:: with SMTP id q7mr18658022ooi.79.1605130971484;  Wed, 11 Nov 2020 13:42:51 -0800 (PST)
MIME-Version: 1.0
From: Luke Curley <kixelated@gmail.com>
Date: Wed, 11 Nov 2020 13:42:43 -0800
Message-ID: <CAHVo=Zk84mfOJr3XSXmrVDBq0XUKoB63ytCR1dhhtM7aehq7qw@mail.gmail.com>
To: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000005f96ad05b3dbadad"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/6PhkxzVEX5FPiINv8IjViksm3BQ>
Subject: [Webtransport] HTTP/3 Downgrade
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 11 Nov 2020 21:42:54 -0000

--0000000000005f96ad05b3dbadad
Content-Type: text/plain; charset="UTF-8"

It seems like connection pooling introduces a lot of technical complexity
for limited benefits. Hypothetically, what if connection pooling was
dropped as a requirement?

What if Http3Transport involved establishing a new HTTP/3 connection and
downgrading it to QUIC? It would be analogous to WebSockets for HTTP/1.1.

You could use 0-RTT to minimize latency when establishing a HTTP/3 or
Http3Transport connection to an existing host. These connections would not
share congestion control state (unfortunate), but would also not share flow
control limits (yay).

I also think this is how you could merge QuicTransport and Http3Transport.
Use HTTP/3 for the handshake, and QUIC for the data transfer.

--0000000000005f96ad05b3dbadad
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><div>It seems like connection pooling introduces a lo=
t of technical complexity for limited benefits. Hypothetically, what if con=
nection pooling was dropped as a requirement?=C2=A0</div></div><div><br></d=
iv><div>What if Http3Transport involved establishing a new HTTP/3 connectio=
n and downgrading it to QUIC? It would be analogous to WebSockets for HTTP/=
1.1.=C2=A0=C2=A0<br></div><div><br></div><div><div>You could use 0-RTT to m=
inimize latency when establishing a HTTP/3 or Http3Transport connection to =
an existing host. These connections would not share congestion control stat=
e (unfortunate), but would also not share flow control limits (yay).</div><=
/div><div></div><div><br></div><div>I also think this is how you could merg=
e QuicTransport and Http3Transport. Use HTTP/3 for the handshake, and QUIC =
for the data transfer.</div></div>

--0000000000005f96ad05b3dbadad--


From nobody Wed Nov 11 13:48:41 2020
Return-Path: <ianswett@google.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5AECA3A115E for <webtransport@ietfa.amsl.com>; Wed, 11 Nov 2020 13:48:40 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.599
X-Spam-Level: 
X-Spam-Status: No, score=-17.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, 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 NUO8pih4ReMr for <webtransport@ietfa.amsl.com>; Wed, 11 Nov 2020 13:48:38 -0800 (PST)
Received: from mail-yb1-xb2a.google.com (mail-yb1-xb2a.google.com [IPv6:2607:f8b0:4864:20::b2a]) (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 904023A115C for <webtransport@ietf.org>; Wed, 11 Nov 2020 13:48:38 -0800 (PST)
Received: by mail-yb1-xb2a.google.com with SMTP id k65so3314132ybk.5 for <webtransport@ietf.org>; Wed, 11 Nov 2020 13:48:38 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=y3la6wnAFGXoYRNjdy3aoT/p8TfXxA34AVZwimvC2JA=; b=RP4Ln2nLsvhPJt+Hjyt6tU+AAIlodRUcHPSycJT9KHXQq3NKt0WIbdWF4TR8HLWCyk Wf4Gys4H8MGR7QA0dFlENrYdhHWcoOHjtjGOZJikVvjxjU9Db+YY44dTfACkYF6oY0Kq FYquxdBgFO4Q/ktEutuuEVfeAATx6xDFnh0Juw4cvi527+uHEBH4P2zdmT/sJN2pTIxd OgIU73tVfXXuaLS6p/69yLu2kq+yKBag1+eSVpcGD/W+IQwr8TM5ZZjgO4C5JVX4JeEy eBL5KQ7/uusjCzoM6dTZpawPzevsYhsbl8bf/AISNtqyTH26LZ35hA4EQNPPL7pB0Unc XNLQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=y3la6wnAFGXoYRNjdy3aoT/p8TfXxA34AVZwimvC2JA=; b=Nr77Ck+7cOOOHLJhiAi/kRkP+wBTZ9i9+XIwl6xUU9p+66y1iJ9E9nXbXgoGSYsc0m vJtpXVH43xodOk2JvoI+vTFJdUT4+ZlOXiUZeZV5wEUxA7vDH/eOylfA6HIDQK9TigsC 1aGTYfqCQsLII/nZGH2Q+XxMArxpNBOE/BbSUFBLGOFIjlKrKy8ZqqHIClXCrXZmh8Vq siFcgKzIOeOfqo79GCu9Bdjgf5HKfv1oPL/fYDWd6rHPHKQgclOM/rG2LQsLfCcMqvxU VlIpwXfFqdqVdHJMCuzszzUORtkggCY/e5GDEd2XxU93/92PlRP/lJaT59JIxg7XR3DT GBkg==
X-Gm-Message-State: AOAM532GyD7NN5vaCC01yY0+Zc8obfonp4keXqPSPNdz46T1fpQq0pH3 D+mVNTZsdipzOc2vsU+NoM88ZsxrIHTLRvoNMQQYdA==
X-Google-Smtp-Source: ABdhPJzvK5gJookWF5o8hMRjfP5tvoLAUuhFF0ZZ4aZnQ0F0mzWxtlDc1D7YqaE8di2Iwblan3DyrWuxU2eT6gZdp7c=
X-Received: by 2002:a25:2d55:: with SMTP id s21mr5114880ybe.389.1605131317540;  Wed, 11 Nov 2020 13:48:37 -0800 (PST)
MIME-Version: 1.0
References: <CAHVo=Zk84mfOJr3XSXmrVDBq0XUKoB63ytCR1dhhtM7aehq7qw@mail.gmail.com>
In-Reply-To: <CAHVo=Zk84mfOJr3XSXmrVDBq0XUKoB63ytCR1dhhtM7aehq7qw@mail.gmail.com>
From: Ian Swett <ianswett@google.com>
Date: Wed, 11 Nov 2020 16:48:26 -0500
Message-ID: <CAKcm_gNpjSnhBtu=o0N71mW95AtV=CXA4P5AEr9+iKye6Ho0OQ@mail.gmail.com>
To: Luke Curley <kixelated@gmail.com>
Cc: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000000a78105b3dbc21d"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/xdy0DyX5ckTG35YNn1_CDo4IOqc>
Subject: Re: [Webtransport] HTTP/3 Downgrade
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 11 Nov 2020 21:48:40 -0000

--00000000000000a78105b3dbc21d
Content-Type: text/plain; charset="UTF-8"

Downgrading post handshake is very complex in practice, particularly
because QUIC is not head-of-line blocking. If you were to pursue this, I
would recommend downgrading as part of the handshake.

You could use a transport param instead of alpn if that was preferable.

On Wed, Nov 11, 2020 at 4:43 PM Luke Curley <kixelated@gmail.com> wrote:

> It seems like connection pooling introduces a lot of technical complexity
> for limited benefits. Hypothetically, what if connection pooling was
> dropped as a requirement?
>
> What if Http3Transport involved establishing a new HTTP/3 connection and
> downgrading it to QUIC? It would be analogous to WebSockets for HTTP/1.1.
>
> You could use 0-RTT to minimize latency when establishing a HTTP/3 or
> Http3Transport connection to an existing host. These connections would not
> share congestion control state (unfortunate), but would also not share flow
> control limits (yay).
>
> I also think this is how you could merge QuicTransport and Http3Transport.
> Use HTTP/3 for the handshake, and QUIC for the data transfer.
> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--00000000000000a78105b3dbc21d
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Downgrading post handshake is very complex in practic=
e,=C2=A0particularly because QUIC is not head-of-line blocking. If you were=
 to pursue=C2=A0this, I would recommend=C2=A0downgrading as part of the han=
dshake.</div><div><br></div>You could use a transport param instead of alpn=
 if that was preferable.=C2=A0</div><br><div class=3D"gmail_quote"><div dir=
=3D"ltr" class=3D"gmail_attr">On Wed, Nov 11, 2020 at 4:43 PM Luke Curley &=
lt;<a href=3D"mailto:kixelated@gmail.com">kixelated@gmail.com</a>&gt; wrote=
:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.=
8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"lt=
r"><div><div>It seems like connection pooling introduces a lot of technical=
 complexity for limited benefits. Hypothetically, what if connection poolin=
g was dropped as a requirement?=C2=A0</div></div><div><br></div><div>What i=
f Http3Transport involved establishing a new HTTP/3 connection and downgrad=
ing it to QUIC? It would be analogous to WebSockets for HTTP/1.1.=C2=A0=C2=
=A0<br></div><div><br></div><div><div>You could use 0-RTT to minimize laten=
cy when establishing a HTTP/3 or Http3Transport connection to an existing h=
ost. These connections would not share congestion control state (unfortunat=
e), but would also not share flow control limits (yay).</div></div><div></d=
iv><div><br></div><div>I also think this is how you could merge QuicTranspo=
rt and Http3Transport. Use HTTP/3 for the handshake, and QUIC for the data =
transfer.</div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>

--00000000000000a78105b3dbc21d--


From nobody Wed Nov 11 13:52:06 2020
Return-Path: <vasilvv@google.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D3EF93A1167 for <webtransport@ietfa.amsl.com>; Wed, 11 Nov 2020 13:52:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.599
X-Spam-Level: 
X-Spam-Status: No, score=-17.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, 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 5cGlvd9tfueq for <webtransport@ietfa.amsl.com>; Wed, 11 Nov 2020 13:52:03 -0800 (PST)
Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) (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 323703A116B for <webtransport@ietf.org>; Wed, 11 Nov 2020 13:52:03 -0800 (PST)
Received: by mail-lf1-x12b.google.com with SMTP id j205so5313999lfj.6 for <webtransport@ietf.org>; Wed, 11 Nov 2020 13:52:03 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=yMWqaG/o1uPACYUJMj4/O12X9hjmq1z3vqEhzdZ4uMg=; b=XcFZ1nbhlaJukOrL7nUNcNAEdgHQa7AGF8evB+SH/7fKp4qFYG3ZV0o4b+a8vM84AA Cz/TGgoEgDFKfvzHsNRR9TIdhKEbHWfEb5kP24i87MwMTXdfht3/8HuCUz5Py0DuoPAL cQLBZCRyzMbe/KhVZew1tp7nyvYn440HYWXK6H2zI0qDJ9KCKW4nrhB7eIcLkW/uk8Sp aSMpIxX9CpU5oqAGulSD1nnSBsP1kf/FLsk5su1kFmHbNrZW2JWzNSHu+ZAkbtOoY9wF EYLI/Szw26p9DkUA0CsO9873eJx+WuWxLbw+eG9BJoSHNTfeCc4XwctbSkS/hysd1GLf 1tYg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=yMWqaG/o1uPACYUJMj4/O12X9hjmq1z3vqEhzdZ4uMg=; b=GEdgL2nYBIHyJ5ZnPsAVl7IAx4ZyBIUL4C7UGgdmJ4HmA8MuPr3K9bBrOZwcmwg5JE uoGNrOPSiTbwjaPEMiwHRVZlIWiFk6X1gczCd3ZxIkLV6HFj3LEQqHpqJ5y4W1fWgQG+ 2kSCMpWAEOogTmfakJsy1g9QaRYdq/vajFZ3irkRraiEeW9gHYvgy535csYtwyY2FR12 PiofwqhDzpSdweRN01pN7PD7y9cl/tQZ2BK0tTh/Xg5mBAI1oytEIWfeYfRXym4M3rjw AzhtfDj6BsM4tJtHkSZr0t0wu8ZERJO8GzAIXh3NKKbVJXPBrawsAuH8LaeGv5CwCY8V y2iw==
X-Gm-Message-State: AOAM531FO1jNmH5AyuRLWWXCuX/34VZjbTVD+UpXqSg2wByKH0r1vSuI ZUaSALcNxp3Kz0IkUvTHiJBfI03maFlb2ALSdF/dpw==
X-Google-Smtp-Source: ABdhPJxul4VsRtaIH7GjqAQvOQjuKoUzPHywdOSpNyiJHMXFKHlrBMEB6iOK3aztALPrkrcRj9YFYAHw6c21lMUPvlY=
X-Received: by 2002:a19:c005:: with SMTP id q5mr8051193lff.400.1605131520979;  Wed, 11 Nov 2020 13:52:00 -0800 (PST)
MIME-Version: 1.0
References: <CAHVo=Zk84mfOJr3XSXmrVDBq0XUKoB63ytCR1dhhtM7aehq7qw@mail.gmail.com>
In-Reply-To: <CAHVo=Zk84mfOJr3XSXmrVDBq0XUKoB63ytCR1dhhtM7aehq7qw@mail.gmail.com>
From: Victor Vasiliev <vasilvv@google.com>
Date: Wed, 11 Nov 2020 16:51:49 -0500
Message-ID: <CAAZdMafmO3qKQKegJ7X+MvTjnPvKnO3+B1T-aRME6FZqL-e_1A@mail.gmail.com>
To: Luke Curley <kixelated@gmail.com>
Cc: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000020a77905b3dbce26"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/gluY7SFhZwsiZDNuSFIr1bPEmtc>
Subject: Re: [Webtransport] HTTP/3 Downgrade
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 11 Nov 2020 21:52:05 -0000

--00000000000020a77905b3dbce26
Content-Type: text/plain; charset="UTF-8"

I'm not sure "HTTP/3 without pooling" does anything that QuicTransport
doesn't already do, especially since the latter got real header support.
So, at least as far as my understanding of this space goes, Http3Transport
without pooling doesn't make that much sense.

On Wed, Nov 11, 2020 at 4:43 PM Luke Curley <kixelated@gmail.com> wrote:

> It seems like connection pooling introduces a lot of technical complexity
> for limited benefits. Hypothetically, what if connection pooling was
> dropped as a requirement?
>
> What if Http3Transport involved establishing a new HTTP/3 connection and
> downgrading it to QUIC? It would be analogous to WebSockets for HTTP/1.1.
>
> You could use 0-RTT to minimize latency when establishing a HTTP/3 or
> Http3Transport connection to an existing host. These connections would not
> share congestion control state (unfortunate), but would also not share flow
> control limits (yay).
>
> I also think this is how you could merge QuicTransport and Http3Transport.
> Use HTTP/3 for the handshake, and QUIC for the data transfer.
> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--00000000000020a77905b3dbce26
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">I&#39;m not sure &quot;HTTP/3 without pooling&quot; does a=
nything that QuicTransport doesn&#39;t already=C2=A0do, especially since th=
e latter got real header support.=C2=A0 So, at least as far as my understan=
ding of this space goes, Http3Transport without pooling doesn&#39;t make th=
at much sense.</div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=
=3D"gmail_attr">On Wed, Nov 11, 2020 at 4:43 PM Luke Curley &lt;<a href=3D"=
mailto:kixelated@gmail.com">kixelated@gmail.com</a>&gt; wrote:<br></div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div><div>I=
t seems like connection pooling introduces a lot of technical complexity fo=
r limited benefits. Hypothetically, what if connection pooling was dropped =
as a requirement?=C2=A0</div></div><div><br></div><div>What if Http3Transpo=
rt involved establishing a new HTTP/3 connection and downgrading it to QUIC=
? It would be analogous to WebSockets for HTTP/1.1.=C2=A0=C2=A0<br></div><d=
iv><br></div><div><div>You could use 0-RTT to minimize latency when establi=
shing a HTTP/3 or Http3Transport connection to an existing host. These conn=
ections would not share congestion control state (unfortunate), but would a=
lso not share flow control limits (yay).</div></div><div></div><div><br></d=
iv><div>I also think this is how you could merge QuicTransport and Http3Tra=
nsport. Use HTTP/3 for the handshake, and QUIC for the data transfer.</div>=
</div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>

--00000000000020a77905b3dbce26--


From nobody Wed Nov 11 14:35:43 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8CC3C3A11A2 for <webtransport@ietfa.amsl.com>; Wed, 11 Nov 2020 14:35:41 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.096
X-Spam-Level: 
X-Spam-Status: No, score=-2.096 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DC_PNG_UNO_LARGO=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 vf7h-VV4e_es for <webtransport@ietfa.amsl.com>; Wed, 11 Nov 2020 14:35:39 -0800 (PST)
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com [IPv6:2a00:1450:4864:20::130]) (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 C47023A119B for <webtransport@ietf.org>; Wed, 11 Nov 2020 14:35:38 -0800 (PST)
Received: by mail-lf1-x130.google.com with SMTP id z21so5421638lfe.12 for <webtransport@ietf.org>; Wed, 11 Nov 2020 14:35:38 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=MrTB0ob3dM6sCR+R3SK2Vl13jkhGtGU2bIt3zsXW6qo=; b=Temp+CDkbdR/3G57RRh23s/ZPdC6z5wv16AP02KskUvu96evvFiI54mC4FXR6hV6ZK 4y9/2+VrbNhIjKthZykGK6hUY8Ho+MtAKAJ885E6nOYpW9AtO8jMgKjL5Fl2n/9Z0RPm r+Z/BCFlOcYcPZdNQO0WykJhJLqpN9KvcrY9hDOlMlu3D9+KYZL7rGm5p3o9q8j+Ls/e N5xRxzTF5vA4wGUsJYcduonKnub2M0+XZKz4hLgNuAiFpjYcqIZJZyKh396epKWGzwPn Z1FcKMZw34ZsqpGXvvsOaJK7KALvi5zLb3ihBPEwIy5H+3oGDM55PItDL3t8OaygXztZ DFFQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=MrTB0ob3dM6sCR+R3SK2Vl13jkhGtGU2bIt3zsXW6qo=; b=MvlqTysEKK0Th7S2qzbX5plr7xEuWZrf89OG+wcP2qxcn+S/Q65ehThyt9ScHwKw0F KaUPG9yCZWNEgdBN3SiKUGticzAmb/ER2WICVV9/AMnpX6nAB2YddsXFmwYP9MLSuMAw PlKINeiD7l+g5orL+XpQpc+obezK5geit0a1eqAFh7eInB28xcpxjJXEIb8W2xLXrVeo 5RKIMqvzj4MzSxVXA+4GbtiElO8p0la96E4pAWDQugoPto6jlnwJ43BcObxF+k2eq8Xp 9u/8HoTseIBJIObdnwAOiqNsaiG78tj6cfaNM3voAYdGqmO6iSzGQkLsrBcHwlQq+Q2o ueWg==
X-Gm-Message-State: AOAM5325xKkwlD6pgvPvPgYJuBIcJYv1fn2esyS/8nB/ZGsF6Ida2fAo 28TzaaWjUnjvuDDzAdZi4Vo2AxQ+ZgXuZSbx+/I=
X-Google-Smtp-Source: ABdhPJwReEzJhEvuQMHrwGQlReZjAYIJ2KDHpRpVcUyOxMGIOLRuKqyKuTlRW/atkJEkMvOYMQnAMbEUXVn24O2XTuk=
X-Received: by 2002:a19:88c:: with SMTP id 134mr9716822lfi.560.1605134136375;  Wed, 11 Nov 2020 14:35:36 -0800 (PST)
MIME-Version: 1.0
References: <CAHVo=Zk84mfOJr3XSXmrVDBq0XUKoB63ytCR1dhhtM7aehq7qw@mail.gmail.com> <CAAZdMafmO3qKQKegJ7X+MvTjnPvKnO3+B1T-aRME6FZqL-e_1A@mail.gmail.com>
In-Reply-To: <CAAZdMafmO3qKQKegJ7X+MvTjnPvKnO3+B1T-aRME6FZqL-e_1A@mail.gmail.com>
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Wed, 11 Nov 2020 14:35:25 -0800
Message-ID: <CAOW+2dv8bGfftqZYFnPGpOX+XPzydh4_KJjknhu5FxP-w1neTw@mail.gmail.com>
To: Victor Vasiliev <vasilvv=40google.com@dmarc.ietf.org>
Cc: Luke Curley <kixelated@gmail.com>, WebTransport <webtransport@ietf.org>
Content-Type: multipart/related; boundary="00000000000004417f05b3dc6ae3"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/Hvj9S8c95uuWaYrFbUUsfJjEEOw>
Subject: Re: [Webtransport] HTTP/3 Downgrade
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 11 Nov 2020 22:35:42 -0000

--00000000000004417f05b3dc6ae3
Content-Type: multipart/alternative; boundary="00000000000004417c05b3dc6ae2"

--00000000000004417c05b3dc6ae2
Content-Type: text/plain; charset="UTF-8"

Victor said:

"Http3Transport without pooling doesn't make that much sense."

[BA] Some Http3Transport use cases depend on pooling between WebTransport
and HTTP/3 request/responses; others could just be satisfied by
WebTransport pooling.  I would suggest that we distinguish these two
requirements, because pooling/sharing a QUIC connection between
WebTransport instances appears simpler than pooling/sharing a QUIC
connection between WebTransport and HTTP/3.

At IETF 107 RIPT BOF there was a desire expressed to enable media services
to leverage HTTP infrastructure. Justin Uberti described a use case where
gRPC would be sent over HTTP/3 to request that the server initiate either a
reliable stream or flow of datagrams (see below).  This use case appears to
require pooling of WebTransport and HTTP/3 request/responses (in order to
simplify firewall traversal).  However, this use case is not easily
supported using an garden variety HTTP/3 server, which probably could not
initially be expected to support QUIC datagrams (although it would not be
hard to support in node.js assuming that a QUIC module was available).

See Slide 7 here:
https://datatracker.ietf.org/meeting/107/materials/slides-107-ript-rtc-implementation-experiences-00

[image: image.png]

On Wed, Nov 11, 2020 at 1:52 PM Victor Vasiliev <vasilvv=
40google.com@dmarc.ietf.org> wrote:

> I'm not sure "HTTP/3 without pooling" does anything that QuicTransport
> doesn't already do, especially since the latter got real header support.
> So, at least as far as my understanding of this space goes, Http3Transport
> without pooling doesn't make that much sense.
>
> On Wed, Nov 11, 2020 at 4:43 PM Luke Curley <kixelated@gmail.com> wrote:
>
>> It seems like connection pooling introduces a lot of technical complexity
>> for limited benefits. Hypothetically, what if connection pooling was
>> dropped as a requirement?
>>
>> What if Http3Transport involved establishing a new HTTP/3 connection and
>> downgrading it to QUIC? It would be analogous to WebSockets for HTTP/1.1.
>>
>> You could use 0-RTT to minimize latency when establishing a HTTP/3 or
>> Http3Transport connection to an existing host. These connections would not
>> share congestion control state (unfortunate), but would also not share flow
>> control limits (yay).
>>
>> I also think this is how you could merge QuicTransport and
>> Http3Transport. Use HTTP/3 for the handshake, and QUIC for the data
>> transfer.
>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--00000000000004417c05b3dc6ae2
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Victor said:=C2=A0<div><br></div><div>&quot;Http3Transport=
 without pooling doesn&#39;t make that much sense.&quot;</div><div><br></di=
v><div>[BA] Some Http3Transport use cases depend on pooling between WebTran=
sport and HTTP/3 request/responses; others could just be satisfied by WebTr=
ansport pooling.=C2=A0 I would suggest that we distinguish these two requir=
ements, because pooling/sharing a QUIC connection between WebTransport inst=
ances appears simpler than pooling/sharing a QUIC connection between WebTra=
nsport and HTTP/3.</div><div><br></div><div>At IETF 107 RIPT BOF there was =
a desire expressed to enable media services to leverage HTTP infrastructure=
. Justin Uberti described a use case where gRPC would be sent over HTTP/3 t=
o request that the server initiate either a reliable stream or flow of data=
grams (see below).=C2=A0 This use case appears to require pooling of WebTra=
nsport and HTTP/3 request/responses (in order to simplify firewall traversa=
l).=C2=A0 However, this use case is not easily supported using an garden=C2=
=A0variety HTTP/3 server, which probably could not initially be expected to=
 support QUIC datagrams (although it would not be hard to support in node.j=
s assuming that a QUIC module was available).=C2=A0</div><div><br></div><di=
v>See Slide 7 here:=C2=A0<a href=3D"https://datatracker.ietf.org/meeting/10=
7/materials/slides-107-ript-rtc-implementation-experiences-00">https://data=
tracker.ietf.org/meeting/107/materials/slides-107-ript-rtc-implementation-e=
xperiences-00</a></div><div><br></div><div><div><img src=3D"cid:ii_khdyrmmj=
0" alt=3D"image.png" width=3D"562" height=3D"294"><br></div></div></div><br=
><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, N=
ov 11, 2020 at 1:52 PM Victor Vasiliev &lt;vasilvv=3D<a href=3D"mailto:40go=
ogle.com@dmarc.ietf.org">40google.com@dmarc.ietf.org</a>&gt; wrote:<br></di=
v><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;borde=
r-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">I&#39;=
m not sure &quot;HTTP/3 without pooling&quot; does anything that QuicTransp=
ort doesn&#39;t already=C2=A0do, especially since the latter got real heade=
r support.=C2=A0 So, at least as far as my understanding of this space goes=
, Http3Transport without pooling doesn&#39;t make that much sense.</div><br=
><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, N=
ov 11, 2020 at 4:43 PM Luke Curley &lt;<a href=3D"mailto:kixelated@gmail.co=
m" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquot=
e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s=
olid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div><div>It seems=
 like connection pooling introduces a lot of technical complexity for limit=
ed benefits. Hypothetically, what if connection pooling was dropped as a re=
quirement?=C2=A0</div></div><div><br></div><div>What if Http3Transport invo=
lved establishing a new HTTP/3 connection and downgrading it to QUIC? It wo=
uld be analogous to WebSockets for HTTP/1.1.=C2=A0=C2=A0<br></div><div><br>=
</div><div><div>You could use 0-RTT to minimize latency when establishing a=
 HTTP/3 or Http3Transport connection to an existing host. These connections=
 would not share congestion control state (unfortunate), but would also not=
 share flow control limits (yay).</div></div><div></div><div><br></div><div=
>I also think this is how you could merge QuicTransport and Http3Transport.=
 Use HTTP/3 for the handshake, and QUIC for the data transfer.</div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>

--00000000000004417c05b3dc6ae2--

--00000000000004417f05b3dc6ae3
Content-Type: image/png; name="image.png"
Content-Disposition: inline; filename="image.png"
Content-Transfer-Encoding: base64
Content-ID: <ii_khdyrmmj0>
X-Attachment-Id: ii_khdyrmmj0

iVBORw0KGgoAAAANSUhEUgAAA54AAAHkCAYAAABWqfBpAAAgAElEQVR4AeydaZAVVZq//5/nw0xM
zETMfOkvE9Eds/R0z/Q2vc10z3RP9/S+r3Wr2Pd9UxRQEJRNEJBNRUX2fREQAWkWZREERUEWFRBE
NgUFQRCq3n88Wfe9dW5W5q1b1C2oon8nIiuzMs/6nJMnz++8J/P+P5MTAREQAREQAREQAREQAREQ
AREQgUYk8P8aMW5FLQIiIAIiIAIiIAIiIAIiIAIiIAIm4alGIAIiIAIiIAIiIAIiIAIiIAIi0KgE
JDwbFa8iFwEREAEREAEREAEREAEREAERkPBUGxABERABERABERABERABERABEWhUAhKejYpXkYuA
CIiACIiACIiACIiACIiACEh4qg2IgAiIgAiIgAiIgAiIgAiIgAg0KgEJz0bFq8hFQAREQAREQARE
QAREQAREQAQkPNUGREAEREAEREAEREAEREAEREAEGpWAhGej4lXkIiACIiACIiACIiACIiACIiAC
Ep5qAyIgAiIgAiIgAiIgAiIgAiIgAo1KQMKzUfEqchEQAREQAREQAREQAREQAREQAQlPtQEREAER
EAEREAEREAEREAEREIFGJSDh2ah4FbkIiIAIiIAIiIAIiIAIiIAIiICEp9qACIiACIiACIiACIiA
CIiACIhAoxKQ8GxUvIpcBERABERABERABERABERABERAwlNtQAREQAREQAREQAREQAREQAREoFEJ
SHg2Kl5FLgIiIAIiIAIiIAIiIAIiIAIiIOGpNiACIiACIiACIiACIiACIiACItCoBCQ8GxWvIhcB
ERABERABERABERABERABEZDwVBsQAREQAREQAREQAREQAREQARFoVAISno2KV5GLgAiIgAiIgAiI
gAiIgAiIgAhIeKoNiIAIiIAIiIAIiIAIiIAIiIAINCoBCc9GxavIRUAEREAEREAEREAEREAEREAE
JDzVBkRABERABERABERABERABERABBqVgIRno+JV5CIgAiIgAiIgAiIgAiIgAiIgAhKeagMiIAIi
IAIiIAIiIAIiIAIiIAKNSkDCs1HxKnIREAEREAEREAEREAEREAEREAEJT7WBBhOounbe3tzzvK1e
sdgWzJ9vi5c/a8/vfMPOX2lw1Iqg2RGotA/e2WObN261N09fbTa5v3b5tO19cb2tWLrQ5i9YZCvW
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
GeELf1E77a7QeREQAREQAREQAREQgTQCJfdR3kIAACAASURBVBWeDMIPLLsnN7iMfh6lgJUhzFTl
le02soNbHDrYzK2Jaw2DIKUUnkR7yfauf9Tu6uJWp3AgW26d+j5kz+55364Hy4LThCccTr++2AZ3
82WYHteNCc/6xnft0hFbM2Ok9WjrPD396n2moqMNHrfQXns3tCQFaIs8rLp+zl5aNdUGdq+xoIaD
/kxFW+s3ZKqtf/X9OiYRiuXV8DoqvfCshvXh8Rds2vDeuWXFeRzKO9iQh1fYm+euW/gTJnHhSUzn
33rOHr63S3Y5an69tWjbz6Yu5mdWrtvuuaUUnqUrw80QntW5vWbHdy+xBwd0zPU3IfPod1B7PGAL
Nx5JXDpfHUf4t9LefXmuDe7V1lq37Wnj5++xi0X2XWEsOhYBERABERABERABEUgmUGLhmZxIczpb
9ck5O/TSBluxaJ7NmjnL5i9Zbdv2nLihj41UXjlte154xhbNm22zZs23lc+9bKc+KvZdytrU6htf
5dWztn/nBluxZL7NnjXb5s5fZus2v2Inztdh/qmddMEzVZUf24kD223dqqU2b84cW7D4aVu3abcd
P1c/YVts+UpZRwULVu+LlXbh1D7bvGa5zZ8722bPWWgr1223w2eK+9mZmuSu2pkju+y5VYts7uyZ
NnvuElu7+VU73YC2UxN3XUelKkNd6ZTq+jU7+/YrtuHZZTYP5rPn29KVf7LdB06bPmZbKsaKRwRE
QAREQAREQAQaTkDCs+EMFYMIiIAIiIAIiIAIiIAIiIAIiEABAhKeBeDokgiIgAiIgAiIgAiIgAiI
gAiIQMMJSHg2nKFiEAEREAEREAEREAEREAEREAERKEBAwrMAHF0SAREQAREQAREQAREQAREQARFo
OAEJz4YzVAwiIAIiIAIiIAIiIAIiIAIiIAIFCEh4FoCjSyIgAiIgAiIgAiIgAiIgAiIgAg0nIOHZ
cIaKQQREQAREQAREQAREQAREQAREoAABCc8CcHRJBERABERABERABERABERABESg4QQkPBvOUDGI
gAiIgAiIgAiIgAiIgAiIgAgUICDhWQCOLomACIiACIiACIiACIiACIiACDScgIRnwxkqBhEQAREQ
AREQAREQAREQAREQgQIEJDwLwNElERABERABERABERABERABERCBhhOQ8Gw4Q8UgAiIgAiIgAiIg
AiIgAiIgAiJQgICEZwE4uiQCIiACIiACIiACIiACIiACItBwAhKeDWeoGERABERABERABERABERA
BERABAoQkPAsAEeXREAEREAEREAEREAEREAEREAEGk5AwrPhDBWDCIiACIiACIiACIiACIiACIhA
AQISngXg6JIIiIAIiIAIiIAIiIAIiIAIiEDDCUh4NpyhYhABERABERABERABERABERABEShAQMKz
ABxdEgEREAEREAEREAEREAEREAERaDgBCc+GM1QMIiACIiACIiACIiACIiACIiACBQhIeBaAo0si
IAIiIAIiIAIiIAIiIAIiIAINJyDh2XCGikEEREAEREAEREAEREAEREAERKAAAQnPAnB0SQREQARE
QAREQAREQAREQAREoOEEJDwbzlAxiIAIiIAIiIAIiIAIiIAIiIAIFCAg4VkAji6JgAiIgAiIgAiI
gAiIgAiIgAg0nICEZ8MZKgYREAEREAEREAEREAEREAEREIECBCQ8C8DRJREQAREQAREQAREQAREQ
AREQgYYTkPBsOEPFIAIiIAIiIAIiIAIiIAIiIAIiUICAhGcBOLokAiIgAiIgAiIgAiIgAiIgAiLQ
cAISng1nqBhEQAREQAREQAREQAREQAREQAQKEJDwLABHl0RABERABERABERABERABERABBpOQMKz
4QwVgwiIgAiIgAiIgAiIgAiIgAiIQAECEp4F4OiSCIiACIiACIiACIiACIiACIhAwwlIeDacoWIQ
AREQAREQAREQAREQAREQAREoQEDCswAcXRIBERABERABERABERABERABEWg4AQnPhjNUDCIgAiIg
AiIgAiIgAiIgAiIgAgUISHgWgKNLIiACIiACIiACIiACIiACIiACDScg4dlwhopBBERABERABERA
BERABERABESgAAEJzwJwdEkEREAEREAEREAEREAEREAERKDhBCQ8G85QMYiACIiACIiACIiACIiA
CIiACBQgIOFZAI4uiYAIiIAIiIAIiIAIiIAIiIAINJyAhGfDGSoGERABERABERABERABERABERCB
AgQkPAvA0SUREAEREAEREAEREAEREAEREIGGE5DwbDhDxSACIiACIiACIiACIiACIiACIlCAgIRn
ATi6JAKFCFRWVtoHH3xgJ0+etPfff9+qqqoKec+79vzzz9vrr7+ed07/iIAIiIAIiIAIiIAIiMDt
SuCmCk8G5o899piVl5fbo48+esuZIhjIC1vXrl0NIVGXmzdvXi7MrFmz6/Jekus9evSwTp065cX1
1ltv2eOPP25nz57NO69/0glcunQpqruOHTumewqujBgxIvK/a9eu4KzZ5cuXbenSpda2bVv72c9+
ltv4n3Z94cKFPP/xfxCpP//5z239+vVRu6P9vfTSS3Fvuf/vv//+KB9Hjx7NnYsf9OrVK/KzdevW
+KWi/7/zzjutdevWdfrv379/lJbfO3Xtt23bVmec8iACIiACIiACIiACInB7E7ipwvPJJ5/MDdIf
euihW072xIkTufwgILZs2VIwT5988olVVFTkwiCib4Zr1aqVlZWV5SV1xx13RPmYOHFi3nn9k07g
4sWLEbM//OEP6Z6CK4MGDYr8h8IJK+Uf//jH6PyvfvUrw88DDzxgCD8XoQjQQhMCy5YtM8IiYEeN
GhWFe+SRR4KUaw6vXLkS+SXuxYsX11wIjphA4Tpi9sMPPwyu1O+QyQ3yVZcbMGCA0SbD7Ze//GWU
h0wmk3ceP9u3v1hXlLpeBwH6puHDh9vevXvr8KnLIiACIiACIiACItA0Cdw04Yl1kMExA1v2TVF4
IiIKuc2bN0d5J/9st1J4rnh6RWQFLWQpK1SWP8drpRCegwcPNkTW9OnT7dy5c3kYjx8/HtUJbWPy
5Ml518J/sCwOGzYsOoXVE/9Y3JMc9evtLa19rl69OvLTp0+fpCiKPles8EyKsF+/flEeXnnllaTL
OtdAAvPnz4/4bty4sYExKbgIiIAIiIAIiIAI3BoCN0V4LliwIBo0denSxViqykC6KQlPlhdiqSFf
WEHT3F133RX5YYCP31spPNPyqPPpBEohPLEoxpfehim+9tprUduIW6jdD5ZQ2o4LiPPnz0f/cy4u
ZAnD0l2uuSi8evWqR5XbYwnDz8yZM3PnbuTA07iRsBKeN0Kt+DASnsWzkk8REAEREAEREIGmSaDR
hSdLBTt37mzt27ePBtYrV66MBslNSXiSN18GnCYm33777SjfLB2cM2dOdJzmF3HCQHHgwIGGdWvk
yJH28ssvF/z4DKKIpZQsY+QduvHjx5u/00eacSGzZ88ew4pMvuKOuHgH8Z577jGW5A4ZMsRY3nkj
yzB5L5e8jx49OsrX3XffHVn7Tp8+nZcscZOfZ555Ju98/B8EF/7iAp/3IhctWpRjhphC4CV9sIel
pcTh1t5Dhw7Zgw8+WOdS6VIIz3h54v/zHiki8Le//W38UvQ/9eLLbN2DL9PF+hl3TNbQPmFDvLt3
787zAh+fNDlw4ECtazDkXVXaIe2ReNLeQQ2FJ++hTp06NVfnTBilhSPRQsKTDzBRX3xQCUebHTdu
nK1ZsyYvv6SJePb7hndb8UMfEnc7duyI4jxz5kx0nX4FazTlpK2mTQ542wnT2LRpk7GMPnRMEJBn
llnDmKWu5If477vvPiNMoXfCiW/Dhg2RX8JwL3IP0gaT3Lp166L0mFigvAsXLoyWYdO2yQf9AvXP
sm7+94mLpLh0TgREQAREQAREQASaIoFGF54UGkvOqVOnovI3VeFJ/nhHDoGXNNCdMmVKNPBDdLrV
Nkl4Ih58OXH37t2jgTvvFDJoRFAiTOJu//795n5YxtmmTRv7/e9/b7/4xS9syZIl0TtzceHJ4JM4
fTDvceL/17/+dXSNdw0RE4gg/GLZZeBdrENMuqDw8OSDY1iRB3cMzkmL83FR6n4o+29+85uorB9/
/LGfjsrAeeLt1q1bxMnT6du3by3BgxDGL3WCgOGYDVFXyN0M4fncc89FeUGkJDkmAnyZrV+fMWNG
FGbs2LF+Ktq7dZT3eI8cORL5ibc5PjJF2RGfoRDCktq7d+/oGixpeyznxS+sw/dWPVEXnog92vDv
fve7qC16e6YdpS2l9XaSdP3YsWNRukwmMMFDGyEffBwLR76x7NLeOd+hQwfjA1CeLh/Xigs2mOCX
iQ7aOfcN7dvvI67FhTzthrKTPvlFfJIOflu0aGGIPHeIeM4zoYGg5Zj3u5kE4piNtpo0mUOdtGzZ
MvJDGcif34Okn/QBKOqHOJlM8TQoiy+j9jR9T57kREAEREAEREAERKA5EbgpwjME0lSFJ3n0ASbW
h9DxERgG4QxuEdFpwhMrDINaBvCHDx/ORYGQ9aVyWB9DKx4Cga+CMqBESPE/jsE4VhUGoaRbjPDE
WsLgm3KE1i8EHwNo0ijW0ozFBtFHmKFDh+YslOQL0eIDa6w47jjG/1NPPeWn8vZe9+GHdBADCA6s
euHAn7IgookPa08oqlx4UieUF+sP9UI9FXIuPBH1xFfXhjAh/SSRRjpej+wR9FisERaIQMRW3LmQ
jFur+GAR6VDXHidhEYCcf+GFF6LzCB/ETujcEspHitzBzq2o5In/3b35xpuRsEMQcRw62i3pIcK4
B65fux5dxtJJnXINMYSVMe6KEZ7UF2wQU9SXi0m4IMxomyE3/Lilj/sndC48mWRBzLo1ljr1+zN8
bxauWI/JQ3hvECfLo7kWtj8Xntx7iELEpDuOvbzx925h4/czwtqFKX3A8uXLIzFNnPGPBLnwhC8c
WO1AX8AEDXx8RQbvdvO/x+t50l4EREAEREAEREAEmjoBCc+f/SwSPVQUwpHBdfwjLVhVOI/FBucD
29D6xMCWJcUM6NMsfm41PXjwYK5dYKUjbpbjJjkEDYPrYoQn4VnCGoo0j5MBLIPueDx+Pb5naSH5
YkCcFB/CmrISny9TREggvBBIfs7jhQ+iiTj5CI87BBLCM7701q8zeCcMS4vdufBELCRZkN1ffO/C
k/jqs6UJT0SAW++IDx4IIpaMJjnqmrqMC2T4+pdyQzYskSV+F2g+eYAgc8cSTtIOrXtr166NzrlF
0f36/t13342Ye3v28y48w0kTv8be2y8W2rhzIVbI4slkhU+sxMOn1T/tn/LF70kXnklLu+GJeCac
t0OEH//TnpOc+/NrLjxJN6n9Uyc++RIud/f2Om3aNI8qb+91ExesLjzjy489sE9cxSct/Lr2IiAC
IiACIiACItDUCUh4BsKTASbL4higujUIwcSSWc65+EkSnj5QDS1P8cpncE08oWD1AWfcAhKGxRIW
F4xpS20JR56x3iDQ/D1RzvvyxTDutGOWg5LXNNFFOCyh+Al/hmbChAnRufgSYJYT4xcrojvyxrn4
0lO/zh4LEn4QGu5ceIaWU79WaO/CEzGHoKhrwzJK2mkMEAGIaTbqB7+IbgQpdRB3iLO0JbiITMIT
FkdbJE6szu4Ql/hxizxiyZeO8h6lO9oUZcQyluZ4T5Gw4ZJnX2qbFsaXzCL4464Y4RkXuvE4sLBi
/aV+wyXhlCWepgtP/Cc5z4+LfOoD6zhxrVq1KnE5fRiP388s5U5zLjLnzp0beaHOEKOkkSaw8UMb
ideP9wM+yRBPU8IzTkT/i4AIiIAIiIAINDcCEp6B8KTyfIDHx31wvgySQbmLiSTh6ctC/UM+LDuN
b27dDMUES+uwlDEgTXP1EZ68I+biGZHCxjtyiMP6CE+35sQtQWEefeksywDdYS0jTZZIhm7MmDHR
+VCkIgDwi/Unzir8n6WJ4RLThgpPmBfjyBf5SxOeYRy0DcrOh2QIE//NTRfQLJ9OcohJwrkIZ+KA
/0PrImKGcz65wUQI//MuZ+jghagMGcaP+UgUYcMJj7qEJ2l4u4i3Vxd6hSyehYQnlj5fokq+2Mjj
vn37IutsfYWn/86tC0/yTtvz959Z2sskCKIxycJbjPD0n7rx1Qpexz179gyro9YxHz+ifGG7kvCs
hUknREAEREAEREAEbjMCEp4x4cngHiHIwB3rgw8SGbi7SxKeLlgJx3tshTZ+lsUd/usSQsUKTyyI
iA4G1bxHR1l4Fwyxw2CYcrEV48g/cRVyLpZCCy7+fdDvyyd5/44BPxanULDAlAE41wrx4lq41LIp
Ck/nBHPqlKWz4buV/tGn0MLoYdizfBYWtAUYIYj4H+EVOqzv8MCPv3cZilMEMOHY6mLK9VAoFiM8
+fAPccc/wNUQ4elL3BG1WMq57+DIxASCk/RKITzhSJukvfqyb2fFMuawTMUIT//pHLdis4SZ+Jh8
KOTcWhuuCpDwLERM10RABERABERABG4HAhKeMeFJpWJRYgDJgD4UoV7hScLTvz4ZWv/cf6G9L7tL
W2JH2GKF56RJk6J8J733huDBolSs8ESEwCDtfUXy5T8rA4/Q8TMShHVB6pZeX5Lofn3paH2XzDZl
4UnZ/MM+4cdqsHLzUxiFHJZpuCF6ECIs9fUP/Hg4X97JUnAXeyxjDh3iFTEfivzwetpxXcKTvPCe
MBMSbv33uDwvoZD1a75EN83i6R9xSgpL+4NJqYSn54k9kzJ8hZh3s0kjfCe2GOHp7dy/RswEC/Hw
Veo4nzBdfy83LK+EZ0hIxyIgAiIgAiIgArcjAQnPBOHJ8kMGkL75sltvAEnCE4sV723xddb6DPhd
5Bb6aAiWoGLe8fQBvFsaPb++r89SWxc4oaXX42HPwNqtRuHHVbjG8lysaeQZqx8De8QKVqzQMVBH
CFO+uMAK/cWPb6Xw5L1J/2mgeL74n7IzmUDbcS58bIr/N2/enBQkd2769OmRP/bw4h3auON3PIkL
P3yUCcbx9ubLmvkabn0cwrOQldvTDt/T9fgbIjx9aXiaWKOcjSE8Pe9M+rBKAGuuOxeehb4C7e/l
hh928qXW4aSDx8meNg9j6i1cxi7hGVLSsQiIgAiIgAiIwO1IoMkITwbnvLOWNvhsDPj+sR/EYuhC
UcUgP/wpBfwlCU/O834n/ll2m+QQp+EXbfGDOCAMojDJ6okg5XoxwpNBMn6TBA7iBMtpsRZP//AP
AjJJaPky2fj7hV5uF1G+rNDfS/TrvvfBe7hc1K+xxyoV/4DMrRKeCAVENHWVJCxoN75Elp/y8Lbs
P7MSLuUMy+jHPuGBCKIe/UNDfp09Qh5rpvvx9wtDP74ElHzGxb77Y3mr58/PuZWbn/2IOyzmLNcm
X0kW9YYITxdr8fuMPPCOJhM6pRCevJMcvvPpZfTflw1/fsWFJ9bj8ANdHgbGCGJEZHjf+k/gYOGO
1zf3IPUFw6lTp3pU0b5Y4ekflsoLrH9EQAREQAREQAREoBkQaBLCkwEawooBGe913SyXJjxJ3z+c
w4A67tKEJ9YwxB3lYFkhFiIENR8v4X08RBwD6HDAz2DULZXt2rWLxAbv9fHhET40w/JYllwWIzx9
sIwFEXHmljDO89ueDJSLFZ6U2d9bJd98RRdhtHPnzqhslDFtUE5Yyo1gwB9b/F1FZ4owotz4wcLH
B1sIe+TIEZs5c2ZkPeS6l4Vwt0p4krb/niL5ZcnkwoULIyGG4HTxBeft21/0Ikbvp6YtM815yn7J
FqbOjHcGk5wv1cRfmhBxizXv1bLUmbbOl2KZlPAPCyE+Q4fwpM7gfe+990Yf46HeWEbuopR3bUNL
nYf3sofLR/1aXUttfXIFCzpLiLk/2Hbt2pVj2lDhifUZXtwbTJrAlraH2PX7D07u/F7CCso7u/Ck
3SE4WULOOeKLf0SKdupfhIYZIh2GlNEZUZb4zwDVJTxd0CLSmaBL+3Ky5197ERABERABERABEWhq
BJqE8MSawrtjDOTCwV9jwyokPLGMkKdwGZ3nJ014cp0vWyIysIRQHt/4nwEpgiruSIvlkfEwvCuI
/2Lf8SRehIhbw8g/G4NtBH19ltp6HhEdvhTSy8KewXrS10A9HHt+sgO/fBAnFNuhH46xBGMJQhSH
aSDgiMN/2sbD3UrhSR6YFHAhFuaXY8QT+XOHiOZ8+CEZv5a05z1Q/CP+0px/QRl/aRZNeGO5TKo7
xBTiK14nlIk6QKC6OCUNNgQpH9HBAp3kXFTdiPAkH0xsePtHfCPsaK9bt24t2VdtqQMs9F4m35Mu
wjKc3HDhyc+p8HGuOEcmgph0iDOEDcKc+MJJBNKCLR8rS2JYl/AkDO+Oep7Zp01MJNWPzomACIiA
CIiACIjArSZw04UnIovBeHzwhVWEAX04+GtsOLxXSF7Sfu8QQZT07iFL6wjH+1ppDkGAlQPhxj5N
IIThyQcfO8G6gXXRB7WcR9CGzvOQ9JVUzjHIJm2sWl4G4iHf9XXUCdbbZ599Nsrf8ePHi4oCq05S
XacFpk2EzOCf5LCQ18U/KRzlIFycZZJfzlFn+I8vmeQadcPAn/xi1WKCIvztSY+TekS8JMXhfsK9
12uh9uLlL6YclBkhTJtiUgLrm7erMF2O4+0D8bV27dooXFLZwvDUVRorhBjXwt8aDcP6MfXPB3to
Z+Gye8LGP3KFX86HXw72eNh7fpL6EyZzqC/uD/qcpOW3ofAkPsqACCYM91Yx9YkffsLF+4BC5S+U
Xy8X9xMimLqsqz48jPYiIAIiIAIiIAIi0FQI3HTh2VQKrnyIgAiIQBqBuPBM86fzIiACIiACIiAC
IiACxRGQ8CyOk3yJgAj8GRGQ8PwzqmwVVQREQAREQARE4KYQkPC8KZiViAiIQHMiIOHZnGpLeRUB
ERABERABEWgOBCQ8m0MtKY8iIAI3lQDvj/L12qSfJrqpGVFiIiACIiACIiACInCbEJDwvE0qUsUQ
AREQAREQAREQAREQAREQgaZKQMKzqdaM8iUCIiACIiACIiACIiACIiACtwkBCc/bpCJVDBEQAREQ
AREQAREQAREQARFoqgQkPJtqzShfIiACIiACIiACt5TAN7/5TfvLv/zLZrf16NHjlnJT4iIgAjUE
fvOb3zS7PoR+79e//nVNIUp0JOFZIpCKRgREQAREQARE4PYi8OUvf9l69uxpW7ZsaTbb9773PevU
qdPtVREqjQg0YwI/+9nP7I9//GOz6UPo78rKyuynP/1pyalLeJYcqSIUAREQAREQARG4HQggPMeN
G9esivL73//eOnfu3KzyrMyKwO1M4Oc//7n17du3WRWxX79+hmAutZPwLDVRxScCIiACIiACInBb
EEB4PvTQQ82qLL/73e9k8WxWNabM3u4EEHB9+vRpVsVEKMvi2ayqTJkVAREQAREQARFozgQkPJtz
7SnvItA0CEh41tSDLJ41LHQkAiIgAiIgAiIgAjkCEp45FDoQARG4QQISnjXgJDxrWOhIBERABERA
BERABHIE0oTnK6+8YqtXr462Z5991m72Rtrr16+3Y8eO5fLqB1pq6yS0F4GmQSBNeB48eNDWrl17
S/uRNWvWGPmIOy21jRPR//byyy/bwoULbePGjQVp8HUq/O3YsaOgv/pe3Lt3ry1fvjwXrLKyMvEh
mPNwEw7OnTtnH3744U1IyYyBx/jx423y5Ml26NChm5LmzU7k8uXL9thjj9knn3xiH3/8cdSOaEvh
Rhs4ceJEXtaee+65PD+hfz/etm1bFIawfi7cM7A6f/58XrzN8Z8jR45E5Tt69Git7FM+ynzmzJla
106ePBldo21t3/5iIqOQ17p163JxnD171mbMmGFjxoyxiRMn2vPPP2/cn8W6d99915588kkbOXJk
tBHX6dOnE4PzwCIfly5dSrzOSR5smzZtyl13Jmn1y2Da0x89erTNmjX7pt3XuUw2wwPuUe5H3kkc
O3asrVq1yi5evBiVhPY0d+7cZliqW5vlNOHJ/Ua/yH1FP3nlypXomP+vX7sebX5cVVVlbJy/evVq
5I9jP+/X/H/Ccczej/Hv/7MnHrZ9+/bVAiThWQuJTojALSWQJjxfeumlqB/h/r5w4UKuf+D+974i
3j94P5G0D/sIDxf2IR6G9LwPYr9169ZafCQ8ayHRiSlTpkRfnPrlL3+ZOkDngchDiEbPAK6UjsEo
n1t2x+CTdHbu3Omnbvo+k8lYt27dGj1dRCdlHTRoUCQ+GSQ3F4egc9FXV54feeQR69KlSzQIQtRT
5l/96lf2hz/8Idr4eiJfa+M8IpwODnfXXXfl/OCX67/4xS/yzvkHO+jwuM7vXHm83mZp2yueXlFX
Npv0dUQW5UPAxx2CjGuLFy+OX4pEAtcYWMLW2bCHJdfCc3feeWdUT7RFuHFv8lW69u3bR34HDBiQ
q59aiWVP0F/cf//9kf/f/va3dscdd0Rx8Fte1DN9CAPs0JF38pImTPHLFzZJ3x3WIcIcPnzYT0V7
hCj3FNdoA6TPBxloc7S1+fPnR2XMC1TPfxDxzzzzTD1DNX3vCHvqHFYw43cc4di6detoYoMJHurw
VvbPTZ9i7RymCU8m12DK8wauP/7xj41z9IHci9/5znciKyj/c1+5SGUiaMGCBbnBJufZGGT6MXsX
sj5A5DrH1POePXtywlbCs3ad6YwINDUC9MVJHxdCeDK2or/mQz7t2rWzt99+O5ropx+g/+C+9733
C34tFKfeh3ifwZ7JSM6z+TFhueZxMGks4dnUWkwTzY8LTxo0A7Ikx6Cd6z5oTPJzo+fiwvPAgQM2
fPjwROvNjaZR33DTp0+3RYsW1TdYvf3zef2OHTtGN2+9A9/iAHRwWMLqcnSGCBy3pLnwjLc1LMzw
oJ0hpJIc4mfw4MFJl6IOj7BY8EOH8YBG+AAAIABJREFUhQbhwTXEW3N1zDC2bNnSunfvXqsII0aM
iMqH2Io7F+88cOIOljCNO4RbRUVFZCHkIYMjfUQvHLF8pjkeQgyYqfO4BZM65n4njiFDhuQJ2FIJ
T9LgtwcRTkuXLo0G655XykWbJf1wlYVfr8+etnozJqfqk6eG+qWOaS9MGoTWcyaYYMazAkf/zP0v
VzyBNOFJv8iEUHl5uR0/fjxaAcNKAQZ4tNeuXbvavHnzonuFe4sB4/vvvx/1c/jHnw/+mLTByu8D
RPwSB/5PnToVWa05xwCRe5QJQVY14J+VR3Eni2eciP4XgVtLgH44TXhu2LDBvv3tb0cTWYx7mKii
b+D+5j5ngstFI+fpF3hesoqKfoL+hb33Jx988EHUZ/A/4ehv6JvoP4jT+xfiIG7OJxkjZPG8tW0m
Sp2BN508AosKvdWOwQSC8p577rE2bdrkDQbJG4MRrFU0HmbC0yyePPBee+21ghYL4uOGoPw+sIkL
TwbI3ACkGzr+5wZhlpbGX5fzmyfuj/NJ3EnTz4fHhA/j4hozSXFHuSg/N2BdzsvIwH/gwIFReT1t
D0s6tBFY+TI3v8YeHvhxQUH67i9+njjoUNzRibz++uuJ5XA/Xh7EWlgXnncEEG0hTMvDhnvEB1Yv
/OHShCfX8MOPIzP4TXI3IjyJh/qiw37iiSeSos07R1kpM3VJZx06L7szD69xTP69nH4Nv4Xq0eN0
xj5w9PDh3oV5WJeE577k/kVs8TBwxzHnEApJLk144peHSdyxXBeOCLo0xzX8pE0eEA5LDX54t8xd
qYTnhAkToriTHoCkBWce0C6oPf34Hq5vvfVWrXZAeOqYJaj0ixz7vRvWpbcjr1eP3/t/rLTxa+6H
vftLe06E6dKXco8Txh0DA+7xtHRoG1xnY4Dijj7Ey+Pn2CNChg0bFp1idp36g49ccQQKCc+f/OQn
0YoM2g/1Bn/2/M9qA4Qn9cX/9EkMPImPyRP80Rawvn/ta1+zL37xi9H9Tj3yvPyP//gPY6UBeyZU
iWPlypX2mc98JjrXs2fPqN3I4llcPcqXCNxKAvS7acJz8+bN0T3Nayv0CfQZ7HmNjr6BPoNxPP09
zz8maJkg/spXvmIPPvhg5Je+iGcJ1xmLMZFPPLwK9vnPfz7y6ystGIezQgML6xe+8AUjfVk8b2Xr
SEibgTwzyb68jQbEgLGQ9SAhmpKfcuHps9osIQsdQo+8MjObJDwZGHEjIF5Zssf+vvvuyxsEER+z
Jwx0iYsNf1gfHn/88SheT5N3SLkeLrmDEdYFD8ueNF28ethwj0WNBy43TegIx80XOvzg161w/fv3
zxusMzPcoUOH6B25tm3bRsceHqGJeAzLT3gERJp7840388pCecIllMuWLYssTl5e8saAOiwL7Ynr
DN4RFhwzIMQhNp566qncckeuMXCkE0EQUI8eN2HDAfD+/fvt7rvvzl3HH2XmPM7rx8OzL2Qd7t27
d5SPKHAdwhM/DObTLEk3KjzpfMknloVCjuWDLOf0slGn9957b64t0oZh6+0kjIu6YRknbcUd9wxL
FAmD+GYZ8KOPPpo3sN+1a1eUHnuWkZJ22sQK9wHXw/exuf84hwggv94GyIMLhDQRWEh4ehnC/dSp
U6My0PbSHJYw2kvYpuJ+qQ/aYLhsthTCkwcqnBHhDXEsgW/VqlVUb+STPps4qRdEv7cP3/MOK47l
55yjTnr16hUdM9DH8d4N/li+TDshTqxZpBW6tOcED/XQYf2mPuhDqXfSpZ3xLj7tBIu154/+KRST
3K/0KfQJbDCbNGlSXv8SpvXCCy9Ecfn7tdQfbbk5vRoQludWHKcJTz4I8v3vfz8asFFH9COISRee
9J9z5syJBKMLUkQlqzg4T10QhiW5o0aNiur+05/+dG7S4Utf+lJ0jDClrgmLf+49njm0S+KQ8LwV
rUJpikD9CNCnJwlPxi6IRcaJ3/jGN6IxOM8q7u8f/vCHkbCkD/jsZz9rjD/xS3/Ac43VEPjjWcXY
GJHJ+PW//uu/ookuJi+ZqOK5QvxMYtEXMaH/9a9/3ZYsWRKNkehXJDzrV5+N7pvKZHkZVgMGZYgm
BgQMAHgY3CrnwpNGxyCZgXboECYMvngQsg8tnjROGi/nfLadxsgyHixiPNBwlJdzDHAYjNPoMfMj
OglPvO5c2LjwJF0ssXwYhIE/+URAEeaBBx7wYLX25I2bNLR8ECeDNLZQtPr7gSwlwCUJTwZazBDx
/o2/U8aNzQCQJY4uFkgDywAD1ySrEfFTfiwN/u4Zx15etxj5MigG03zcg3aCUPABvQtP3kfFL3F4
O2IAClcGmIRHlDApwGCUOGBDHqg3GHl5yBuik86F8pAW1j/EIKKP/0mDtFgiTFwcU5dJDr+wRlS4
o52QZpJ4Q8TjP2xjHo79jQpPhBppMtOf5rBwIgooE5YC2h2TMNwTvC/hbJkZRFi5oPD4EHek4W2I
CQEvOx0y7Hbv3h3VAYN8dy48aS98tAWBj/8kx1IW8ojl0x1hqAscD6RwAmPatGlRnvze9DC+p6ww
rctRdga1pM39m+ZowzAg3bockwD4da6lEJ6IM+IMLal15SN+nQcq9zQi0euBctEmEV70abR5Jtdg
x7GvcnDhySQVk0cIUOqdMNQN95F/QIy+gUkI7utwCTj9MfXCrDVhsXC5NTvsT8gjYVkxAkPaHefo
F7mHuae5x+kbYOJL0OkL+J97gfjZKAN9nvdBzoQ2zn1KvYdtluv4RxTJFUcgTXhyP33ve9/LtS3a
Cn0PG8c8I7jH/X/aJxvPHJ6J7hexSXugb6LfYXBJP/bd7343GlQyCcVkB2GJl+c8bYc6ZpPwLK4e
5UsEbiUB+u404cm9TX/AvcxEFH08z7DPfe5z0dib5xIWSp4t+OVZQb9Af8BGP8Czk/M8m+h7iA/j
06c+9aloHM54iHE85xnr/+hHP8qNywkv4XkrW0dC2gwCqJjQMeCgIcWtjKGfxj524Uk6PODIj1s0
GLAy6EAg4miQoShgtp3BVLxczJ4g1Jgpx/kSPQZmcceAhnjdxYUn5xFPcceyScRUIYf1yj8+gz9m
Zli6xBYuF8QP5XCXJDxJywfJ7s+XCVO3oeMm5gYNBVd43Y8ZvIbWGToDhCSD/LjzQa0PXF14Jn00
B+FJ3kIHZ+ImDXceR9hZJLFmwB22C8IX846nW8tDK5wLTwb2CAU24mdJrluZ6BiTXDHCE0svQpON
TpS2S1ukPhBuaY56YGKBugsdA3jK7pzdwkg7DR0PAyaScNwPTJbEB+tc8wGgL5d14RkyCuONH9M2
GVy6Y0KHexhH2cN2TB0lvRPqYYsRnrR5hC1pUvZCzu9zRFddDmtN2KZKITx50BInQupGHeKOOJhg
Ch0CLXRJ73j6PcrETuho34gBF6h+jTixPIV9VNJzwpeKh/cpIjPevrjnuffD/oj7mfLwISYcy4z5
n0m80MXLx/9MOiJm4iwIh6BFyMTDhXHquIZAmvCkj6LfY+k2dcVA0cUkfTX9ils26Vfon7iO8HRL
KOe/9a1vRf0ox96GGF/84Ac/iKz0WERoG4QlXibB6Rs9LQnPmrrSkQg0VQL03UnCk/EDfQf3Nn0E
q8ZYEcMxE1uMxekXuM49j1+W0jKO4dj7FcbuLLelvyJOnv+Mx1hKy/iJ8Ozxz3MJvzwzeQ6whc8o
Z4gVleW4pXb6Hc8iiFJRCB8eGAxyET7MSNKQWB51q1woPONCkxlV8udCNBSeNDIG9Fg3CBffGFC5
SEXQMkhJGvi7ePPyJwlPBmzkk5l8PqTCQ5SZeNIv5BiI89EGHsY4BCcDXDaOcVxDkOHXXZLwZLYo
7hAqCKh42fmfgQSioJCLC0//yi2Wsbij02Dg4MvbXDQmCRb8hcKauJjBCgUL58hnvP3RiVAnsGZw
woy8L8N2ax5hixGedELEHwoBT5Pz4cYAl1l4X9IbLz//FyM8wzg5hgWWcZaTpDkGfAgD2mmSY9kk
PNzxXhRs3LkVye9jykDalD/eNrAO0259+asLT7eYe5xpe9o9ceOf+4n7yq36WG25hpXMBZS3l6T4
ihGevM9BfuPWsKT4fCKt0NJrD8f95nnlXCmEpws/Jjwa4rj/KbP/hAws466Q8PT+xsPwigX3S7wt
8D/1GU688Zzg3uU5wcaxr95gqZM7hGfYZ3GedwFZ6RA68gJnn/RjwoOlvkzEcJ9jCSXNuPM27JOH
8ev+bAhFbtyP/q8hUEh48k4V13meMNHrlkzqhb6GgSNjBwZ9PnBkDEH9uZCkHX3zm9+MlspxX9MH
MGmG8GQwST9DX0ic1BmTQ7z3RZpYRyU8a+pKRyLQVAnQl6cJT/oRDCQtWrSIlu+jLxCVPI+/+tWv
Rq928BxCTNIP8NxhLM0zwvsR9oyx6Y/oawhP/8HYjNUTvB7CijjCEz8WVPoTCc8m2mJYfsmggAcI
A0UeFDQgGpIPWG9F1kPhSfo0OoQYjYnBTWiRC4UnDZK88zDD9J60DR06NCoS4jTNOlmX8GTAy8wM
g3+sWLBC1CGi6hKe/i4lwocHMeICAUKcHHOOBy7lQDy4K1Z4womBQlLZOcdNXsjFhScDS/ISCrww
PPXBTY9rDOFJZ4LFjBl4Bqq0U2bF/b3HMF/FCE+3lFIP7lx4Uu90gGzMiMEyaYDv4dgXIzzJs8fL
ns6zLkc7gHvaMlLu3dByiGik/bgYQ6AwkHfBwQoG4kNMp7UNhBauvsLTLbAsv+ZeoP25lZr6o48h
f84eMZrmihGePLS8P0iLx8+TD+5J/wiNn2cPG/JMv4HjHiNerx8GwjCLWwXDOJj8Cfuj+M+puDWa
ttUQRzkQdf5eOXWN9Y/25K4+wpOyEkdaW+C8tx1EKnVI+4g/J0ohPMk/kxb0ofQnMCd9Jl0YPLhj
lptraasPfAIkbjn18NrnE0gTnvQ53BP0rdyzTCTSR3Ivcx6rAhMpXHfRyTX6fyax8MP/tFnaP22E
ZxnPb64xGcRgkuvE5f4ZTNJPMVjlWMIzv770nwg0RQL0yWnCk4lonve8N04fz73Oc4W+gIlEVpdx
n3sfwISm9zXet7BnPISoJJwLUp59TFLSR9G/0OeQHv4II+HZBFsLDw0aTHzJkg8im5Lw9OWRWInI
M4Mfd6HwpKExYClkUfFwzMQz8AoHbn6tLuHJddKJh/UllB5P0p48suSRZblYDpg9doeQZbBLPIjY
cNBVrPBktjhpWaynUdc+LjydfZIVk4EDIt+tHI0hPGmH1Lkv5/X8+zuS9RWetB3iS7J4MnB1R+eF
gKqLZTHC099l87iL2cMWyyGWhiSHyPZltFyn42YihbogLEIhtJa6AEqyXMfjr6/wpJ0iGLg/Eby0
1dDRppg84h1KLFs8FNJcMcKT+45JCMpZjGOVA+00LkiYfKCOyR/ikv6A5ZruvO3R1pIckxLUUfiB
qLjwhA1ikfuZB2YpHBZClllT37zf664+whMxmfbBLI+PPVy4X+ITIG5JLpXw9DThxeDD3wMN343l
GnwZhCS5mTNnRnnlXpCrm0Ca8KROaasM5LhXfRDHnnM+SMQPg0jOs/cBYRiOYzbqji2MizB+nuMw
bo6TJhjo13jGyYmACDQNAjwfkoQnY0fuY+8f2NN3eJ/B/+Hm/QPX8Rde49jDhXvi53/C+nn36+cY
z8SdltrGidyk/92qRuMInVtampLwpAFh9aKBI9poYO5C4ck53vFkEJw0+AjD+btfST+4Xtc7ngyu
scDFHcKlLosnYRhU8fDkRWkEsDvCsxSWayxDDV2xwhNRTB78fb0wjrD84fnwOC48CcMHgLCuxB3W
IuqEyQpcYwhPX6oYtzwihEm7vsLTl36G70O6xTMUnpTHB7JJ7wg4i8YSnsTP0lneZYwLFreax9su
H/GhrhAlCKqwDVCPiB8ER5IL20Z9hSfx8U4g9yJphG2aa0ym+LW09D1PxQhP91vsHtGNQGSpfbxf
YMYVwcmAFmtw+C4kfjnPEngeZnHHvUYbDCcW4sKTMIgn/LEEPikeVjww6VSoz2WmN+7oR/wjTlxD
eLLsKHR+/4T1y3W3PictIw/9MkFD3uNfusWyxflSCE/696TysarB3xUOy5R2jF/aPfHJ1U0gTXjW
HfLW+ZDwvHXslbIIJBHgOZAkPJP8NpVzEp63qCaYKeBdQ4SGD8awIGBtoyH5IIhzDLziQqgxsx1f
akta/D4Y+YqLg7jwZOkODyeEmi+nxEKCdZHBHeXGMThB5CHSGMAjbBBOLMHFKkO87uLvePqyxdAK
gAAi/mKEJ0uJKAtbKJzcusB5/ISuWOGJiEJ4MwBFZFFO6peljpyLC7gwDY7jwpNzPnhFkLNcAssR
YgIrUvgV38YQnr4EGVHlA2IEFUI4zo92igWZ/IUCIiwj7RkRErajNOFJW2Hwi5hj6VeSa0zhiWCC
MZZNJkpoxwz0mfRgciJu8fP2QxtE5MSdCyC+Zu1WI+qMF/7Dj8nciPAkX96m49Zp2rhfoy0VcsUI
TywhlB/xVKzjXkVgUl+8WkAciCr6FSyH5I/luHHRwrJertG2sHyypAerMRNcnOc9W2+X5CVJeHIe
6zP+yTf3jqfPefob8oCVPclRR9zTTPS4QKOuKQv5cEe9Eg/3jMfl926YR/zTthks0Lbp632WmEkW
rOm+zB9/+El7TpRCeFI39E1MJnk+WZmAiOTDQ+5o/wwY0r5QTB2xyRVHQMKzOE7yJQIikE6A55qE
ZzUffVwovZ3krmDtZBCLyGLZFQMOBmU0JBeeDFAZ/N7MBzoDYQaJoWPtNvkMrThcjwtPzjHwveuu
u6JykHfKw8AmXLaFP0QYg03Swg+ChPcVWarLu17u4sKTwSlLGombwR9x854XwowluHU5BlcM5ggX
d9QB13wA5tcRnixXdMdEQGjt8PPsGahiLaNc5JE9lijEd3xgHYbjOEl4cp4BNdZmOLEh7rG4uJD3
dLmWtCyXfJB+6BCT5Ct0LgK9/XGN5eAMqHlBHWa0RbdGhsKdQbDXJdatNEd4BI47TzMUo34NcUKc
4QDfr7FvTOFJ/FiamNBw7rRRxD55TnK0Q/zGJy7cL+IJ8YMfbxsIW0SuuxsRnogChAL3Tbzt0uao
Z9J0wetpxffFCE+31vkS73gcaf/DBIsrDJ0nDGDGZBfnwskkj4e2T7vzMOwpJ/2UC8HQL9d9FYCf
Z8994felx0X63Afxfi0MB0/aJu/s0haZWGBPvsNwiEUX0UwqIibThCfxU2e8V4mll7qDC+XiNYDw
voYbzwnea/fnBPcyZSiF8KQfZuKDvpN8wIQ8ITDDtoSg5nrSB9KYXCMcVmi54ghIeBbHSb5EQATS
CfAckPCs5iPhmd5O8q7wYGfAwjs74UM+9MRgMW5dCa831WN+F5MBNdaBQoKL8mGBCAdxxZQJKxjx
h7+/WUy4m+UHcUK5sH4UKn+x+aF9MKBG2N/s9sByU8qCJbNQWVi2SHuOC4KwjAyaGaQW8hP6bwrH
tOEbaaNJeYcfKwOIL03AJoVrSueYcEjrr+rKJxZxVkPQjsM2gKANBVc8HiZ0uN/pK5OWzMb9p/1P
P0Pa3EtplvSksJSXtMlD/H1V9+9x17Wywf2zR4CSH+6btPKTNtfJ841yD9NMOqZP8XrxVThxf/S1
SX2Pv7tNu5YrjoCEZ3Gc5EsERCCdgIRnDRsJzxoWOhIBEQgIMCjHcsLSRTkREIHmT4CVGs1t1v1W
U5fwvNU1oPRFoPkTkPCsqUMJzxoWOhIBEYgRYJlmu3btGs16E0tO/4qACDQSAazALD0u9DM9jZR0
s44W4fm3f/u39qlPfarZbH/1V38VvSrQrMEr8yJwGxFAeP71X/91s+lD6O/I709/+tOS14KEZ8mR
KkIRuH0IsHR34cKFDVoyefvQUElEoPkSYLk4X3KWqx8BvujMawel3vgJqr/5m7+J3rctddzEpwmG
+tWzfItAYxLYuXNnyfsQ7nO+ofAXf/EX0TdXGqMfId+ldhKepSaq+ERABERABERABESgAAG++v53
f/d3xk/uyImACIjAjRDgmwJ/+Zd/GX0s80bC34owEp63grrSFAEREAEREAER+LMlIOH5Z1v1KrgI
lIyAhGfJUCoiERABERABERABEbg9CUh43p71qlKJwM0kIOF5M2krLREQAREQAREQARFohgQkPJth
pSnLItDECEh4NrEKUXZEQAREQAREQAREoKkRkPBsajWi/IhA8yMg4dn86kw5FgEREAEREAEREIGb
SkDC86biVmIicFsSkPC8LatVhRIBERABERABERCB0hHYsWOH/f3f/73xMzdyIiACInAjBA4fPmz8
bu+pU6duJPgtCaOv2t4S7EpUBERABERABETgz5VAmsXzypUrkRjlZ1a0VTM4e/ZsKotC18Tvz68N
3W7tISzPhx9+aJWVlXldpiyeeTj0jwiIgAiIgAiIgAiIQJxAmvC8dOlSNLhkgPnJJ5/Y1atXDTHK
/9evXbeqqqpozzHXOM+5Um2eDvklfc8D6XHseShVesXG4/nyclN28gMb9knx4Nfz6+Gdl+89Po+L
eJPiSjpHGPzjPJ0kf411zstHPgqlDyOuf/zxx9HemXkYLwdlYeM6eeaYaxzj1/1xHMbp6cPUuRYq
M34IQ36IJy2Mc/X42fsxefD8hfnhOuc9v+zT4o/nEX/u3/fOw9OKh0n738vlZXCmxMvmdUF+SZf/
ceyJ08/7NQ/H+dBJeIY0bpPjvXv32oqnVzTJ0rz88su2cOHC1O2ll16qV75fe+01W7VqVS7M8ePH
o7i5YXAXL16M/j958mTOz804OHbsWF4+bkaapU6DwQR19e6775Y66jrjO3/+vLHdakcHOXnyZBs/
frzt3r37Vmen0dLnwUBd03ekOWYx8fP222/neTlx4oQ98cQTNmbMmIjTc889Z7QdOREQgduLQF3C
8/Tp09HYY/78+VFf4gNPBqYffPBBbsBOf8O1tAFwfc/zvCdOtiNHjtjy5cujbdeuXVGaDMDrG2dD
/ZMmfSZ7Ngbj7Mkr+3379kXPuHg6+KMcFy5csA0bNtjKlSsj//jjmvvfuHGjwZv4OB9ecz/xPfHi
H/bkjf+LCRePpyH/kx7pM0Y6ePBgTrSEcXJ9zZo1hrUMVpcvX7a1a9dG5+DCdeLhGmV4/vnnjTEe
x36O8uHPeXONdrh161Y7evRo5Jf/Pa4w/aRjwp85c8YYcxKG/5PYcZ6NZynt8JlnnrHXX389yhfh
aJPLli2LzpNn8of/Q4cO2ZIlS2zp0qXGuCMp7qR84c/zQtlpFzyTYeYsSDcpbHiOeBh/Y3EnTyyr
557lHG2QsqAr2BgTUh8ck1/KQ7qEoy44v379+mgVhLMKe0IJz5DGbXI8Y8YMq6ioaJKlmTJliv3s
Zz+zP/zhD4kb1+vjnnzySWvVqlUuCI2e+F20sIac/3fu3JnzczMONm/eHKVLx9lcHZ0s7Bhs3GzX
tm1ba9eu3c1ONi89Ou9f/epX1qdPn0h8IqxuV8cDmLqePn16ahF5eOKHBwyOh8zIkSOjc+Xl5dav
Xz/r1KlT9H/r1q1rCdTUiHVBBESgWRAoJDzpQwYMGGB//OMfbdiwYdHAlIEvA9o9e/bYvffeGw2Q
fSAaDnobeuyDfeKZNGmSffOb37QOHTrYV77ylUiscL2YwXdD8xGGZ+Dfq1ev6D02zpM+jGCC4Prl
L38Zia8wDMcuFhCV9K//+I//GIlQOLLhh/JwDfHqZfdr8fjC//FL/EzId+vWLRJr4fWbcQwH8srY
beDAgdFzJJ4uzxbaC4YE/CKARo8ebV/+8pcjEcc5/Hi9Dh8+3F555ZWobMSPMOJZ5O0Pfy7EHnro
oUh8Eh6/bPiL5yH+P2m++cab9r3vfS96thGec3F/Huddd91l//d//xeNY7797W9HAo5rjM1//etf
249+9CP73e9+F4lZRPjXvvY169u3r/Xo0cPmzZtXVHslfeJkz0Y5vF14+fxaPJ/x/2GUyWSi5zvx
kHeYzp071+677z774he/aO3bt7f7778/Erbjxo2zO+64w/7hH/7BhgwZEo2RSPM///M/jfEb4akD
zhF36CQ8Qxq3yXFTF54///nPS0ZawrNkKGtFdCuF55w5c6IOr1ambuIJZu15MPCQvt3djQhPLMAM
MpmZDh8szJQyqGLgICcCInD7ECgkPLFEffWrX41ElQ++6RcQAXfeead9/etfjwbFiAnO84GR1atX
R6slEA4IAwbJTHAhSBh8++CeCdyZM2dGA10sL4RHdGEhGjt2rLHK4vHHH4/Os0KF9Bg833333da/
f//omFUYDJYZOGMVxTH4xjKDYF68eLFt2rQpGsivW7cuyjfpYO3BCoRfBAL9GmkhhjiHH+IYNGhQ
tOqDcpBvBuz//M//bIMHD46ukx5c6GsRfTxfKC/hcViJyC/555lD3DyD//d//zdKywUGH3ZCPD3y
yCORAOA8cSBU4UgZCUd4BvjPPvusPfroo5EgJ2/4h+1nP/vZKM+kSz4472m4WPE9XOCIqCd94mb1
GoKEjbTxS53Aa9SoUVH+yBdxwvvBBx80xBgWQ/gwTu3cuXN0njxTX8TBihpEJmM72pQz5jrPFdLw
fHKdeMkXE8X45RqTxP/0T/8U5QNjBPGSF/xOnDgxsnhyjrrASEF93nPPPdF54mDj+YaIYxIFy6TH
PW3aNOvYsWOuvUaVF/whffxSl1OnTo2Of/vb30Y8KHebNm0i6yFp0z54XlLenj17RlwIT1mJI8nB
3ctEm6YuiYs6wHADe+rfy8wkB/FzT3DPEW9S3Jz7zW9+E8VNHhDYoXWXSfgtW7ZEYYmbDeb//d//
HVmm+Z/y0V4PHDgQ9QOf/vSno9VP3sa9PBKeTuI22ofCkwZMR05DoGHcaseNUR/hSYMl79wASdbD
+gpPHhwsgeChkeZgRpr4KyQoNKTTAAAgAElEQVQ6uFFZskHe4l/nSrN4UgfeGaelz3WvKzoT8uEW
XMJwc1OndOZJHQh+iGP//v1RJ83DppAjDcoQjy8uPN0f+zTH8hbyS8fiZQj9hmXjAYZfOq+4wx9b
6CgreSSv5C3u8E+HiWOgQNzkxx3XqVdmLdO44Zdr+KWtMsPHMVvoKBvxkEbaFx4J4wzIT1iHYVye
nvtloEa8SWXED/EShg0eHs7jJB3CUwf4Kcbx4KqvxZN4k+5JzjMA4mErJwIicPsQKCQ86UMQjN/9
7nejZYQMiumrGLQjvv7nf/4nGuDzrOQ8S/U+85nPRJZJxAvneGZhHUIgMPBFXNG/MdjmdQf+//zn
Px8JQI6xwnzjG9+wH/7wh9EAmD4ZEcKKqkWLFkXWF4QVeenSpUs06GcFC/7J77Zt26Lw9PVYoFi5
QT4QBwyyeXYy+YjYQTAzyMa684tf/MKGDh0aPW8Qqd///vcjIcmEKWGImyWW//qv/xoJQZYr8mxi
I49Yt3hueH8+YcKEqLysOEEE8YzHL325C0/8stHn8moD58kj53i+IAx69+5tLVq0iMrKOAZxi7hB
QJFHXpWgfAj1z33ucxFTRLPnjb2nwx6/TA586UtfioQi4y3qk7gRi0899VTUz1Pv+H/sscfs3//9
3yNxB0/qiDioCwQb+aNuqA/KCh/qlfrgOvEiPGGA1drHETzHYEIZef6TT87BmnCwQIwRnmvkC2FN
ft0SSp3ADUsck6WExz+CjHhpo+SD9smzF2s57QKGjCMoH3lA7BJ32jiCOPGL8MSCSR5o+yyx5VrL
li3tgQceiMr/hS98IYqnrKwsqhvyThowY4s74iWeH//4x1GdU5+sDKNstBXyilWYMhMe/0yAUA5W
JP3+97+P8k8acQcPyo+VkvyRN1gTB9d4nrNMGcf/bIxVKBttEn+Uj/uXNBkDUIfUUbwsEp5x+rfB
/y48ET8sQ2VAyYb5m472VjpugGKEJ42YTpxlCZ5/wjG7GTbiYoUnDwFmJD0uOhp/qDkP77DoBNwf
M2zMkJGf0HFjsyTC/bFnZsyFTpLwJN90bsSPYEhzXKczZebK42cmipkxljnycPTzxBfPGzPCcKOM
hKOzoU3QUYSOB0jIhDh5KPPwx7nw5MHDwMDTZM+MYhgf5SEvoR8egPH3IuHJDB31SH26fx94eP6I
i80dD34GA5QJPjz4edgxkeCO2VMehtQX14mb9BgYsNSa5Z+eHg+EpM6XuOgo3Z/vqVt3zP4iSP0a
aTGLHheWlI9ZdAZC+GEAlORod8S1YMGCPIaEp/PmIe2OQQJ+4UFdcUx+cfhjwEaZqXP2MInXgccV
7nlwEVd9ltqG4ePHzGx37do1flr/i4AINGMChYQn/RgDUEQDAo2+mD6WvgVRQP/tg2r88kymP6ff
5H+eYwykGdTzfOD5QV/Pc4Y+jnfgeLYxsOXdR57fPCO6d+8e9Z0sX+QZyRgDQfNv//Zv0cCfyWNE
47/8y79EzzGeG4guziGUeFaSPmm7JYu8kmfSJY8IX/peLDjkjbHUd77znWigzTP5W9/6VmSpJI+U
l2c9AuWnP/1pNLEalpvBO2KZ8rJRfsQ6YpBw+HUeCErScesq/hnc449nO+M5/PN8o0w8LxB3MGIs
wrOWfhg/iFvEMnHA5Ac/+EHuXUePlz0b/tnzTIGPi0LSJm/siR9GpMmzhjDUCXzJHxZqVsRwnjLy
HGK8Rt54bjMm4TlMXFhJGauSnpcPQYOFjrhIk7ogHZ595I1zxM2edBhzcUx7IX6Yelzul3AINYQn
10iPpaFYoCkHohkxD3cEHOMSJg3CeMgPQpzz4RjIb2vSYuMZyAQDS6VpZ94uGL9RpyxrZWxFuRDj
jA88LOkVihuGpM89wjuWcGAjbwhExCllJR7Yc18wnmZFAsKadOKO9H7yk59Eqwqw1CK8mcAmHq6l
CU/Kwn2PH9KnzIx3GCPRPjnHFjoJz5DGbXLMDc0NygwHDYcGSUWzVIJOlONb5XgoMMCl40vauFFw
dOAIBUQD59h4gZmw4ceEihWe3KDc2KTJTUKnSFzMgLljdocHCg8SbhS4IQbwx0PBHUsX4EgHSz7x
C2cegOQRFxee+KETo4Osiz8PWx4qzBqRX6yqdFZ0VKTJ/3RiCCzyRkfsjvSpex7qpEmnwYOOjo12
4Q4G8OVBy0MLvjyIEVgIXpwLTx48zo6HKct8SBerqzs6bWZVyRsdEFZMhBF5Jh/uyBt5oROkQ6TT
ZXaS+F544QX3Fg0oXHgSHw8L8oZ/HA898kH7cIfIol54SPKgxjJLONJjVpN6o07hQHo8NJMczCjb
iBEjoochxy5w6UgJS1kpI/FR15STh5e3X+JFOFLfLHOhbaVZRnkIECf1zuCHuqHeWUbmotbz6cKT
ciFqfSUDcVBG6pNzOOLg/oAJs7OFHO2JPHB/wjZp87L7O55hfOSZMAwUaJekycNOTgRE4PYhUEh4
0hfS19OXIAyxdtCXco6+HUsKfRL/szH4p7+i7+J//NI3u/UQ6w2TfJxnuSgWUN4pI17CMqGHkOI5
g0UN4Uk69D/4o39EVDDQpv9GiPKs4bnKc53nD88QxknkAfFDHsk/4wCemwgTnsU8AxC9xEd48oZ/
wuGf5xDPf8QKk7Cc51mJBQmrEP/zbGBPvAgXysWzjX6TMrkgID7n5sKT/pVzhGfj2IU2/1NuRAV5
Y2OMRPoIT54L1A1lZzkp/qkHePLM93wRZ5gGYfDHM5v4vd7Yw4XxA89Wys2zjnhYJsxzmrDw4bmI
X57lpMcYCNFEuuSHiW/io72QDunxjCePWDGdJf8TJ89D6iLMK+EZo/Acxg/XsJoiXLnmYTnP/7Q5
xkecZ4xAfphMYExCmyFv+GNchHj094SpK+InHFb3NOHpeWO8zfMUCznjN8pFeCY1GE9xDDM23kem
3Xr+/Xy85yBt8kGc1CuTB4wrOO/p8uwlb5SB+GjfsOVeYcKDMuM/7jhHm4IjYakvF/mkmSY84Uxb
I33yjeD3OiJO4mILnYRnSOM2OabzZnmID9K9WNzUDG6Z+bpVzoUng9ykjU7TXTz/nOdl/dD6VKzw
DAWKx8+MLJy4WdwlpYmgQTy4I31mc8JwXOMmdxcKT246wtBJI1TrctQR72SEjlnkeF4RVzBEjODI
D2mEAtPjwA8dh+eRByedEQ+70HlHwTkXnnF2PARJl87bHdzonELHLDH+XAhxjTRnzZodeos6JR7u
4XkeVC48yXM8PSIgvTBN6glBGDoeJISlY3RHGB5gXCvkmL3lgRC6/8/efcfcdlR34zcIwh8gyh95
gxIIhJbYGFzAuPeCOzV008FgGzC9V9M7iN4MhhgwpvgNmC4gNIlqRCeIUESUIggBhUB+r7J/+uzk
+7Du3H3Oc55y733KjLTP3nvKmjVrZs+s76yZOdqfjlwnW13KSlGKMxi39ZiweidzPFKGWqd9Cwto
DfBsgWRAIeDfOnLMZEIblnfKjnwWuaaAJ5kkLSXAjGt3XQJdAltLAvOAp/HHBBuwYJzPeMOfIhwg
QbHX5wGPxlF9qXfx0D/44IPH/kM845P+38SmpbImgPfee5/RUqR/tiTQyiOgkMLNWiXv7Os08WcC
EchkfaTcmzCk+KILoAGTeDaZZ4IaLyxxxnyAyFJV1jrKNMVdH2+1EDp41jfrd12UcOHGfGMiJVzf
nAlC/vJCBw1jkXj29xlbAGR9O97wgTaa8hZPev5kZswkL35kJZ4xBF/yQMMKFpPVwJ+xJMBTf09e
ljtb4VTBLvpopl7Ij15hUlEZ8SEPVm1jAZAPpPA33vE3HgLxgKa8WdJM9pM/IAcY4ofsjRXqUJ0l
X3mjo574kZPy0B/oI3RZcRJGZ8qyY/wD83jSHulc6ilyAzxj8VRuoBAAJmv58UOXzIE0wFo744cO
/cfEgTJMuciNrE2OoGvZMb1MGQB2BoLwg6YymbRwCBeeU5aWPjlI53u6yU1uMrZT77nQUq9W5IUP
MtYuIvu0u5a28qlndYqeJcmLAE8WzwBP5QvwRAPNXDW/DjyrNLbIswZO+ZtyOlMNf0+5AE/AbOqq
H7OPB5CwVt4HrDPViZrtiVsUeJq9al3AgnucTtAgJ0+8Gggo1Tpfzoet85sCd6HhHuCp07EME2is
AKzGbZ91ohWAC5ef2cPqdPSU/QBPg5B31lf51ssALswgyBnkdIzzXIAnutXpUNCqlme8ALMOaXD4
gjB8hJ+kJ7tYhePnrvOvMq3AUziaOlT7Qch2ao8u4GnGtTozi3jQYVdn0DZLPs+1wNMg1JY76dE3
S67txAGe8l/ORZ5m9Vunzcsz4D/Ak7yr810rf63zPFuKo7x4NGhSGnKZjecMtvLBvzYydZGXOFPA
04DJgmxA164yG1957M9dAl0Cm1sCxoI/+ZM/GZci1pIAF5RO/bN+mv4BrOnbKMDGEiDT2KZP1H9R
nk3+Jo54/Fnp9J2UYOMIupRx45/9cZaSGgPQMVlpWaC+B8gx5hhfrHpBF3jQLwJmAAhgiT8gR58H
kAId/Cz1BD6lw5sxCSDUrwfI4Udfajw3XtEH5IkuP3oCJTzKNiCmL5SHcqAtjE6ABwCKn/4Y+EIb
vyyd5KG/BoKBePqQuPpxYfQg5fOMDzIAtJUly5z11ZZ5CgfarfAKb1bUiMuqp37QcQmXR3g11oqD
BxOxwCd6JjOBeXwoi3KTe+qOnmnMVG7WRJO95GACAQ38eNYmyI8M5KkNyF89A0n85Ke+1Ad5qh+8
oi0ueZKFePjnT3+jb9h+ogzi8Wd4Mb55Fx8I0jbJgn5JVyJ3bVheLOqZLBHfWCu/8Fm/A8+RL93U
5Lw0yqpteWZlByzlnwtf/PGgDdCllLt1qR/fm/bCEs0PHfmSEcsmXVN6YeqcHFhIyXSexZOBRHtG
S52bBEETffVsnEdXONpkhSZ++CmfiQh6s/fE9VxdB55VGlvkWYc4C3hqhPZ/7SmnM9AxLecsR6Hk
+sh9pBRunYLBYL2Ap49DHj5eTiftXactT8o+AKpjDPCMldHa/HkuwJMSjqZOeAosTdFYLfA0eykv
HZdBYuoShzOYUhLmuVnAU4cjnwBPnZJOLUqFTl0bNFMono4sbhbw1F7nAU8dsxnT0NSGdJIGiLhd
DTx1lsozawkpGQDecXhcK/CkmMjTjD43C3hqZ/KbqvP4kSHLOXq5KEucwYXfeuzx1B4MzJTEqcFz
zLD/dAl0CWw6CcwDnr51iqc+S3/iXV/gnjD+xg/x+Hn3LF78KKmUehc/Fz/9Fz/ppfXsnvfE4Zer
+uUZ2JQm6dBHC0gAhPASfuTpOXkl3yjaaKLj3SUcvdAWTh7uucQBLI15AY6JL648XfySBs3Qlz7+
7slTHOnoGdK6+LkSP/7ePaOpDpQPuKIT1TtZoY8u3sQPXTS8V15NAuj7+aOJdnjkh5fwm3vy9y5u
ypH33GtZ0m7iF1ru+Kt55hmfiSdd4uWZ3PIsnjyAaX7eXSZAWExZVL1rG62TX/JEQz7JO/5turQ3
+aW9tHHkE9mjF1ru4qYe8JtLfPWQehI36Vq+vaORtHlWTn4pR+7o5LsQV7x6Dx1xPFfXgWeVxhZ5
ngc8zVLtaYvnIsDTrIkZl/rxeWapWy/gaUaWsh2LJ1CT5Z1pCj4ygCbA0wdkVsr+hHkuwJOsAS+D
TJaSzEsnbLXAMxZPH/VyziwVID/PLQo8LccgR7OQ1UW+6wE8K11gE+glJ4Nc3K4GngYb5ZwCk9qm
uq5LfdcDeMbiGav2LOBpgsaAuJwzCMQS6k6x4AyQ6wU80bO/Bz2z2N11CXQJbA0JzAOexkrjYxRb
faJn/pRSd37uucT3nHviuedZeH0O/aQjWeHJK7SSrtJK2twTx511x7iCx1wJTx6hlbyET12Jl7C8
u6ONR5d3ceIS3z1h8as8R46VbtJM+SVt0iWuuzBlj8XXPc91SWjS1rIrA//wasUY3afST1j8Um7+
oZmwGrf68a9X0iV+7tLUdPXdM95r2lqWxE36vLdpgKvQSr3Ve+UzNCIjd+XnXx3/8FLT1zieU84a
t+aR59wT33vyjl9LO3HcxZFH4uYurM27hgmvlzDtgdXZZEtcB56RxBa6A54sGZTJ6symWL6ynKWr
plnv50UtnpRoJ6e2brVLbS11aB365KQj4FhoLOltXV1qK8x6f8smdEDVUep93FyApyUlHHDG2tcu
BR0Dm5/VAk/lUL/W8k85HUKcZZOWvljKUp1OJfJYFHiyDgMZdZk0mgYz/usBPNu2jL6lLHUSZVcD
T3la9gS0V1nyD8iO9ZzfSoFnu7waDSsU0AlAnAU8WZnJ2lKY1rW8tuHeVwM8zYxbEpQ2X+kC4CZo
zN521yXQJbA1JDALeCpdVTg36/M8JXqzlmlRvo377bWd5bGo3Hq8HcFmKw8r1a5xjWsMN7jBDUZD
AT2xA8+tMR7sUArAE8hhNaSIApyWdFCa+QMEHKAEVNkDsLvcosDT3gj7FWxo5yi3lHvAajUWT6DS
ckUKPEBFoaeo25MQB5Bbymu5SfI00Fq6Gosnfx8NPxZZgJJyzdpnM719E1yAZ10KajZVnsst010t
8JSv/XzyAMoCVpTH/gHLLOO0CeDZ3gbAURm0C3swUtZFgae05OFkOMCV40eeeFkr8GRpTP1psxzA
TN51T+XuAJ5mdAFBllbWSHI0qaHO7AVJ+fG4UuCJhj1LyssaCdShUQ8GmgU8KQiW+toHpe1lVtKy
YKsElttfvBrgmaXd8rW/yB4qqwcsVVfvU5M4Y+X1ny6BLoFNKQHj4bWuda1xSar+rr3oGK3fvHfx
kyb3Nn71r89tvF31Pi/PeWGz+JFm0XRtvPZ9Ko8aJ8/ueU6a9j3+7gnLvYbNe0783Cut9nkenakw
NHNNhe8uPzrzPD5q2fHUvq8nn5X2rOeaX41T/fM8K7z6e27fpa9+oUdW/nP0Kle5yrDXXnsNV7va
1cbDuuhuwGhr+NjIneJeG5m5jcBbltraJ0lhpwS6gAwDRxwFl1VC49hdzh4AyvRyDsAAMPEHUGio
NoVbruoQgTh70qrViwKsrAFdNj97d+gJUBVZ2DQO3JqdiQMiWFTlaa+HfAFlFq66hFJ8gJPcQi8A
AWDgpoAnf2AM/QrGxgTlZy3AExl7VezhxJu8WDbJLNbXZGWTuY3oeE85sqFcnEWBp7gsbkAP4O5/
w4AdwAndWtbV7PE06eAEWmXCK5Drbj9lXb6hztRXdZbF4qG1ytn3uNzhQtrH1PJVZZVXZEbGlpIA
29WR+9Sy3BrHM9CIFn4smU19kBWrfLWszwKe6PhmtC/ykdalLZlYqjTa/L0HeM5bQm7yCp/1cCHA
1t/IRBbuJoxMclQQPpVn9+sS6BLYXBKgP1z5ylceT7ys33x//sO++S6LLoveBv7QBpzWG+Cp7/g/
/+f/jH8zdPWrX70Dz83V/S/OLeWPhY7lsIKsUAA+Y0WK30a6A0f+fxEoXA9nhoVlpgUJlTawKs95
cRIfPXEDOOO/p+/qmkUObwHhs3jCu3g54XRWvOX8tTWyBXBboLdc2kXClQlt1rvlyrQIvbXEUT5L
RsitWrVXQzPAM6faAvyL1NusvBwkoB5897sD/JFFvqtZ/cwsXrt/l0CXwOaRAOA5dart5ilB57RL
oEtgd0rAZDZL5x//8R+PBiRGm77UdnfWQM+rS6BLoEugkUALPJvg/tol0CXQJbAhJNCB54aohs5E
l8CmkYAtZlZFORE4E+EdeG6a6uuMdgl0CWxFCXTguRVrtZepS2DrSaADz61Xp71EXQK7UgK28QRw
Jp8OPCOJfu8S6BLoEtgDErCE2KFUlkZ31yXQJdAlsFEl0IHnRq2ZzleXwOaRQAeem6euOqddAl0C
XQJdAl0CXQJdAntEAh147hGx90y7BLaUBDrw3FLV2QvTJdAl0CXQJdAl0CXQJbD+EujAc/1l2il2
CWw3CXTgud1qvJe3S6BLoEugS6BLoEugS2CFEujAc4UC69G7BLoEdpJAB547iaR7dAl0CXQJdAl0
CXQJdAl0CVQJdOBZpdGfuwS6BFYjgQ48VyO1nqZLoEugS6BLoEugS6BLYBtJYL2Bp/8c/sUvfjH4
P3H/n+0/jF3+v9uVd+He3fnV9+rnOVdNi7Z8QkMc/z1c49awPCev3MVHq6bznHBh0rr4hY44rZ/w
pKv0kr76tfESlrjKMhWn8trygkbSkM28S9zwn7zb9JV+wtB31bT1Ofm395pH6FZaod/GS1vyn+TK
7grtyCL0cq80EldYZDoVT5q0H2kSxz3PlcdWtsLEw1ONH//wEZ6lj1/oJt8p2im3OEmX+DV96ycs
eYav0PLf6e3ptKvt+jrwXK3kerougS6BLoEugS6BLoEugW0igfUGnr/5zW9GZfbf//3fh7/7u78b
PvGJTww//elPB38x5QJMf/3rXw+/+93vht///vdLFwWYn3D+nsXnn3ieQyf3hCfMieLiewckvvjF
Lw7K+IMf/GD0F564aEy98xOWfP19RJufd3QSN7RSLmHSh07yCW81LGVNHuKSH2W+5kGOP/nJT5Zo
Vh6coC5N4i/XfJNX4sszfAArP/7xj8d34a7//u//HvPNX2mIm7Iri+eUTZg0KXvououDRtKmDIlf
+fIs7pe+9KXhy1/+8thuEi59zVO7SVj4qXmEt9/+9rdLfCV++JXXr371q5HH+OHrW9/61ugfHtFt
XfKSD7riJs/4ffvb3x5BqfD4JZ/wgofWkb32izfl/P73vz/88pe/HP207XqJc8UVVyz5kd3Xv/71
Mb/vfOc7oyyFA53ho81vNe8deK5Gaj1Nl0CXQJdAl0CXQJdAl8A2ksCuAp5Pe9rThtNOO2145CMf
OXzwgx9cUsK/+tWvDi95yUtGpTcgswKIKPdR3inmAT1R7vlFafZclXfpc73whS8cbnOb2wx3uctd
hlvf+tbD1772tSVAlDjuQADaoc8v9BMGECRN5TcAQnxxwrc4+BKePEK35iNOyhf67i9/+cuHZz/7
2TvQePvb3z685S1vGemh4SJD9wc+8IHDRz7ykZEH9JZz4oQfPNbrve997/D4xz9+iffIV5wAN3m2
6ZU9V8JSPrKJLIThO3STxr3S9exvyU466aThec973sDqGT6FSe8uHZrCvMvLHa8Jr/UnvgkSYWhI
xw9PT3jCE4af//znI43U553udKfhwx/+8BiP3Pi3LvmnjMk3tNG/4IILhs9//vNjXgkPrykD/9bJ
8z73uc/Ig3i3v/3txwmVt771rcP5558/7LfffsMd73jH4dGPfvQA3D7rWc8azj777OF617vecM45
54yyU05yVJbDDjtseOITn7hU9ja/1bx34LkaqfU0XQJdAl0CXQJdAl0CXQLbSAK7AniymB1wwAHj
Er8o4hRmwIFif8IJJ4wASjz+LHkso5dccsnw5je/eVTs+QMAL37xi4d3vvOdozUPWGAtfc973jO8
4AUvGNOg/93vfndUyi+88MLhs5/97AA48X/Ri140PPOZzxzzeNSjHjU84xnPGMEGOvJ57WtfuwRm
5Edpf8Mb3jC84hWvGHkHJlhtP/OZz4x8oE2BF5cVDIC+9NJLRxADQADV5Ik2wCS9uJY/XnzxxSM/
rE38kh8eAXPpxXd94xvfGEG7JZHAkzzf//73D2984xtHHiNT/m9605tGWd7tbncbPvrRj47pp8BL
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
6BLoEtjWEqjAk/JtWaSDZywJtZyyux0lwLpmueYvfvGLfm0gGVjy6y9f1IslwOtRPyy6HXju2P5n
vXXgOUsy3b9LoEugS6BLoEugS6BLoEtglECAJ6Xdcsdb3vKWw1577TVc+9rXHvfJsfBlSSLQ5d1l
6SWXd3dLOlmKqh/rUk1nqWSbjnLPElXTAcHyiN9q003xKa82PzzJI/lJh4e8u0uD1+rXplPWKgOy
897KAG1hoSWcrPLuLh2Zxk98rqYT3qbzvki6yqc8Fq2rNp2ytOXDZ/h2b+XCry0f+bdymdWm2rax
SDr51fpDQ5mrPIXXOPhEu+Y3K13bphZJ17YpvEhX22LaRuVztelaGczKT7ya33J1ZXn2Na95zXFf
79hIN8HPXpuAx85il0CXQJdAl0CXQJdAl8CWkQDgeZ3rXGf48z//8xFwAp2uq1zlKsN1r3vd4QY3
uMH4tx5OA3Vqq3eXg1q4m93sZkt+ljs6VCdx3CmkD3zgA5f8jjrqqDFdjeMUU3v4qt8P//6H46mm
8fOXJBT+vLv7r2r7+aqfPYZ4i5+/3mABy7u7vYEOyql+9v05cTZ+DtWxvzDv7u94x9+M4PyGN7zh
8Bd/8RfjRSF3am3i+SsS/wOZ93322WfcD+r/OuNHBizLrMrxE24/Yt7d7cO0bzJ+aHEHHnjgkp+/
PbEHM3HcvfOPn/ic9PFDF/28u8u/8umgH+7GN77xUjyHITm4p6YzaaHc8SMPcsm7u79l8V+mDkyK
v32y9mTm3UFA9qYefPDBS37CydN/fyaeg4XUa96d/muvq3TqRf1oi07l9X+dief/PO0FzbsTb/29
Sq0H+0e1x9SvuG1bdLqvv5FxSm5oOVHXvlDp+MlXWWpbdPqw/bz+Jifp7OXVFvHMTx05Fbi2xXvf
+97j38o4RCrptEV/O5P3/ffff9wD65Cm+Dnoyem/N7/5zZf81J06TJzb3OY2475cdR2/8847b1zt
sPfef2gv6q62xRw+5T9Vpbve9a43XPnKV+7Ac/xi+k+XQJdAl0CXQJdAl0CXQJfAThKIxdNhKxRx
IBTwZL2gpAMnDoNh/aCke3c5JIZzEEz8/A2FfaF5d2cxAj7j538Zuby7W6bnBNTqB2RS7uP3xS9+
cbRO5d2dgu4An+rHQub00/jl4J68u9u/ClRWP0CJLOIHhLE05d0dqAUmqh/rlMOD4mfJZ5WBw3ks
+/zmN7+5FIcM8AkUJJ1w4Dfv7gCzg4zihxZX033nO98ZD/lJHHdLRPnHT3xO+vihi37e3eVf+QRg
OUuuEw8Icxps3t1Z55Q7fuRBLnl3N3EhP2Az/uQCtOadXNS7U27jJ1x+tZ059Ee9Jg4gigd/vRI/
QNT/iNZ03vGfOOpbu67ptEVX4ri3bVH7IqtaD9qiyYTISr7S+U5CS5vCu+8pfm1bVEfaXW2LZKtO
azpt0YnJoSNMm6pt0XdnWXit91YGyi6dug4t33lbV21bFB+fqSsTQFe/+tU78By/mP7TJdAl0CXQ
JdAl0CXQJdAlsJMEAjyBAEr45ZdfPv61BQuGv5TorkugS6BLYDkJAOt9qe1yUurh6yYBszGO3q6X
JQ5mRKyVr86sSY2XZ0doC5vlrMM3w2U5g4MPXvayl42zTfw3izOrpLxmuHa3M8tm5mtPOzPBjn7f
6M4sZdpm7pbpmE20t6I6s7GJM3W3TKi6zC6+6lWvGo+kf/3rXz9aEswQx8lnilb1y+x30myku++y
8ppnx/ubGW7dVHnJ2zfPEjHLadOW6L3oRS8al0dZtsRyEkeRtqxuM/UT4b3fuwR2hwQq8Ex+xm1L
61gwu+sS6BLoElhOAh14LiehHr6uEsifCt/97ncfcvmzX3807A9+LfmI88xfeOLe9a53Hf1uf/vb
j3soEjd3y238qa909oo8/vGPH84999zx3Vp0ywk2g7M0QxksTdjdzr4NezD2pAOs/Cn2s571rD3J
xkJ5m+BQV2mj7mnT9ltUhczES9uma7qzzz57KU8g9Zxzzhnj2y/lv93OOuus8V0dWTrDAVKVhm/D
Vf2e8pSnLNHdaA/AIpnY3xKe7W+5wx3uMPqbPKoA3p6TVt53vvOdRz/ffDtZI606stfG5X/l/Hn5
Pe5xj/EdqLcMyHXPe95zAGK76xLoEthZAlPAc+dY3adLoEugS2C2BDrwnC2bHrILJAB4UoqrAzIA
Qkr1fe5znyWrRYBn9hwkDWsnUEL5vOKKK+I9ro+nWFLWAdBqFUKLsg4QWLe+0d2eBJ6sQhdddNEe
FZG9Guq3TkTsUYbmZA7UAD7VaXvaICADDMWKFuBpn8ly7rnPfe4Ixux3iQPSTEaYXGFlmHL+ANsk
y2ZxAZ6sjdWxQPoTde2AFTQO8FT+6siXJdT3/chHPnIpCO30FSyc1ZLPmuzQBf2RVRGcd+BXWHdd
Al0CO0qgA88d5dHfugS6BFYugQ48Vy6zTZWComXzr83hlLA97aaAZ3iytI6SaVM1Nwt4ClOuqjCy
akTJt1R0ytmXYuCsgLSNh07kZKkn2UkXZ1kRvhwaMIuO9OQtrU3s85w8bNBv6bXAM/Hq0sCWLkAu
Txa2AJ0aR9nin3Zhg3vr8C9udcpq2SNeWeJaV+UW2jVeZDKLt5YeMGcCYcopJz7wM6sOptKRKflk
+SZZ4HslNKboTgHPxAOYtGn8cisBniyADuyYckDZLLcW4OnwDby6T7laz9r2vPaY9L5HcndAB9fK
XdsgoxZ4Ju4DHvCA8YTM0JsCnglzUiBasXpalu/94osvTpSd7g4i0WY535n4Dl/orkugS2BHCXTg
uaM8+luXQJfAyiXQgefKZbYpUlAIKa1ZrkaZAsxy8tieKsQ84GlQw2csnPOAJ7Bg2e0FF1wwFkUa
aZ0OthZnienrXve68ehpwBZNAMAJai4WWX4uyxcpzdU5YAENaVhf8HjhhRcuAb7EBcpYYpIHeuef
f/6ooIsT4GnPn3pMnu6O8A6AFJeSbUlqpcV6bM9bdXixZxJQqu3iaU972g4WHvk96UlPWkrqxLcH
P/jB47JEbUha4VnqKSLeLflUv6zO+BSPPIAtR3WnDOI6wW2WUzb5ABHVAQdAh3KySrmjxTo6z6Fn
b6Q6CQ/4dyqb91qOeXRmhc0DnqyT8mCN41YCPMmA3JxQtxK3GuBpILD8NPJxt7RX3Vf3hCc8Ydw3
fdlll411YBnsLOfbeM1rXrOD3H0zDiRBP+B2HvBEW573u9/9lrKZBzz9PQPasRJrH5Y71+9lidCM
B8ua5dFdl0CXwI4S6MBzR3n0ty6BLoGVS6ADz5XLbFOkoPA985nPHK1fQJqZfEqfJYHzrCW7unDz
gCcFntIYi9Q84BkF3tI4jqIIWMwDNIuUDWgkI0tNyYlFkB8QAKywTNoLBsjgFR9xQBYwBCyyjFJ2
gb8WRKELyAEVrC3iOu6aEh8LV4Cnfa/vf//7R16ke/WrX71Tvv6fSbpYTS0ltrcVOMNrHODpUjYg
jqze+c53jvTq4TMt8LRH1v9cxXorrX1xrElxFHzyB9oBJVZJS5vl57+1gEPLFx3DT241v9DI3RHm
4pBNnHJYPmoZZYCifPBhPyD5zXKO7kbPBIA05Ij37AUOvVnpl/OfBzyBcXnHMph2a6IEH+1V229k
ZS+i79khRtrKcm6lwBNv8lCHLJOsmr49slZ/1SoOBIoLlFJCAx6neLK0Vdm1N1ZPZfVt+J74J+08
4KmtaVfaX9ws4KmfM4kivr9lUC75WK67Eucb8+2sBKyuhH6P2yWwWSXQgedmrbnOd5fAxpFAB54b
py7WlROKeqs4UbApYgaPPeUATzywBOUCQqKgswLGBXhKQ1F3iUuRpRgCdFkGC2hZkrdWRykGZqqT
H2W2gjjPypEj5CnPrIytlQ4dVmbpA9wASQC1KvTiqS9KPxfgWcEdf+BNvmjEASvtctHIrh6mBES8
5S1vSbLxLk+yrP4VeKKL15qfhPxrnkBLayWK9QkIrc6fbQO8sxyZKmPAmnj8WFJT30mLB39+bSJg
yqkXQOmFL3zhTsH+k0o+6wE88Zb27K6dskyjb69mXIAn/6mr7k9UNhb8HDAkvkkRExTzeF4p8AQQ
tY12ibo2qG0AYnGAJ3m3fUvCcweQ0czeyfi7+282ZWmBJ6t9ZKhutDkTNNpfneDRznz76RPcWa+z
lzNtwXJ3+bDOrsTFIpvluitJ2+N2CWxlCWxW4Olb1h/0q8tgK7aBVpfc6H1QB54bvYZWyR8A8773
vW946lOfOloBKHEsiRSxLPtbJek1JQvwxEe9gEYArx7qEfBU43m2hJOSGssohlgjLYNdqwM8Wciq
Y3kClqqjeOMlwDOAwoEyrDT1ArzwTJnmgGQK/DwX4EkRbx1a6jaOzOwlZNFm8WFVspcSf/iJAwTq
IS3xJ/sKmCvwFMc74AxEKMPU0k/AswUZWcpaATt6QMO8PXdOFcU7GcQpG7lVueZZfTnAZ8qlDVXr
aeI5mEo+80Bc4s67x1KPVr1YtJWzWinTTsg7IKvea33VPA0svmHtHBADdPOn7DWe55UCT7J7wQte
0JIZ31nTLVWN027nLa9NPBMeZJH92vF3x7ewFnhW2XnW5pS3gk7pAc82rnffrgmNgOJYzld6Sq36
QI+C0l2XQJfAHySwWYEnnUe/kAnTld6lTXqTmfQrNKr/Smlup/iRE9lFjlPlT7x5cabSzfNDixPH
s7rDR94XzUu8qWte3rs6LOXZ01vo/tBDLPbUgedictp0sShngAaAQukGnvyNAIVqIwDPLDH88pe/
PPL0tre9bScZBzQAMInvHqtgTZClr2u1UqwWeMZ6Zl8nkDp1xXppCSoL7zw3D3gCHQGeOjagjGXK
4UzqGtgBBNV1BTKzgCfgMQ94Ak4U+kc84hEj6EGXdakC0PUEnln+W5edJu8pufJjbZ5yATn1L00S
bz2BJ5CUNur7IqMpq26A5yKn2obP9q6O5acdTbmVAk9tp9Z/pem7lFfcosATj2QwBepTJy3wNCkV
GVpaq73aItA6fZvvNHHdp6z+VhiwENtysBIX3utqgZWk73G7BLaqBDYr8HQ+gxU4Vp/oP2wJCeDI
HRjJFcBA1zCumjwWZiuCvskEr/4h8Y2FJkKNlQEnaAivtDwHLCTf1q+Ge0Yjd88OPnO2hRU1OdMi
NLS75Je7tKEZfjLBnzjuCctz2rB36XNPHmg4MC4gPOHokIOVI/SY+FutZJI4fTV/adE2FtuWJJ1z
Begtla64reNnHCULK5qspAmftmCpZ6vX6IR4EsZQQHdxqUt+8gwv7skracRpL+Ol8UvcyC0yxaf4
8U+c0HvXu941jmvi0BGc9+HsDeVw4dtkv7HTxG/aLH96H3om+cWxfUi70743k+vAczPV1oK8so5Q
+nyI1dkDyH9PA08Wm+p8RKx4LBTVBXhaSrecizXXssG1uNUCzwAKPC/nKO+sd/PcosAzls22Th2u
oq7XA3hWPu2dMxEA6Om849YTeOpc8T5l8Ux+i94jnynL8XoCTwCnOgOhCYIWeKWdrAV4ysdghP6U
WynwtJx1lhXTBIlvIm5R4JlvF4hr3SzgWU+1NRibxKHgRREIHQNw+3cqCWvvBm59yxSAbePmPZNI
7cFKCe/3LoHtKoHNCjz1/1ZuPPnJTx6VfWMYxR+4ARg8uwccAEf8TF6ZeHNGAfB55plnjiDHKgqg
K+kAKiBH+tDJHbCRj5U/wj3zyzMarsRLuPfWT5izDoy3xoCDDjpo3MrDHz3xTcR5D+BB2zt/cRIv
/HkXB3/h0T35t/GlQ8+KEJPW3sUNbe8mvx3S5hltYQCSLT1kKr2wpLFqCJDmr9898sgjB+AkvCtL
Ow54p4MYC1784hcPhx122PCxj31spHvqqaeOq+KMXerMeEKPPOqoo0aQZ/uItix/dR0+3PHlwov8
IwfP4ceELOApPj938V3xS9yEhc7xxx8/nhzP/4gjjhjlCHQzTBx44IHjeQ6ejVkmFpzvQB7anLFT
uQ844IDhpS996agDWFm1iI68kfqsDjw3Um2sEy8BHe2MvY5zIwJPYMagoKPy4cZFeV30o9IJAbVT
IANNH7GlezqhWW61wFMnAoxRdKecTijOUlj10Fpn0dDhcYsCzyjxrUUP7fUCngah1hlYHHwUt57A
M0t0YxGTR/Z91uXVybvKNn65C1OnUwAmNFtwmLSL3qcOFzIDbkmxPZuVv0WBp0HKQFxlEH7QY+2c
tbx4pcCTMsBqTDGoThlYHbNnUtiiwBOP2geQ2CoM9lxqmymbdu+9Ak955e+VtIfqVgI8DXAUR+2z
TmSEHqXDioG6HDd7k8Nf4vZ7l8B2l8BmBp624vjvY31rQIJx0+Savvbss88eAaY+wZigf7Wf/cQT
TxytYwDRoYceOoahEXDi76dOOeWU4eijjx5XlQXgWf5oFYe+Wh+Drkv/50A8KzH0sXgxXjuwTX+r
P+ZnWwwLGH+T8y9/+ctHYPjwhz98tHTJX7/NuocfugCeHQaIVzSAPJYx4IxuwgrJj8XXIYT4AZj1
/fzl6UwEfSze9OMsldLyB3blxc8Kuhvf+MajjLSLyNVZAfQw2yzwoH935gHA/MpXvnLMhx85sR6b
+MS37R4BvA6EU05lxAM67TjiHZ8mecUzzgNpaJsIZgV06OBtbnObsV4BNGMZPsUJXXfv4V9etrUA
sfxMOqhHvJlsUG51os5Cgy6h/ahXemvKja7Le65jjjlmNAigDVBqg55d2hG9PXSliR6sftBS7rRD
+sStbnWruYc1bsQ+qwPPjVgra+RJYwWC7IP0QXI6GMsDKHixjvHzFworPfVxLez5gFuLJ3o6abzl
lFp++eAWBZ4+zPwlhE5dOVlRWf10augDnuQzy60WeKJnlkoe9Y/qKa86duWOw+dDHvKQsbNVbh0w
azSeDTTcosBTHerslC/lQl8HjJe1WjwNPmTCCokuB7ibJKhLGNcTeMZ6XScQdPoGLgOo2cEMFuLg
JZvr0waq5TtAh3KhTen0DO72tpJRgKeBGC2DDqeDN5lhsJXfLDcFPMU12KJ/ySWXLCUN8FQ/Bqv2
koZTHgM90CSuejRAWZquDaMLIE25lQJPE1L6C/KVj/aIT8ubged6yNOiwBNfwBw+KXZmx32L6kUd
8g+wM5h6b4EnmRvktW88xq0EeEqjHyBHk1v2kWsDFDPfqzagP0qfKL76VO55dR5e+r1LYDtJYDMD
T98/6xdgpk81phg/9t57nxGQAJkmKPV/4jofwwTrTW960xF8GFtYTFkZ9b10K2OuvtoEI4Bpchtd
fYcxRlrjv0k0fsAYIETPsRIDENP/kasJaWlY7oA3/a9+S34BwMYqY62/l9IXs5DxMyaz8skLKMI/
IEPnA2b0dccdd9w4nhnTyQHfJv2tnDEmWp1yyCGHjOATLXqhMgJrxiLhxh9+LrJhQTSGAWFk4bLS
7ra3ve0oB/Hwgf6ll1468qJs4hkLTj/99BGIo2N8NuZKQx86/PDDdwB37Xcmrjqin9B1WQ+zfPak
k04a/RzMB4Qaw04++eQxHD9kLh98eFc37t49q0fjDvmgTdcRjncTofg1jqDD31gnjfahHfDHH1qJ
4+59v/32G8c7dejZuBge8B2DUeJbmWWM0v7wh2/pWDxN7hq3c35IK6ON+t6B50atmTXypfFq2BQo
yrROLEsYo2RR5nRswNrucmbapoCn/CmU+NHpcCsFntL4KJWzngRKqTWjpmPw4c9zZNbuN7U/1kxk
deigq9OtziyZGTxhyqKswIsPrTozhgCNwUdcl+W3OdBkUeCJpplOA41OSF0bBHXyaK4WeOpAOZ2n
QTNlsvwRXYNetRzL04xsdbFcGoirw6dBa5aTp/JoK9UZMAFscjVYkq14wIROmrM8RZi/cIlDz6Cu
bvEunU7bd+A9wDPtLftv1TFexallDd3cKQ/k0jr5UmQMfAZmLsATzakLAIwDhIEx33CNqy4oPuhP
OcBUO1iJM5NrVr7mg05kE1rqnYKwiMMfEE8xQFdbB+qylLUFnlP7TE1CqG+Df8q7UuCJV9+fOk/7
TTm1p0xapEwUB99md10CXQI7SmCzA0+WQ2M2AGjSllXMuEDxZw3VtxqbA+iAUOMFQCOONCbCgZzs
E+Xv2bhhzAjQ0HfTrbwHRJiA3nvvvceJ5zPOOGOc8JMeqGBt1M8BFfQAY6r9gPo/q9hOOOGE0d+k
tb4UIJUH2rZuALn0HmMWq5oxi9XQ+CQP/StdBHiSXt+qfOjr/8Xbd999R+AEEJIL2vaU3vrWtx7H
/OzD5G+8lBYY0jcru2f5GMfkKZ4w/qyPAC3dRhhZ26MoDvkZV9CIDPfff/9xSSqdLnRqa0TXRD1e
yYys5OMCfJ1dwBpq7FVmfqzTaLkSN3zXvOXJ0q19AO5klXJIq+7UiTTiCk99y0d+4qUs8kpcbcdk
tG/JJIQJ5fADeNIRanz5mChQV+FRG1LX6kxefY9nbRm75nmvXUN261HVSClclEfPUw741JluNaeT
oNiybGQ2bneVUd46InkDS/OccPGihM+LOy9Mx2XmLB3kvLirCVMmg5MBsV2SuRp6y6UxQFsaI9/W
mYXUWZugmGrXs9q0uOQdIGxABUDq/j8zowbFOGEGcoPLnnL4Ua9kX62Pu4If5dUe5wHtleYbuUeG
mZBY7ttYaT6LxNfXaTfaz1Q7Jl9tYrOdErhI2XucLoG1SmAzA09LbU0+Gytd+lUKu/7du0ljyyX1
C0Cd8VQfpT+g/FegYnI64Er/Zryyz1AcY5YxBqgCJNEWhz/rIUBkshj41RdJY6KLhY0lFGgEdE0e
AqPAHV4AIf0Wi63JVvtKA3JMorLCqR+08YsHNIAT+bsDasZPYJpumPLREU0KKhO+TFgLxzv+WN2U
xXJiE3X88Eg2nvXt5Cm+iXpAKe/8PBtbgDhASRrAE1jzbEIASBTXBZwCu5a5SivOlC5gqa79murj
tNNOG1fGKCuZ6cPRkpYsTOA6zAc9cVzJzzP69TJ5TdaWM4cOWp6Vj4zFV3bg10ojE+omCMg1tMWR
Lvkee+yxo+zkmaW2nsVRn4xG0sZPPiYKAM/wIV30H/E68Fxrz7Z8+g48l5dRj9ElsKklYKA1qFWL
7WoLZJYzy1dCw2BhGadZ5VlOh85iWZfKzorb/XeWgJlbg2Z1FABLxXbnKoua/3LPlEUKCiWguy6B
LoEdJbBZgadVFoAnqyQl3eUbd7dqxjNQCgwZGwAweyOBu+tf//ojUACGWEsBO9ZAKyjEBQYARv0G
+ZgkRE9aS0EDIAAQYxGLlxU46JjMBShYJq04Af5YLo1XQI+VS0AUwAl4mhRk6UKbZdbqHsArS0nt
xWSJBB7xZbks0MJKm6W2ABBZAMvkwVoIZBpr8WZZLqAJ2Oiv8YgeYA4UKx9/aYAo5QDy0JWnMlrW
asUOObj4h0fAk0wsd8ab7SXoAt9ooI0mcGwSIHTJrzrvwDCZAdPkbzWMvMhM3cpHHbmTpfLJTxlN
gPIXf8ppD3/1V381WmNTz+K6YgX3rF2gC/yqG+Bc3aCdKzJwJzMyEmY5cQA+WgGeZCCuOOqCnJSR
H16kqwYlZd1MTpmvec1r7vKJ9PWUSQee6ynNTqtLYINKwNIbyz3X6szAGijMjpphNVDbZ2jm2SA9
z+nc2wFvXvwe9gcJmJUnd8u7LL+y/8iyWwpClpT/Ifaef6IAWlLvAI7uugS6BHaWwGYFnvZyAofA
nKX0+iRn6axkAAAgAElEQVSKPgWYP3BjLDDJyN8qKdZC4w9LnBVJQBCwCXQCbIBVAAIrIJAJQAKN
AILlr4CqZzRdgAQQzLJqRY9VN2gAlvhyurgtK8YdW4YAPvs+reIxbskTgALM0JLOOAmUAIq262T7
CYBihYdwy3NDX1mlJwtWUHRZI/kDqMC3C5jhhwd74e0zBcbQ5I8+C5+4xljlC1hiLTTeKht/afSv
ltR6TjwWWHywBAO2lhwri7HZdhLxcrXjsPJbHo1PccgCePcMmMeaHL7wYjmu+pOntqwMLmlah0/y
QUd5Xalv/Fo6HH/thozRZ/kGRpOvu3jKhWfjoPYkT3VtdZFnV8LwlPQAO70lsuQPbKsz8bgOPNva
W//3DjzXX6adYpfAhpOA5SoOBloPZ8kO8EOJMDAY1NDvbtdKgMXToEnuZuPNNG9UuRvYLW1rFZxd
K6FOvUtg80hgswJPijmlH5hwd1Hg60Xx9w4kxJ9iL27C3IEj/uJ5D/hwD6iSXpykS57Jt43rvdKV
NjwIQydpQ0s4//DgXR8WgCIdPzy5AFiH5ISneg8d8aSbyh9wCs3cpatxwzNQBARneWh4qjxLl7TK
lGd1BfAlrbyEt/2yd/7CPZNfyiGf8Jhn78kztKUJb+1XmLLkLi/03eOXd3TRrHmKl7jiCQsN/PIL
HffQ8py46PJ3T1rhoRuZbGTgSS74r65bPKs0+nOXQJdAl0CXQJdAl0CXQJfAThLYrMDTElVgiHUp
d8/zLvFYGMXJvcZniWrDxJuKi9ZUvtW/pvNc49ew6i//SiNhNX54tpTWybRTYfFzzxVaubdlDd3q
L27SRz7C41/T1OfkIa10rtBJWvf2EqelE7+kr+Hznlva4oZW0lVe+CXNVNw2PO/uuVr68a904+de
/T3HT/veqM7hlJauA8dAPteB50atrc5Xl0CXQJdAl0CXQJdAl8AGkcBmBZ4bRHydjS6BbScBe1+v
drWrDde5znXGbTaWeXfgue2aQS9wl0CXQJdAl0CXQJdAl8DKJAB4XulKVxr+6I/+aOb1Z3/2Z+MJ
q05Z7VeXQW8D26cNOIir7RuuetWrjn3GXnvtNd6vda1rjYcxXf3qV++HC62s++2xuwS6BLoEugS6
BLoEugS2jwQAz2tf+9rjIS5Ofe1Xl0FvA70NzGsD/jsb+AQ8gU1/VeSvZ65xjWt04Ll9ho5e0i6B
LoEugS6BLoEugS6BlUmgL7Vdmbx67C6B7S4BS21ZOffZZ5+lk5n7Utvt3ip6+bsEugS6BLoEugS6
BLoElpFAB57LCKgHdwl0CewgAX9l5O9n/MVMXAeekUS/dwl0CXQJdAl0CXQJdAl0CUxKoAPPSbF0
zy6BLoEZEvDXL/nbl0TpwDOS6PcugS6BLoEugS6BLoEugS6BSQl04Dkplu7ZJdAlsAIJdOC5AmH1
qF0CXQJdAl0CXQJdAl0C21ECHXhux1rvZe4SWF8JdOC5vvLcENS+9a1vDX/7f/92Q/DSMvH1r399
eM973rPDdemllw6f/exnh9///vc7RP/Xf/3XHeIl3Yc+9KFB2CzHtP+lL31peMUrXjE873nPG172
spcNn/70pwf+29H95je/mSuvPS0Tfxb9zne+c0+zsWnz/8d//MfhsY997LZt3xul4r73ve8NH/zg
BzcKO52PLoF1l0AHnusu0k6wS2DbSaADzy1Y5RdddNFw73vfe0OW7LWvfe1wu9vdbrj73e++dDlu
md+97nWv4Tvf+c4S3575C0/8u971rqPf7W9/++Ed7/ibpbh5+NrXvjbc//73H+M88IEPHB7/+McP
55577vh+3nnnDd/4xjcSdUveP/KRjwxf+MIXdijbk570pFGGv/vd73bw3wgv1v4/5SlPGZ773Odu
BHbWzMMnP/nJ4TOf+cya6VQCgPnFF188/Nu//Vv1Xnp+97vfPbzwhS9cel/u4ctf/vKGnZjC+3Ll
Xa58eyr8q1/96nCnO91p+PGPf7ynWOj5dgnsUgl04LlLxduJdwlsCwl04LkFq3mjA0+gsTrgAyA8
66yzhvvc5z7D//v//t8YHODJWlkda+cznvGMEUxeccUVS0Ff+cpXhjve8Y7DOeecMwCgdUMzWg99
6ENHAPZP//RPS2m22sMjH/nI4cUvfvEOxbr88ssHgH8jWnzVu8mFH/zgBzvwvFlfnvzkJw/Petaz
1pV9qwTIaBagecQjHrHTZMM8Bl7zmtcMD3nIQ+ZF2aNhy5V3jzI3J3P9jbqwyqK7LoGtKIHtBjyd
xPmLX/xiTdcvf/nLNaVfa/41/UbipfK1p57XUx7L0Up47lNl/vWvf70Vu42dytSB504i2fweFXha
vgp0WQa2EYAHANQCz0j8Ax/4wKhgsxxws4CnMB8vOpbRcv/1X/813POe9xxYOX/1q1+Nfu2PD93A
WQFpGyfvrIPy//a3vz389re/jffSnSzl6Y6eD8kS5+U6DuDhm9/85uTSV3RCU0YAdj2Cmh/QLP2P
fvSjHcoRfii+rF+VDiDvfcqxLqH305/+dCp4TJe0//mf/znKBEicakv4/8lPfjLSQ3cR95KXvGRU
1qfi/su//MtIC82VOPWvLpIuslmk3pfLhyy///3vj/Rr3SQP1mWTImSWCZTQ1I60KbxNtSlpImvh
P//5z8d3EyqApzaW8NAUxyqAukxdObUP9UqGcWlfr3rVq4azzz57pNXSEzdtIvJL+twrn2SgPHhb
iXy1bZMObTtGe6q84T3tTvr2O5eWfF3a6iwnnv6QfGodJn79XlJn//AP/5Dg8e47Vu52FcFll102
Wj2n6O5AoL90CWxCCWw34KmP0l/oX9PHe5/lxEkfpW8Q112fUq/Qcuevf6vhs+ivxB9NeSeP9FXe
XcqUcq2E7u6I28ojstEf45lclWE1Dq3IpdbNcrTwFNlJhwe08BP+0Mh7jSNc/PCetOEj79F9l+Nl
s4d34LnZa3CC/wBP/59zv/vdb1RaKa5A2Re/+MWJFLvPax7wNKjhMxZOCmR9r1zqBCjcF1xwwegt
jbgf//jHa7QVP6NrWeM97nGPJbnJ541vfOPYuYRgeLO08uEPf/hS3Dvf+c7Dm9/85p06RfFZI4Fl
y4bdn/3sZ++gPFOWlcE+MYBanE984hNjlhRloEZ4rgc84AGjki1ClPWEudsTy7FwsQJXB1Q84QlP
WKIlPv4o09UBUU9/+tOH973vfSPfoa8tVXAJQLAoszibALjDHe4wLnOeZ8nUid/tbncbtNfqTBCw
GlZZPepRj1rWKqpz174sdwyflvGy+HoH0tbiLKHVLrL0Wz7Pf/7zxyWw3/3ud5fyTN4XXnjhmJ3B
El9ZJi5cWuXW3uK0B/x+9KMfHZede37iE5+4A10yqe5d73rX8KIXvWjJS/1Zao5+6gEdEwv/8R//
sQMtfMgzTpy2jZnIANCq882haV9ulbUl7eQwzwFk0ioH/qRnfc3y5FnlNUDj1971l7/85WP6fOtk
qH1aqu/7S/3gr8pX+yBz8VJH2qm94MLifOsPfvCDhw9/+MM79AMmSbT5yqMyVFBqYgjtj33sYyHX
710CW0YC2w140peM8frv173udYPJcX1R7VdUrndXgAmAoX8y8Se+PvSlL33p8OpXv3r44d//cAm0
CNcnShfw4Xk9XHhCl27hHA1l0L+px4Chtizrkfd60Ig88WlsouN4Jk9biuZNLs7Lv9aRcQPtRWSQ
dOLiwfjgfAXypWP88z//86i7+c9KcnbXbtB/61vfOuph8TfGS0fX1CZsl9EW9rR+Pk9u6xnWged6
SnOD0KJcAQAOHGGx0wmqaECDoud5TzkfYqs8hxcKIKUtSwoD7gJEE889y/Gyz5MCrWyU/LU4YAEP
6LKoOJjH4UcU1FhX0Q9vD3rQg4ZPfepTY74Ak/JJXw/LoZhShqXPPj1lfPSjHz0AVDogLsCTMksW
QESsOpZw8gOedHzS27NKQdYh4hNPwN/Tnva08ZlViGuBJ3/LmrPnVf6seNoLPqsiDXiSK4AFrOpw
HdzEDz9xykIhj8VXOd/whjeMskuc9h6wZkCJU3/KgF7aAes22QF9OvdZzoBK9tp/6g5Que997zv6
rwV4Ug7Ipk5AkEdkje9MLjzucY8bn8MrxeVhD3vYONirK3ENSng1ox6nDZuUAPY+97nPjQMWGbCi
ies7kEd1Jj0yWKFtQuA5z3nO0negrgEmExjCpRcOnHo2KHJkbJm7CQrfljZh0sAeaXVNWYoDPPnZ
lyu9/sXSdm1RHaE1yym3ybCf/exnYxTtSR1lj+qs8opHBr4NwNO3kW/JBAt+MpgrJyUL0Degxymv
yRr1oXz4fu973zvSlTZOHes/fXPKp760f/mrR/WAH2WWL36q097qZEAN689dAptZAtsNeDovQb9v
nAYQTPQBP8bgeulz4u/ZeKEPMa4aBzw/9alPHd70pjeN46v+RzzvdA1pK43Q5sflPXf+ea53cduw
0NXn01eU5dBDD13q54XXNDW/6p98pvJI2Kw7OqEbmu71OeGhEZnQKZxZAsjrd/Xb+l2TAImbe+Wt
0k64O//QfuUrXznqw4lb47XPSYcH9XfyyScPLJT4OfHEE8fJBROOdMj9999/eOYznzm87W1vG3U2
7cYWqAMOOGDUx4zHeDjooINGvemMM84YzyIx7m8H14HnFqxlijeli8JUHXBCcfOx7SkXYMYam4si
SFGj2AE6cRRFftJQ9lziKh8FXVmAPY6CTKlciyMfHRrA1DpAEi8BE+GN8lmdzsoAQ/n0zFFagQkd
V3UUZ/kBclyA59vf/vYabXxu65In+eHJrFvc1B7PFniSn3wDTJNW+VmDAJU49fGYxzxmqSzx16ny
j7vLXe6yA9iOf2SQ93oHOPBf+eCHt4CKxCc7IOstb3lLvHa46/y1ebPKrdPJy2ctwBMIQ6O1CLfl
m9rjKU5bfwYdbdhMaBzgyfpnUKsukywB4gkD3liMEz/gzExsdfKvfE7t8TTzSjmqS3PRwDdA+oIX
vGCJJOB5/vnn70BToMGEjN7//vcvxW0fyKd+4wmv/E2VN2XTdqvzzWh7FWAmnBzIOPLh39YDP2Cy
lg/wNDFT0wGgyqb/qU5ZlKk6fht5D23ltT93CaxEAtsReOpfAIKAFWORiTiA0eQr3cNKB+H0EeMU
HeCEE04YJ/dMLh5xxBGj7iCOfsXF/6STThqADitN9GXGMWD3kksuGUxgGs8CdAAvWyRYzfRjaJn8
1N8Alaxu/I2hQLK95saXgGU6CbAWPceEHdp0GWAUz8qBN2U04c5fXy8N/qzm0j+a4KSP4UGe+MWb
fNHkbxxwmUQ2vkhv1Y3+ncyAYOOpuNKIo9/ELx74u7NK0u3k491lTI+eIJ7xI3e08E+W+mt6Ej9j
G6CvLPQ4k8ZWc+nb0ZSGLhZdEm/8QtdzLvGBTZPmno8//vjRyCMcL6eddto4MZlvi58J/VNOOWXM
Xzw8SccabhIeCFWu7eA68NyCtUw5m3WqLYCnk9pTLsCTElcvHQu+fYxxAXc1nmfWR0sxqyKu46Yg
r8XpSNGvFr/QM6AIi1Id3qasx2a9xMWfTkkHaeaLJai9dHKxmOiYpZvqfMz6kY9yAn0GIZ2k+DrO
uEWApyWRsw7AMXAAcHEGNVfrzN4ZUOKAVcDFnQU4EwIJn7obYPBvQIljlafIt3LybtCYpdAbxNGq
1tPQ5CdsLcDT4MOiZ7LDwEv2le/kNQt4WkoKsAk3I2rgY/kzkMcBnpahtm4KiIljMqQ9SMpgqr2Z
XGL1i8W80pwCniZGDMJTjqJjCWvAYZbaTsVlrZ5qL4nrr5DUhXJ6pjiFbuJMlVe/IJ12X50y8rcU
vW0zgLmwum/GRBGFzHekL/KN+gZZgePUr7quLktoY11OmHRoVaePXWtfVOn15y6BjSKB7Qo86SdW
9ABYxnRj9M1vfvNx7BamTwRoTAQCjPrfG97whiOgYP0E1IBM4wDwZTzR9/A3HtteA4zwB2ZvdKMb
jX07cEsvML4BJibF0TFuGH/UB8AmzdFHHz2uOMKPVWX77bffuHro2GOPHSenAT36AV4PO+ywUc+x
deC2t73t2CdKl4lPJ58ffvjhI5g1gaf/VQ55AKJWrhxyyCHjHn1gFoACEPW3xiQ8m/TDK90H8DZ5
a0LZM/7pCfrVAMRb3/rWY/mOOeaYpdUrZGXsAYLJR1x39PGtHgIMc8erOOqJLmY8VDdWTenr+dOn
rHYBHo3lxiDpTGDS8cTLOQjCXOinjtwPPvjgcYWPsZOFk06IhrjLAU88oKFOjUNoGHOA5O3gOvDc
grU8D3iyGOkc95QL8NQRuHRwOiudU+sC7iyDS3x3H23rsnSxgrA2znLvscDp7KYcYEW2XHibAp6U
W2USRwfnWedn5nTqyimYs4CnDs+yWDOWBgHKr447fxNTy7wI8EQH+JhyOl786hS5WcATwKzAU52Y
QZW/QQ8N4KJaM9v8yFI85YtTJhMLU3LiN2vShEzQmpo0WA/giT+DpvZrQJKXOgXUa3ucAp7kIj7g
bDbbzDSAbQnXWoBnlu9Gdu4GPnIVJk91AdBSGuKmgCelY9ZKCIM+Wmhz84Cn8hu0ZzmDMuVL2yA/
dIFV30rcSoBngCxZzmozJpQ4+cqPFeHzn//8qLTgl5V/PYEnBYfS1V2XwFaTwHYEniZijYMAHqCj
v2dJM7kP/Okf9bcmug488MBxMk1/q+81IWZ8MxFrHAA0jLFo6E+z79O7eO76YeMDXUccYMvkNGCm
bz399NNHa6H48tG/6XMsnwXuAEy6jPxZ7VhencFg7DzzzDOHW9ziFqO+hS6gs/fee49jecAxXsU/
8sgjR39l1W+zGBqbWefwdeqpp46A2RYdq7rwQ1cTB+/y0z+LS+fU59KH8GViDmD1Ttcw7h933HFj
uY866qhxGwd6JmgBZ1ZB8SIjctLHGlPx5hKWOHQpz/gAUFmsyQ3v0gpzGYPooNK6rB4jO2Mc0GzM
D83cxVMmYBvgp5MB4XgkU7wsBzyTv7ow/pj0NRHRTmxutf4j5enAM5LYQvd5wNNeqlnK++4QAcVd
x1OdTlNnVfeRCQ+4i+JY07TPPlpKJWvFal0U0ykwCUChb78dF96m4up8xWXN0cnp3MxcLudmAc+A
KvtFqgu/KwWeBslZVimDXlWaFwWelS+dvQEawDWAznIBudVyGIvnrDSz/FMfUx33egHPmrf2wOKo
bjMZIbwFngYhVlIAtToDl/2QqwWe6lw9aV+zHKXEwC//TG6IOwU8zWJbajXlxAfslIWbBzyBSBb5
RRzeWSMt51IW7Z9bCfCMxbN+A7PyNinCIpxyiEcBMKmznsBTH6vtd9clsNUksB2BJ9BkwhCoADr0
U1ZeAGr6MBOJ+hAralgZATRjIB2gLteUlv5jkk//jw7dxynj+iHv7vpbqya8oy9fABUfxlWWQmd3
oGcCmO5kfGFJpEPpexy+Y6Ic8AWQ+NP7WGz1ddmKRYeQTnnoLfpTvMnTX9WxXgJV6t3qGcAVKBVu
iTB9iD4hf354E8fYA1ABrfgE0tH2bHKYAQTQVFZ+xg3jgPhoiMPfOAs4Aq1kQx788Ri9ij8//bo7
PhLX3ZgMHAPKSe/uMllJP5DGO0DM6ksPwp/8Qxst8bx7BkzJyDsZ5zwVfCwCPKWTB91FGgaPKf1l
q/UhytOB5xasVYqwjkXHVZ3ZJQqeWZo95aaAJ750TDowH39cwMQiwFMaIAmonbVcQedqWVz2aSaf
3AEgCjYeWwc4op0lpOFNp1WdDoQ1RyfvmTMbaBZSp9U6HVic+jJYGVyqM4jwb/c9xrJalW7KtUGr
Op17PdXWzK1Ou5WDwdJgkaW/aCwKPNu2Jq2lN5bJzHKWFylX5SMztTl8pqatsqr+noXhHSiK3BMn
h/OsZaktWlNllF8FbAa5CrzwpYxAduvWstRWHVI6WjfFo0GeshOnPbDaVoc/iko9qVi4wdC3WfNS
Zt9qWx+UG2VVh7PcFH85ZCoTTysBnujp66x4aJ12UHkkg6m+jxVhPYEncFu/t5av/t4lsFklsB2B
J3Di3AUWLUBOvwIgAZ7GdP2d/lBfqf+jP7Dm3eQmNxkBH8BGJzFxbO+48TW6AMAGtNIngBz9FSCq
PwJMcrHYWeZqWah+Uj+NhklF8eXJcmlJLhBnbNWfy5MFkaJPJ9HPG2+BOToNC5+lrcrnWXx50oWU
15gJSLLWKoe4+jflt1wXL/RN1kSyoecYA+lxlo7SXYBE5abHKR8wrqzOiHDxs+wVeEOD1RZ4RwMv
+lITtOJFHnQVwC/WSmEuMlE/0QHc5Xuzm91stKLiJXTQp5/Q4VJmIFxZTYCz+OJDmDTi544uSzId
TJ7kolzJn3zRlUZc/owj/IHy8JoyJw/f13ZwHXhuwVrWEeh07DXQEQF2OjYfOf8oeDoXM0FTh+ns
KrFMAU95xXJRLYMBd4sCTx2/8uj8Kf9myZRV5+DwEP6Ap85glsshQpR1HTSgyQ/orIA0vBl8zBTq
lHXcFFv56EjjzBACtACpZ06diGO5qk6Io0RL2wLPLHGhXCcuEMqKJX4FnurcfgHh8W+BpzCgxwCl
49aJG2TwQolPOjwtAjylz2yqZ47czGDaFzPL5cCeOsunTeKLXHXc6ejNzBrcA4zID7/5yxJ5kCd5
AN4GMJ0bCzje+Ad4uhvsA5DkATxqI5Fvy7PZTHS0xbQfeRj462FQ5AXU2W/I4s0ZqM2iGmw5eZgE
MVO9iMVT3vg3iAPkZIR/Skh12onZbkBbHI685G3yI45MtEftNUuTDYaAGd7RVY8GUn0GxcugGQd4
8lNWMhZXHaozCoZvYZbTHswm29vDUQTM5pNjeJ4qr3hkQG6tM4svTL+XvPFrtp5fHCXP5ETKQiHQ
/rX59QKeaJKBMnXXJbDVJLDdgCe9RH9l8k3foS/XF9GrjD3GbKs2jAHGBZNoLJPGKuO9/lq/70wF
fS69RJ8sLjCi/xXXeCwtP/sSrVQBRsRz18fq162S0b8AosJY3NA1fumX6Tv6d/4Arn7W6ePu9Ae8
Gjv1e5Z3elYWgBEdZVI+fPPTL+vL8GVMc5IrUAawGW/xRu8yMcmPfmUswRs+TCJ6Ns7JR1wTfcYP
+RuL0cAHPVT5AFb6lXTGSroJyyBQ7J2/uCbZyR9v8XdvL7TpSmiKK71LWucX0EO8K7dzJ4wHdCYy
DfDEoyvpPFvZYvzjZzuL8R59dMmeride8lQHxiR1KY0wdUMG3vFddaGt1nfU8nTgWaWxRZ4pWzpK
y0MoopQylw+6zqjoEFm+gLXd5Xzo7VLb5O3jxU/AWcDdosATHZ0HS5tZspTb/f9n785j9S3L/IBP
my5p0nRJmi5/NE3TadOZJtN2pk2XzB9dMt07AooiCiKLgog7su8IAqJAEAUEQRzZRGBEdiIIisMm
BFlHZQsIGPYo4ohP83k61/E+D8/7nvdsv7P8vlfynme71++9PNf3vq77OZRiSqvBPU0ojiZU+FV8
ky9M27hVNoTIZFthTVrIs3RaQVJMuMKpo6Ov34lfYsJyf0g8PbfCyFrNFQTp0GbyEb4lil5I8HVf
uQjCbA9FK0iHiV+4+imfSbiVWYin8NyNEBxpeYE5Ii3ymSTwhG1LvoT1gvOisEjipz76MStftYGX
t2dVR/Fg7sMA1ecROy8AGCtPEU8vQNeeEZO+F557Q6tyH+DP+5X9JMorXS9Z+ZdLVIXzYndfWhYA
iAUMJBwu2sFP2yGybd0nfVzIi6vtY1bTx9xs1d9+IwQSZvJzpADBtATxUg9lbNOBqfau/uO5hQx9
txUKjjRhXbgJq461qNWGb88tAtU4qPIZm+6XDOtrAcK4lscY8VRviwi1wGB8aQN4tmPDC5/i6Ln5
wc/YMJYoACUUJnNlK5QG+Q8VA4TVCn8JhU044zUSBDYbApOIZynlm62+xrv3g3ezY5EI81HVuciF
d5OfBTTh3XdtfnLuvvh+4nsmTed+ziuOMJWee1UG6SJvFbbSqvgVTxz35C2stDxz37Hit/lVGnVP
XlUP4S3qefchDcogvLTk4ah+4lZ9nfu1+QvnJ760lavCVN0qz6q/fOhfDADCIpLIuvdY1cux6lTx
6lh5Vj5VHtd+wsnDUVj5u67nFb7Sr2OFd6ywjp63YaTluvKoMI7iVjrC0Nm3Bgnx3OStrDNrZGRO
Bx8K8lmWhuGzjXxt8kM0rJJRPuGwGCncEDETxlCKeMKWUDiFXQhLJIQiP42QDfOqa5Ni1Uf9Jgkl
WblMoAuJ9pemOMsVZYK1+kl3FmEhZuEcEyunymZVeKzvWo0cw1tYBLLarfbctqSyVp0rX/W3or1Q
P6l+oY5enmOiXAjYsGzVR6pcY3En3RNHmyq3dJCxSaL+XsrK2Na5De++/grjobBWw11eY1LE0zN1
lE5L8MbiDO/BSPmM0bG+3NZ3GHfStXrrK5PqVfG0tfohoistFq0sSkzqGyudX9ILAlsSgSHxrLmG
RW/ogbEly7VaebG2WbTzQ7z82nPX5ssKY16t8zac+23cClNpVrwK536dO8qjwtaxvV9h23h1Xs+k
Yb53X/7u1zPHtrwVV3jvcteOFja9F5yL41hpVZxKp46VT5uX87ZOFVYa9auyVj50p8rDeaXnXoWt
uMOj9NtfPXdPOpV/Xddz6VY+9awNX+EcK1ydVzj1dF5YVV7COW+vWYi3BqHL/I2/8Tcm6hjrEYPf
WI+FSpm2LgSGxHPrqv3K1bb293nBL1dM2tw0W0G+fThnmlWf8sSiWP8qp42f8zci0BLPNz7deu/o
R6yo3KkiQWAzItAST4vZXOf//t//+93f+lt/q/+652asc+oUBILAyiIQ4rmyeCa1rQSBEM+Va2gu
kdx+lyv22XAT5S7KhdWePntnuJWyrk0TlrIxy9u0OFvrsxDP8Za3p5z78CRL8Xis3A0CGwcBxPPv
/Edx/hcAACAASURBVJ2/029d+Yf/8B92f/kv/+XuN37jN7q/9tf+Wu/ebntBfsEgfSB9YFofoJf9
1b/6VzfUuzIWz43zntq0JeU+YS8pF4rI8hCApa/wrYSweNqLaeO/Dx74SEPaaCWQ/XUa9j3ZSxyZ
j4CPS/hXAJEgsFkRKOLpK6Z/7+/9ve4v/IW/0BPPv/SX/lKHiP7Tf/pPl/375//8n/ck1j7t/IJB
+sDa9gFfNV6Jcd2m8Y//8T/u/uJf/Ishnpv1RZF6BYEgEASCQBAIAkFguQiUq6092iz8vEn+yl/5
K3G1XS6wiR8EtiIE4mq7FTV2qhoEgkAQCAJBIAgEgaUgUMSTl0oJLxP/emPS/8+ucDkGgSAQBCAQ
4pl+EASCQBAIAkEgCASBIDAVgTHiKYKvUC/la91TM8vDIBAENiUCIZ6bsllTqSAQBIJAEAgCQSAI
rBwCk4jnyuWQlIJAENjsCIR4bvYWTv2CQBAIAkEgCASBILBMBEI8lwlgogeBIBBX2/SBIBAEgkAQ
CAJBIAgEgekIhHhOxydPg0AQWBiBWDwXxighgkAQCAJBIAgEgSCwVSMQ4rlVN38qHwRWBIEQzxWB
MYkEgSAQBIJAEAgCQWDzIhDiuXnbNjULAlsKgRDPLYV08gkCQSAIBIEgEASCwAZFIMRzgzZcih0E
1hECIZ7rqDG2hqJ873vf6y6++OLuxhtvnFpd/5xauNtuu21quMU+/P73v99dfvnlc9Fef/317vHH
H5+7Xs6JwaTM7e+yyy7r7rjjjk4+611+8pOfdK+88sqKFdPn9X/84x+vWHorndDLL7/cnXXWWRui
bfSf22+/vfvc5z7XnXDCCd1nP/vZfmwM+9Vdd901r//pi1//4693Dz74YPerX/1qFMJ77733DXG+
+tWvdjfddFP+RcIoYr+++cILL/TYGTuRhRF46aWXugsvvLD79Kc/3X3mM5/prr/++rk+9vDDD/d9
deFUEmIhBJ599tnuiSeeWPHfFVdc0f3dv/t3O3PGaqSv3JEgEATWBwLPPPPMqoxz+v1f/+t/vaOv
rMY8shrv499YH02SUiwFAYrzm970pm677bbrKG1j8rOf/ax729ve1oejZK+kfOlLX+re8Y53zCVJ
MVceSv1y5Rvf+EaflrK//e1v73bYYYfuzW9+c39vl1126RWuIVFYbp4rFf+1117r3vrWt3b777//
kpL0z8Mpka2ceOKJ3TbbbNM9/fTT7e11c07x/ehHPzqRkK2XgloM2G+//fp+tNdee3X77rtvt+uu
u/bXjhZzShBS/Vn/qz5orLm39957d9/85jcr6Nzxi1/8Yv9cf61422+//Vw699xzz1zYnMxHwGIT
bO+///75D7byK8rEV77ylXkLWZdeemmnX5kfP/axj/X9EXYf+MAHOnO+fqyvPvLII1s5esuvvrH8
u7/7u92//bf/dkV/v/M7v9P97b/9t7vf+73fW9F0lVN5DzvssOVXPikEgSCwIgjQGVZjrP+rf/Wv
ur/5N//mqsxR5pF99tlnRerfJhLi2aKxwc6LeFI4rHyPCQuN50jLahNPlqBjjz22W4mV1iKejz76
6Fy1WJkopccff3xfJ2RskuVpLtIanCjT6aef3lnRXoocffTR3QEHHDAv6s0339xbNtbjPxZ/6qmn
+vaw8rbe5Qtf+EJf1ltuuWWuqNqLJd0Ee+65587dRzwp761Y7OAiZ1HBuLrkkkvax10Rz7adqt9a
MLFQY2Ei8kYEQjzfiIk7t956a9/XatFJ/3nve9/bnXbaaR2rZwkyqk9+7Wtf6+fFj3zkI525JLI8
BBC5d7/73f071nt2I/z+4A/+oLOwFgkCQWB9IGBufstb3rIh5o+a47bddtvuD//wD1ccwBDPRULq
Rc/FFMn65Z/9cpGxVzY44olQHnrood1uu+32BjdHCq9VFiviFN5JxJN7LHcfrgDThKunuhexHFo8
KeW/+MUv3kAGlQOBZO1BUmaRMeLZxjvvvPN6Jeuqq65qb8+dK6s6Pfnkk3P3hievvvpqd9999/Vk
tiUKw3CsyerNfW1oZVXfuvf88893fsT9tn84d4+wusl3mB6chDnyyCN7YtOmUdj2CQz+cIVQ1x/9
6EdvwF7QNm9p6rsIfJVnkFzfRtpqVrdpZO2d73znHA5teoUdUqF+s8pPf/rTHvOKV9gU1rOmMwxH
Yf/whz88vN1fy7NNf4x4VkThPvGJT/R9EJ4lY8Sznl1zzTV9+FkIerWTfjfmsj3EQ38fC1d5O4oD
T2270FiveMO+0y4EVRiEqNwF6157bPuxvqpOrHhDmUY8jWN56JPT+lE7P7dt2eZlrOv/fmPjXrwa
G9UOw7Fac+E0zGFcZW7zr/MWF67qcGGhbOsnjEUSSgvMqlzq2YaTpnvCnXHGGX0W5lALJy+++GJl
meMSEEA8eXRsJGEJD/HcSC2Wsm52BMzNvMI2kuAOIZ5r2GLcl7x8yt1TJ9p99937vVtrVawinrUi
zhLTCgVTOa+77rpR4klhNhCQV26BjkhPkadKi+Jy+OGH92lJTzjWRnv6Wldbe0g9b5ValjqWJPfr
J88ir5XH8LgQ8aQcco380Ic+NC8qYnvwwQfPqxPXyiGJQpq1JTcqL2lH1rBS7CRKkTvuuON65a3K
vueee/YWiMpUGhdddFG/X5CSx+pA1PnUU0+tYL21EuHxnBtupYcIlXsnpb7u11EbE3koZyuU+COO
OKKva4WnbOgPrZxyyil9ebjv7rzzznN5IIsU6hLtxkpilUu7qs8HP/jBfu9AhRk7ytM+s1Yo5BY6
pAFbx/e9730LpkWZtqjQYqS/2COpjoVVm9diztVHX5+2IFHpTSOewiDVsGqV0mnE8+677+7rcPXV
V1cWbziqv73MbTtZJdWGLUlCfOBxww039F4GzlltJ4k5QN+tfuJ44IEHLkhK1Ie158477+ytbM5L
EE6LXu38wXV56N75nve8px8fJ5100ry+ymrczhVjxNO+Fe3flls/GhJgiwbmpHZ+lq/5pwS2VnL1
bZj6ObcHtyVx9q1r1+985zt93Stv88pzzz03t+DgvjSUsRV1Ml8OcbEw1Ipxo4+ZR9tymyfMPWRY
d+NikrC+y/OBBx7og5gflHHS4tykdHJ/PgIhnvPxyFUQCAKLR8BcbD7fSBLiuYatheRQ0ijQrBZI
KKWTwsCi2JKVLVnMIp5FwoZ7Ori9Uqy4Zjm2Fk9EDJFxr4jmY4891u9/s0+o6kQhQ9woPJRXVkLK
l7qLL92SIfGUL0vsl7/8R72Cq5yIgzjHHHNMRRs9LkQ8RSolv6wn2gQZpSCWZZUSyDLFzbFW/lkh
TAL26KmfH1KgntIg6k8BRM58vInST5FDJk0e6kIojDvuuGNPUBH9wnKMeApLIaWAwkY59B97tRCJ
ssRQyBEkFhn3yZB46oOIhPoimtKjjJfC2xI0pEXehxxySE805cO6oh0QhxI4vf/97+/r6R5l/vzz
z5+zoFS49jim3LKSwVL5yhqIiJ599tl9OX7wpz9ok5h3Xu6CFHJpqydyhaBrs7Ze8yLOeKEtpQNz
hJE1SR5jshDxFMeYk1YRl+qTLUmstLlfy3uW+rNaGWfKZixU36l8injqn9LVVyZZ39x/17ve1X+4
x7n20WeM6XZxpMrZHtUHudKW1157bW8x9RwxsvDGJbzGn/ayUIM01zgQFgGEkToJAxtjz3yq/ysP
GRJPdTWOzjzzzD6eMac/mVMQ3BL3jRkLCuYomMlffuJX+hY01EV/cs9Pf1C2WjCSJuKpnYxz+Znz
zHfuqYvtC/JQXmPfu6GE5VKYdrFLnc2z2kqbliCe8jaPm6fkU1Zx450g8YixvFnKazxVGo7G/uc/
//medFa8eg4r74HI0hEI8Vw6dokZBILA/0eg3ikbCY8QzzVsLcpuvfiHxRhTMIdhVuu6iKf0EQRl
LKJC8WJlojCRIfFkHaD0FYGqMlKcKEO1B45FTLpjq+YU82nEU5pjSj0CQkmcJrMQT2VSNgSOILgU
wWGeSCQFjAJHKI4sGsO2K6VeGJaSNu0+4p+7K7bxEIKySlYYxzHiSSEd4q29WCkoxSVjezyHxLPq
PrSiqCuFtlWGEU8koRTwygfpQFxLxBsjIi0uFbaOZW0vK4v7dW9olfIMMbZHd0zkAyMLB8M8y3q/
XOJZ5WstScYJAsn9uZVZiKe210+qzxXxRICQGj/nxptwLdFv83Ku7ZCTdoGowlx55ZV9/LJQF/HU
l2eRKl8b9uSTT+722GOP9tYbztUHQa1FmwrAcog4DsmuPmaRwHxUok3VfygIIEyqTYfEU/ixcrMI
i1fjkKXX9dhXuyuMchqrLcGs8pSFucZmEU9zYYm2kYeP/LRin6X6lZhj4DXERdrGlzmqxPVYW7Po
tvdrPNUez4rvqFxIuHl4zOLNg2WhNm7Ty/kbEQjxfCMmuRMEgsDiEPD+iMXz/2OWPZ4z9B0KKIWw
FJMZomyRIC3xHBJNCo6OXkS0JZ6UeuSSa6l4w99BBx00p/hQIJE01q+hDPd4Di2ewnNpVE5E6JOf
/GT/xVtKq/ynySzEsz6cVKQHkba6P6yPa9atspLAhOWDwqh+SA0FrhVl9XxIgNowzicps2PEc9Le
QuWqsklzFuKJwAzdjKtsF1xwQd/2pTiXq209ryNSwRJcYq+mPsPyybpVfaeejx2574rDWl5CaaY8
j7WDD59o+zFci0yNuaKWG3KRlMprOUdWJoSOuzLyqR5t3rMQT+RNPFYnUsTTvfZnocU4GCNSVYda
4Bqro3j6mvRJYTVGNiq99gg//cA41D7yMP7bhYc2fJ3Lr3Wvrfss8kcdddRoG1u8aPu6ccRqORSk
UJ1qcWyMeJZ3hXIbFxaEyipYc5I2YGWdNj8j/9oDDsN+WfnyAiDlajssrwUiJLUV9WqJHVd1iyvD
PFxrf94kJYine0MxF7Acl0wjnmXBV4cxQfi9uyJLR2AS8eS5wJrtp3311fY41gfqeYVtw9S94XEs
TJtOeRy0NeSNpH9FgkAQWB8IeP+MEU9eLTXGJ439uj8MV9c1H7TH9tnYeZum8zFDQSyea9h3kBlE
Yr0JpYUyVIIsUTK4bCEUrXWlJZ4UPoOA0md1fuxHqSSU00nWyYWIJ8WeBZISSkHiKmYvIOvbShBP
iqg6lHWB8olAjNXHvVbpM8hY3movHesNa0gRIla34ZdlC+f2KP8xK8piiCe3Y6S5ZBbiScGtNqp4
dSwyWMRxEvE855xz5hFPijvCz02wiJh8hvtjKx/HsryWa7N7XHr1y0nt4H5Zotq0igCMWa60lz47
RsraNJZ6bvHCGNHXi0QuRDz1FaSjVfCKeJro9Us/BGkaKaoyl5V90v5T7rJlkV4M8bQoYLxpV3tl
5YPYIJ1LJZ7iWZCa1MYtJpOIp3obf1Wnan9uwwR28uHmizjac2nOc60vFPE0XlqiW3i2R/sfxYHD
pDJLnyyHeOoP03BhDS6ZRDw//vGPz0w8taexVlsEKu06GvvqG1k6ApOIp3nWXOF96+hnXrOIyfJv
zDt333XdF965+cPPuXjCVFjnbRxhpFfPHd3zG3pqqGmI59LbOzGDwGog4P0zRjx9I6DmCu+0GtvG
v/s1p7hfc4BjzRfO67rmhIpbz+q+a3OO5xazXUvfnFTvv7buIZ4tGlv4nDsVpVQjrScZEs9yR0Rk
dHIr5SUt8dTxKCNlPakwY0cWQYpNkbs2zELE03P5DOOycCyXeHI7Q45aFz7kDflejMACqaGgwaw+
0EQxp0R6Pk1Wgnga3JTNklmIJ6tKS6QrriN3wLbNZiWebRomIgsFlGPEYVLfL3fJdrWMRa0lHm26
085ZDrTBmPvoahNP5bLIIn/lIAsRz7Lwt/9SpYinyXyxUuPXh3yGUhbP+ncviyGe5i8Eb1gmXgBL
JZ4snvrpLDKJeOpjxk/NQ0PiWV4P1R6Vl4Ue7VTEU//eaaedJvZR8WoxxmLYQrIc4kmxYEGfRVaC
eFIo4FQfIxrma36ETWTpCEwjnvpgfdVbe/JAMFfyGrFAYo6gMHqPuE/h442kPzrXfu4b33XuKLyj
uH7GrnDGjEU+Fop6HuK59LZNzCCwpRDwzhojnv7vvfFtXjBXC2Oxv+YBz8wBrs0Z9TP3OKdfmxvq
J2zNLXVs45pDhHH03LlfiOeW6gkz5lMfo2EpGIoXxlrJkHh6WSFfOrg9jTpiSUs83aOQcKEbKqOe
tfFqjyeXxKFQzKVbUop4KXcsGWNuest1tUU6veSR1/YLmgYuRZa1aShtnZyP1ZuVuBR7pAuOQwsb
jNs2XwzxZOk1AbRCiUAS2z1xFHofS2lluMeTK6zy1Z6/Cit9Ck9r7Z6VeJqIhlJWuEmKLaKuHOWm
KH65BiJSQ2nbYfjMNUsxK+swnElxrD3G0ph0T9v5surYB1o8Y6nVp6pvTCOerHKs+cZZi81yiKc6
I4hjiyf+J6z6157exRDPSR4by3G1NYb1/bGvUw/bDvEc29db7q/VT4bE0wKKxaVhehWviKcxCpux
F2eNVS/nluS2fUTbt3ksh3hahFDmmgPbfNo83F8s8SwPhjbNhc4tULVW1oXC5/kbEZhEPPVDXiP/
+T//5/47A/b3mo8pccapucE40e6l3OlrLBzcdN2rZxRA5+Zv84+j+dix7tW1fbsWdUupbOfeKn0s
noVEjkFgfSDgHTVGPC1W0bP+w3/4D70eZTzbJmV8mwvMGeaAuq5z1+YQR3OHsH411ziv+22c9l6F
97w1VBVisXgWEmtw1PA+PmIyt7rsQxuUAIopJV+jUXDszan/obYlijkknvKkNOngXnitDIkn9zv1
QXDqK5uUM9YEbmvqRNSdix6FHPmkZKs7qyX31GnEs0iJF3SJ/SjSn9XiiUxy55S3snEv5crGJXJI
Cuurtsg3ZVbZDSz5+1pruaNVHSuMcL6yiQCWm6f6a0/1Q/LUmwvkpz71qb78Bi9ZDPFUZ3vVEB9Y
s2xRPuHYKvCsrUgwS09ZEofEU73USTjudtKj9CBPFN92FXwW4mnyUhbEqYi7NCmu+njVt9qxjjDV
31orpbRYcLl9f+tb3+r7kvj6g32pRfxgzKW5/Vcs9W9T5GvBx8ICUo68yKfa3BjUjyhgJRZTEG7Y
jIk4lEHtrB21NcykiZxJv/Ybim98C6v/VR+8+OKL+/EgrDIN3WKXQzzlqZ9LW94WJeCrv+pnyliy
GOKp/6tHS8zgqr2XavE0HiykSAN+xpAXHkuOfll9SHnhZK6xEAUvce3TdE9/qL41JJ7aBhbmMukT
40Sfcb+Ip/juGUfwq/lZv7fXWH8k+goc9Kfa/4wgwLWdL5dDPKWrvsZM60LFM6D9YrTywM4cPpSh
q6101NccZd6Gc4l+YLFGHxkT80P7oaKxMLk3HYFpxNP7wZ56c5l+pv31Vefem+0zY8L3E8zP2lK/
9TN+tNMf/MEf9O9v85d+rn/wajH2jSth7UH/l//yX3b/5b/8l77Pmx/aub5qYmyJHwkCQWB9IGAO
n0Q8vbf+63/9r71ube4wx+MU3onmhv/1v/5X//4yN3jGOMGz8X/8j//Re2q5zwvJe905vuI/NXhH
ev//n//zf/p5hA4mPt0CqTQfmXfoBq1+UIiFeBYSa3TUmFzWkAcdyM/EzjJGkAQviPYjMatd1PqE
fpuPjuZlWCSrnrk3VEAodvYxqouyO1KOKEmtUBR1dEqbMIgfpY6S3X64Ymjx9AJmQZQ2ZUzaiAGl
eqF9R+VmJ7/6+SAQJYtVYVi/Ki9FzIqwssrXkYLsozalvHJTgoXn9VMeJLfCSA/x4o4oTJVB/q0r
pGdjSp9wtXdNWsgVooTAcKdo0xuuWLtWV2EosMqEeFKsW4EBpZkiU+mZfCiqrSjHmFuutmkt0lbd
xJdW9XMkXj+ZJsK0H0MRVj/00RfpKJ8+ow/6GIuxREyscFfHVihZ+kvVidsa5cy1I7GAIc3Wsms8
CvPQQw+1yc07h5l2NplX+o72T7pPuSvRT9swzpWXQln/VqnC1nG5xFM6lEsEufKmRPqXKbUYJMxi
iKc6ITjaAdbayxhB1Bciniw6k8Kw6pkXtINxYKwJi5y3OGpLc5W2b8eSl6OxWDIknu4bWzCXrvnD
fGVxADZFPIVjDdLPq996jnR60ZYYR+aOantlgYkXuBdxCeLp/lDUb/hxIVZj9WvFu0CflUaLizHc
4qK/wmUo+ldrIVY375XqD/UVb/GQDve15VCqj1g4iywdgWnE87//9//e9zF9i8JojNY5JdMih2tt
aN4zl+p/7usLwhvfFoC9o/71v/7X/eKCBYZ/9I/+UR9OvzY/CY+QsmAbd7wupFt7otsahni2aOQ8
CKw9AubpScTTu5QubT5BFM0LfvQA7wPeP7/zO7/T8wzEkX7o/UIP8X0Kc4z43jEWuP79v//3vbuu
99q/+Tf/pl9YNWcog7CMTeY1hhD6vjghnmvfRyaWgLLj5WFloVUiRKBwlGvXxATW4QMvM1Yo1gid
cpKoH6V+EumbFM8qsPTls6VEGZWVxXDYTlWGshIahAb5JKlw0pqGz6T47hfxdE5Z0IempQdr5ZL3
QlJ1Hfu64UJxx55TWLXX2L9vGAtvUmSBpngNpcYLUjGGsQmvrE9tXG2mXjWeyurTkmCTNSxLLJBw
VZXmQqKslDv1tJ9iqe26UD5Lfa7+rHHqWxgsNa2KxxJoTLRkr54t51j9b9JYQ8zqq7ZVhjFX1Ell
UH/tpF8uJNXfJpVF/BZbfWa1pOo69q5YbJ5Ii/lgbEzChTIyFCQZ8Z1lDhnGzfWvEZhGPFkLLLia
T+pXSiPLtblR2/npd8LwSkE8K9xv/uZv9hYJZPG3f/u3e0uFuel//+//3c+NXPEseogvjj3ErPcV
f7hwqeQhnr9uv5wFgfWAwDTiaSybIxBH842PcdJteDf83//7f3ujw2/91m/3nnzuM0L4l4fmBHO/
ecWCrwUqRhvfJ/Eu5NX3D/7BP+gXbxHV3/3d3+3D0vVZUemZdB+/EM/10EtShiCwggi0xHMFk10X
SSERFCPuY8sVZGs4AZpUWces/ploJwkrdhGcSWFyf8sj0BLPLZ/71pkjRYLXxdATYetEY3m1nkQ8
eWZQAHk5FOmkFFIE4c/DhauthRPPizjy0kBIS2n8/d///bl/X8VCQWG0cMKNzqIB4smrQBpFPHmr
yEvacbVdXvsmdhDYEggsRDyNZ3MCzx4eTojof/pP/6mfG8wLDDfumV98X8KCV5FO8Swo/8//+T/7
H9ddYXlD/N7v/V5vVLJAaeHSffMLQmuuISGeW6IHJI8gsIUR2MzEE5RcOU2YJrDlCFdkEzQXEG6M
0kVcuFCaaKfJNCvXtHh5troIhHiuLr5jqXMxZu0c7kEeC5t70xGYRjxZGf7jf/yPPZE0x5u/KIN+
9kf5UBpvjSKmjiye3PpLabSf3TYE++S5lrPCs5L/t//233qLp69eslYgneKYE7nV2ZesfUM8p7df
ngaB9YDANOLJ64pL/dlnn92Pe7oOgmjLBt3HvHDeeef1C03mAB5m5oWaQ2p+sdj1L/7Fv+jnDfMF
7y/eD/Zy8oBhHHDfAj/iWd4wIZ7roYekDEFghRGwas19YrOKlXdfdbTytlwxKdpbyILpZ9Ldkm7a
yy1/4s9HwD6U+nLt/Ce5Wi0EKDLDvfqrlddmT3ca8aT46d/IpA+W2W9VBJGSZ++teb8UQ+F5dHB5
F859rurmOx/IQkgRT9sP7PmkfLJScJ8T3jUPE/Oi7yywYsTVdrP3wNRvMyAwiXgikMax8WwOMF8Y
58a7eYB3Ay8JHy6lZ7nvOxDmAeHcczSX2I6BYNLDhPNM2r4FYoHL1/HdR0iFE48IP/Q0cz8fF9oM
PS91CAJBIAgEgSAQBDYMApOIJ0WNEufHYrAlf/KkaDrG4rlhulIKuhUjMIl4+mCicWxRCgHckvOI
OUS+8h9+lFJThXhuxR02VQ8CQSAIBIEgEAS2PAKTiKf9UfZereWPNYNVYyj5uNAQkVwHgbVFYBLx
5O5qDjGW12IuqXztMR1KiOcQkVwHgSAQBIJAEAgCQWAVEZhEPFcxy2UnHeK5bAiTQBBYUQQmEc8V
zWSFEwvxXGFAk1wQCAJBIAgEgSAQBKYhEOI5DZ08CwJBYBYEQjx/jdJv/Po0Z0EgCASBIBAEgkAQ
CAKFQIhnIZFjEAgCS0UgxPPXyIV4/hqLnAWBIBAEgkAQCAJBYA4BxNO/NfDP1jfKL662c82XkyCw
LhBAPD/0oQ9tmDnEXPeBD3yg+8M//MMVxy/Ec8UhTYJBIAgEgSAQBILAZkDg3/27f9f9s3/2z7rf
//3f3zC/3/zN3+ze9773bQb4U4cgsCkQ2Hbbbbvf+q3f2jBziPnun/yTf9Jts802K45/iOeKQ5oE
g0AQCAJBIAgEgc2AwOWXX96deeaZG+7nf39GgkAQWB8I+D/nG3Eeueqqq1YcwBDPFYc0CQaBIBAE
gkAQCAJBIAgEgSAQBIJAi0CIZ4vGIs79D6+LL764e/LJJxcRa2WD+sezyvD8889PTPjaa6/tbrzx
xonP18sDOPontish/q/ZM888sxJJLToN//z3nHPOmdomi050HUR46aWXui9/+Y+6T33qU93X//jr
fVuN3VsHRU0RNhkCzz33XD/PvfDCC5usZqtTnRdffLE7//zzu09/+tPdySef3N1www1zc+sDDzzQ
xRK2Orgn1SAQBIJAEFgYgRDPhTEaDfHss892Ngt/+9vfHn2+JW5+7nOf68tw0EEHda+//vpolvvs
s0+3//77jz5bi5v+We1XvvKVrlUiH3roob4eZ5111qKLdP3113c33XTTvHhHHXVU9+Y3v7mjgG1p
+eY3v9m95S1vmVe/LV2G1cjvox/9aPfOd76z+/znP98deOCBff3G7q1G3klz60YAWTLX/uBPetXy
xwAAIABJREFUf7B1AzGo/WOPPdbPpRbaSixEmn922GGHzv9gs88Pdh/+8Ie7n//8591tt93Wz42P
P/54RckxCASBIBAEgsAWQyDEc4lQryfiSbG44IILRmuy3ognK63yPvroo3PlZTk77rjjurvuumvu
3qwnSBCi2Qoyesopp8yt8rfPVvOctXOPPfboTjvttNXMZoun/cQTT/RtdvPNN8/lPXZv7mFOgsAK
IhDiOQ6m8WguLY8XxHL33XfvTj/99O6VV16Zi4SMCsdTwRzlnWC+jQSBIBAEgkAQ2NIIhHjOiLhV
5e9///v9qjvr4noinocffnj/5SnlG8o04sn6eO+99y7oLuyzysI99dRTffLqzy2WEjMUSlCLU/tc
nDvuuKNXglgvyrVWOs7HrLZcZuX9wx/+cN7zKgNr7pFHHtnH/+Wf/bLPzrHSbvN3XukhvmPlb+NS
5O6///7uwQcf7CrtYXrt9T333NPXTVmHUmlJz/msop7yb+Op2yzlmTUPfRnGjzzyyBswkdfdd9/d
1+vhhx/ucR27N8yLK7p+MAm7Fmfpsd7MIvqidJVlrL9Iq+5XX0SSx0QZlE96Fj9Kqm9VOnW/+umw
31T44f3CdVLdlLXa8eWXX57JPVwcREyZW3IxLGOV3RjXFtNEWH1W/1XmWWTYfu1CUsVfaH5p6y9f
dRrbujCNeLLcKfdCFjweFtP6jTK3Y/S1116raswdq53d8Fy5zGNtuyu/fFor5FwCf37y9NNP9+Nt
Ur9scdEvpTecr4SxhQKhNKe5Jm0/rnyNGeG++MUv9rcuvfTS3uo51n8qTo5BIAgEgSAQBFYDgRDP
GVD1Naq3v/3t/cvbC3yvvfbqXWydr7WrrU8dU6p23nnnbtddd32D4jFGPCk83HPFVS9HBG6oCFGe
rIx7rq5+xx57bHfhhRf256U0g5DC45lPRldY1r92fynrZD1zlC6hxLm2H7WEInzooYfOC7/LLrt0
LKYEEWvTcn7uuef2zyhY7373uyup/kgJPvjgg+fFgc3QyvrJT36y22+//fp9UO94xzvmwst7TLlu
M2Hp1AatIuqcNVpa22+/fe8G5/ySSy6ZF65Np86/853v9OlVPZWBW/G73vWuOSWywi7lSGEdYrz3
3nv3iwOVnn5S+ddx7F6F1yd8ue2tb31r/+PyrC2uu+66CtIfhdE/uP695z3v6c/nBRhcIG8WGNq+
uNNOO/Xx26AwthfV3ra2L6pnS/jhuOOOO/ZtYgwop7bnno2oudZGrYgDA32vFRYm46/Inj2JVdYa
Xx/5yEd6stzG++AHP9iddNJJ/f5F/3dPmSeJfmQe4u5c7aCun/3sZ/vxU/H0Uc+V1f8edI6YTRJf
rIN/pelonCDC00T7iaf9tKPzEuRLGtqq6m9+GZJD/eKMM87oTjzxxHntap5AlkrGiOftt9/eu4+2
5Taeh3MYcnXCCSd022233Vwd3/ve986bt2HL/V9Za4zC+bLLLqsi9Ef4e87SaAxW3hb+lFeb1z3h
LOa0Yg7SD1tczDXDeaWslrDRDyvNfffdd26xwf9Xq/uO5pRJYr+nsVCuytpHHHs/I0EgCASBIBAE
tiQCIZ4LoI0MeUn7UANF/dVXX+0VD+TT/fVAPFUBIaPQcDttic+QeLICITAUIIoQUa+jjz76DcT1
mGOO6RU2ChhlHMGlxBQhK+Jptd0/xqWsfetb3+oVfMoNRR5Gt9xyS58PBYu7l3v2QpYCP0Y8lYfC
iHCoD4XSPiUKvvyQYvHlS3lzrh5kSDyRYoSQwnnnnXf28RFbCi7FjtWrRJndo0SyACIryCli4Nk0
0SeQ71a+9KUv9cqq+iImMKPwUUyHim0bj5JIWVY31j3lYPlw7X5ZL9o4izmnkCMMfpR4baC++oX0
5UW02ZVXXtm3mXLDeexe5W2c6B/S1G7K7d8RSLMdK4gLDPbcc8+elP7oRz+qJEaPPmqESAknXX0X
FshCSyilaX8b3PV1/QSpqD4ncf3BPrgvfOELcxZH/UzdkRyCTAz3RhsPxhhCUKIsMDz11FP7W/LT
D+x/LUKhHJ/5zGd6olt9VGDEE/mVD7xqPFba7fGiiy7q62AftPSMR7jqq3Apkae6GifCaq9JFk8k
G4FCsIXRN41V2NjLO02q/dSVa3u1nzkCoUQ8y0NCnZXRvNPuuxbOAoVyIuva0QKFsQabIvJD4um+
fM8+++w+nmv1lL4xXaI+9jnqj/quuVs+9sabSyp9Y0k5kHX3zC/KAdv2QzyIp/aXpjEpPYsO8NaP
jRPtb8+6PqgPlai3OUj5zI2Eldd8oQ3gVoJ46sf6mTDyueKKK/p8WCsJvGsB8Lvf/ZM+z4pfR3ha
mFDmilfP9A+EPxIEgkAQCAJBYEsiEOK5ANpWlq00UzBboXhQOFplun2+Jc4pUJSKEhY/ZaKQlgyJ
pzAIYqusC0vZogiWgkJBkxbr0VCQT8+KeFJWXXPJbIUSR0mDYcnYHs8x4kmBG0rrplvPKHLDPZ5D
4lkKYynCFRcGu+22W0+66x5y+f73v39OKa37LL+sgZNEWjBAckpYjSivYwQTzq2VrOLU0R5VpGro
DkcJpdQul3gqk/IOrVDagvWqVZqRUGER05Kxe9ISbmxMICqU/RLX6rGQZa3C6w/DMXjffff1+bWW
JQr7EBv9sMWsPmYlfitt+iyBxla5LmrfSru1ahfR0zeJhRVt3hIJ95XBOECWSpAr/bfNt561R22i
L7CODqXasUhuleeaa64ZBh29HhtnSD5iN020nzIN2++8887riZ5+2or5BW6tFdl8M2blvfrqq/t2
rfYZEk/pjpW79jLCmtx66619OuUl0Zan5j+E0KJISzArnPTatjaPaNuWyDvX54VtRVu184U5E17D
cptDLVxYWChBPMfaWrj2/nCPZ8V3VL9aqBur/yGHHNJ/eKiNk/MgEASCQBAIAquNQIjnFIRZFigV
Y8TBSvQkJXtKkiv6aEg8KTFIMuWo3KqGxNPKPBKlbsOfFfCy8ljxV7+h65oKUNI8K+J5/PHH9x+1
GFOgK2xZcxZDPClr3DqRIESg9lC2FspZiCdMDjjggFHsEQGKJ8WYIJ4saUNhOfCFyElSfaWIu3Bl
LUcGhlhrHxiy1IwJ5XPSB0BWwtUWHnAZE9ZCrnlFHsZI5tg9pJu1jNvhsL5FAowbgrhQpFuhLLMG
tb8iCI6Uc5Y0lkkETz+AYatYI4cIwlAQiCJ9+i1yzRLG6slddEgIEEfEkzWPUPIRJZjIo/ogN2qE
ovqP8aNPDuvvWl7GXwniOUa86nkdlU89i4jVfUcLE9qqFoiKeE5zr23js5wpgzIjnEi8eaV1nW3D
17n2GwtjjLDijdWf1ffjH/94JdHjOVwk8BCZUyf9kIwRT/1IGZSbNdViR8011RbqY2FpbF6qQphX
YKvPDctc+VpkJPqVtm9FXuKzdrbC7b6dL8zDyjnMwzX8WchLjP2xL3zz7oBhyTTiaeFB/60FiYpT
R/Oc/hwJAkEgCASBILAlEQjxnIJ2WXC84IeyHomnMnJrowhzK6VMD4knZRvRqj14w2NZpcqSMlTI
5VEKXhFPRGCMrAlbSjMrE5mFeLJY1L/qkBfSwlKrLpS8UvqlNwvxZL2hhI5Juf6WZWsS8RwqksO0
fDBE2ZS3hKLqHmV1iHNdq9uYaKfWpbMNsxLEE5ZDt+DKo5RxVm8yRjLH7nHPVN+q29ixPrw0RjzL
gimN+ukviIMFCG6prPkwQ7QQN+EWSzzVCbEsgiUNizUWF4q0CINElhurfiE8cQ+JJPopl/ASVi6k
aazu7iHAJbMST26iylikveLXES5cPsliiKe2sFBgDHGRN89xJ1bGMVJZ+TlOIp723U6bX9S5BPEZ
I56em8OqTkUAazHNWOVWi9jBBunk6qzMcKo2POyww+YR3cq3PVo4EGdSe7lf1uzlEE/lndYveFmU
TCKe5uZZiaeFQ+1Q81qlXUeLjOaYSBAIAkEgCASBLYlAiOcUtK1GU0paK1YFX6/EU/nK9RXZGhJP
JKxVlKs+w2N9MbF1r6wwQ+Ipn9YlrcI5FrFDzMgsxLO+otoSCnHtg9MeiyWerCyTiDECgXSUsrpU
4onIDPtKWTzbD6X0IMzwh2XMPtcxWQniiWy0VpY2HySf0lrWxjGSOXaPxROWXEMXkjHiqQ2GFiH3
yq3dx5ZaqTK0/WQWi2ebhnNjmXVd2bmKlhj3iAeromNZEY0N5KDmh9rDLB6yiiTPIrMSz3Ixb12K
K33EgmVL+cliiCe3TeO2+n6laX5YKvFEvCdZ6iv9Ok4invBWp7LiDomndvF86M5cex6rPsjVpHmp
ylCLLMO06nl7XA7xNA8j9bPIShBPY9A8PXTVr/wtOsEmEgSCQBAIAkFgSyIQ4rkA2hQGCnrtG6rg
5So5tp+twqz2cehq2+bHeoMIIRDlPut5fexmTNFq60ihtUJfVoc2bWRN2mXxLDfK4RdipedrnmVF
lUYRz5bQUpKkV1+1ra+H1kc4Ku9yrRwSTx8CaoUVpXUjK0V1uJ+R2yTlq7X8LZV4UnbVoSUutccT
kRsKK16L9/A5YlZuq+0z7YZcTbIUtWGnndfiQdsOwiObFN9232wRvDbs2L3yEGitvlWGYV3HiGeF
HR5rwaGspfW8SNZSiGe5EVdajvoR630J7wFtyprGkld14AWApLqvjYqgi2ehBSkac1Gv+JX+rMRT
32KdGvsYzNe+9rW+jJVfYVIkufIaO6qv8TmUsgQP77fXkyyeyCJMkPKhDOtvjLYWvApfH7OqcT4k
nsaTMTB0oa14RTzL26IslpW+eOXJUXs8i+RWGMfhGF0O8ayFjfIiaPMZ4rJY4jmWZpv+2DmX9dbK
OhYm94JAEAgCQSAIrDQCIZ4LIGqvDOWTFYBijZAhRlb23S/iSZGxZ26Se+QC2Szp8TTiSRmmWChj
SzwphNy+EGrkgXIlrHoK37pmSV985JPSTxFkJRHf/SKejupOOebihXAhKVwSKeEUwBJ7GsVlaUAs
4TYknspAsbf3qfJwj5Iqbimk0uROxzqoXvX/EofE06o/Cw6FjtXMtXLAhZLcEpqlEk9lgenQSklJ
hgGXvvoQi/yQ3faDJMpsgaPwtyfWB3HUjQskQmG/oTyGxJPFmSJZWCF+wokzSeDO+o14s9jBBK4s
obBvMR4jmWP35IUcie8rnPLQv4RlBWz/tc5iiKd0fOnUXuIiFcpbiyuLJZ7Ko97KU+mpr/47JCAW
TfQ5H3tqBWlzf9jehau+hvAgFfIwZ2iT2ussrVmJp7Dl+s6dWRoWIBAhC0utG/liiCeiJn47PvVN
Y2WpFk/lQijNj8hvzS8Wlcwvw6/aalfzjA9/6fvKpH/7KJm4ZEg8aw6xoFRheFQYz9qk2hT27nFF
Nr9J35xjHoF9ET77KY1Re4j1K2JhUdvKo2Q5xLO+ass9mEdH4WK+hEu7EDgr8fQ1W/Wt+aHqrbwW
IqRrHA5F3vp6+6GiYZhcB4EgEASCQBBYDQRCPGdAlVXBi9pL3s/XKWs1vYgnd0oK96QPtsyQzaKD
UEIpTJMEEaPEDT+sQ8k74ogj+rjKLA0feqHcliInTYoZ4kRxU29hKWmlBBfREZbC5l9pCFM4UbIK
nyojkoncVBjK+ZB4Ciuer++yNFGgkLLaj9WSIvEpz9Iry+o555zzBjcy7pSseOpaeUsTCWmFm2BL
1OsZ5ZgyPU0Q9NYyJiw8fckTWZc3fPy43bUkBDFjYW6/vKue2q7Kq99Rwn0Nt7V4IgkU+LLi1YIB
18NpwlJicUC+lQcL2NBaNkYyx+7JS5+Av/FS9dUH9Y1WuWY1X4jctGXXzuqtTyBw2rq+YtoSTy6x
CMJQfGSmMLPQIn9lVHeLD/qQxaXCsOKX+6Z/w9MKwgCz+vhQ+8wiiIUFafrBQftzRS6yI/xiiKfw
SARSV21lYcJ4bAnHYoinsrDaKqMFDv1bf0Dw7RGfJpMsnuLo14h5tb8jMtUSReHURTr6aztvmJva
vjIknuJqe/1Ku5ofzCkW/WDT4uFDRRawtHHhJrz+VGKMIp36V5VZebRh++9v9Cv9qxV5SRdhbmVs
vpCWOUifk37hYn5o591ZiadFDuO16tXOi7VdQd2HUn2kXQgahsl1EAgCQSAIBIHVQCDEc0ZUKav2
mtX/lRyLhnxSBjaKUJB99Ici0io+w/JTroRFEAl3UorcmLAqSHMaTrBkWWmJ11ha8oX5QuWj0LFQ
zIK9elDQWoI3lvdS7pUlxnEolHxfEFWfsny2YZR90sdjkHq4aiPYUVpbUumZepXIy79LYGWbRSj5
2mzo2jxL3Elh9BVtor6ztMukdNr7SO0s/aGNM+1c/9IP9Yf2X2RMi7OYZzUWWP9bwrmYNIZh2340
JMnDsLNeV/u3fWjWuNPCVbqTxi/iWYsBFXbSGBjLR7/SdgvNI+IaQwv1Hf1Lf5g0RsfKsJR7VVe4
LLdf6APGWUuQq0zmOH18KEXaV2pcDtPPdRAIAkEgCASBSQiEeE5CJvf7L10O90VSmrgpzvoBka0J
RsSQ++rYvrXF4oBgshANFdOy8tWevrF0WeP864XWIj0WLveCwFoi0BLPtSzH1pS3+YR1mwdCJAgE
gSAQBILAlkYgxHNLI76B8qv9etxCufQhVNwTubethsVwA0Ezsag+tMR1cTGWm7HEWF64zyKy3Pbg
78u83Orq/xuOxXOP5Z21LRIE1jMCIZ5bvnXsB+WiXF8Z3/IlSI5BIAgEgSCwNSMQ4rk1t/4CdWfB
sxfKXlIWTsTTnrbVcEtcoCgb6jFL5Zg77WIrwfXR/i8LAPC3d5IbYCQIbAYEfGBsuMd6M9RrPdeB
e2/2dq7nFkrZgkAQCAKbG4EQz83dvqldEAgCQSAIBIEgEASCQBAIAkFgzREI8VzzJkgBgkAQCAJB
IAgEgSAQBIJAEAgCmxuBEM/N3b6pXRAIAkEgCASBIBAEgkAQCAJBYM0RCPFc8yZIAYJAEAgCQSAI
BIEgEASCQBAIApsbgRDPzd2+qV0QCAJBIAgEgSAQBIJAEAgCQWDNEQjxXPMmSAGCQBAIAkEgCASB
IBAEgkAQCAKbG4EQz83dvqldEAgCQSAIBIEgEASCQBAIAkFgzREI8VzzJkgBgkAQCAJBIAgEgSAQ
BIJAEAgCmxuBEM/N3b6pXRAIAkEgCASBIBAEgkAQCAJBYM0RCPFc8yZIAYJAEAgCQSAIBIEgEASC
QBAIApsbgRDPzd2+qV0QCAJBIAgEgSAQBIJAEAgCQWDNEQjxXPMmSAGCQBAIAkEgCASBIBAEgkAQ
CAKbG4EQz83dvqldEAgCQSAIBIEgEASCQBAIAkFgzREI8VzzJkgBgkAQCAJBIAgEgSAQBIJAEAgC
mxuBEM/N3b6pXRAIAkEgCASBIBAEgkAQCAJBYM0RCPFc8yZIAYJAEAgCQSAIBIEgEASCQBAIApsb
gRDPzd2+qV0QCAJBIAgEgSAQBIJAEAgCQWDNEQjxXPMmSAGCQBAIAkEgCASBIBAEgkAQCAKbG4EQ
z83dvqldEAgCQSAIBIEgEASCQBAIAkFgzREI8VzzJkgBgkAQCAJBIAgEgSAQBIJAEAgCmxuBEM/N
3b6pXRAIAkEgCASBIBAEgkAQCAJBYM0RCPFc8yZIAYJAEAgCQSAIBIEgEASCQBAIApsbgRDPzd2+
qV0QCAJBIAgEgSAQBIJAEAgCQWDNEQjxXPMmSAGCQBAIAkEgCASBIBAEgkAQCAKbG4EQz83dvqld
EAgCQSAIBIEgEASCQBAIAkFgzREI8VzzJkgBgkAQCAJBIAgEgSAQBIJAEAgCmxuBEM/N3b6pXRAI
AkEgCASBIBAEgkAQCAJBYM0RCPFc8yZIAYJAEAgCQSAIBIEgEASCQBAIApsbgRDPzd2+qV0QCAJB
IAgEgSAQBIJAEAgCQWDNEQjxXPMmSAGCQBAIAkEgCASBIBAEgkAQCAKbG4EQz83dvqldEAgCQSAI
BIEgEASCQBAIAkFgzREI8VzzJkgBgkAQCAJBIAgEgSAQBIJAEAgCmxuBEM/N3b6pXRAIAkEgCASB
IBAEgkAQCAJBYM0RCPFc8yZIAYJAEAgCQSAIBIEgEASCQBAIApsbgRDPzd2+qV0QCAJBIAgEgSAQ
BIJAEAgCQWDNEQjxXPMmSAGCQBAIAkEgCASBIBAEgkAQCAKbG4EQz83dvqldEAgCQSAIBIEgEASC
QBAIAkFgzREI8VzzJkgBgkAQCAJBIAgEgSAQBIJAEAgCmxuBEM/N3b6pXRAIAkEgCASBIBAEgkAQ
CAJBYM0RCPFc8yZIAYJAEAgCQSAIBIEgEASCQBAIApsbgRDPzd2+qV0QCAJBIAgEgSAQBIJAEAgC
QWDNEQjxXPMmSAGCQBAIAkEgCASBIBAEgkAQCAKbG4EQz83dvqldEAgCQSAIBIEgEASCQBAIAkFg
zREI8VzzJkgBgkAQCAJBIAgEgSAQBIJAEAgCmxuBFSeeDz/8cLfTTjt1d9xxR4/ciy++2O28887d
DTfc8AYkX3vtte7II4/sw1999dVveD5245hjjunDv/TSS2OPc+/PEdhvv/26XXfddYvgoW0vvvji
7vXXX5/L75prrunb6brrrpu7N8vJGWec0cf7wZ/+YJbgiwrz4x//uE/7M5/5zLx4t9xyS3f++ed3
v/jFL+bd32gXn/rUp/r6GX+PP/741OJfcsklc2GFb3/vfve7u6OOOqr7zne+0/3qV7+al472FPbM
M8+cd38jX3z729/u63TppZeu22qcffbZfRkffPDBdVvG5RTsrrvu6s4999zuZz/72XKSWZdxr7ji
ir7tbrrppnVZvhQqCASBIBAEgsCWQmDFiedZZ53Vbb/99t3Pf/7zvg5XXnllt80223TPP//8vDpR
8pHON73pTf3vsssum/d80sWBBx7Yh18J4kmxPvbYY7vvf//7k7LbsPf32muv7s1vfvOql/+FF16Y
a8M777xzLr+v//HX+/vf+MY35u7NcnLSSSf18VZDwX7yySf7tD/xiU/MFUU/1D/1wxtvvHHu/pY8
efTRR/t+iKwvVZ577rlu22237euhLqeffvrUpL785T/qw77tbW/rEM367bLLLv34rXF56qmnziOf
2tOzk08+eWr6G+mhdlenCy64YN0W+7Of/Wxfxs04VwH9ne98Z1+/9Uz+p3UO7zfvEgs6Q3FP/1rs
ItwwnYWuLawpg7k3EgSCQBAIAkFgPSKwosSTdWSPPfboX35V2YMPPrjbf//967I//vLPftlR/r2M
kSPHtSCeF110UZ/3mDV2XoE34MWWIp7akhX64x//eMe6XbJRiKc+ywL6kY98pHvmmWeq+Fv0eM89
9/T98HOf+9yS82WxNY6MNccdd9xxbvFnLNEinqxMQ0HGKck1NltCviWJ5znnnNN997t/Mizeil+H
eK44pItO0ILlPvvs0z3yyCOLjrseIowtalW5thTx5CVi7J944omVdY5BIAgEgSAQBNYVAitKPH/4
wx/2L75vfetbfSVZJVlh2hVY7pjHH398H47Fk9If4rnyfWJLEc9JJd8oxHNS+bfk/eUST2Nqt912
68cRi9gBBxzQn19//fUTqzGNeFakCy+8sE+nXTjaksST9fVLX/pSFWfVjiGeqwbtVpNwiOdW09Sp
aBAIAkEgCCwDgWUTz6effrqzWu1XbrCnnXZaf3300Uf3iity6bm9VNyBWGOEtcfzlFNO6cOshMWT
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
CGBBLK1/AAAAAElFTkSuQmCC
--00000000000004417f05b3dc6ae3--


From nobody Wed Nov 11 17:31:52 2020
Return-Path: <kixelated@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 28F363A12B5 for <webtransport@ietfa.amsl.com>; Wed, 11 Nov 2020 17:31:51 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.096
X-Spam-Level: 
X-Spam-Status: No, score=-2.096 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DC_PNG_UNO_LARGO=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 PbfkXhuAinLP for <webtransport@ietfa.amsl.com>; Wed, 11 Nov 2020 17:31:49 -0800 (PST)
Received: from mail-ot1-x32a.google.com (mail-ot1-x32a.google.com [IPv6:2607:f8b0:4864:20::32a]) (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 F056C3A12B8 for <webtransport@ietf.org>; Wed, 11 Nov 2020 17:31:48 -0800 (PST)
Received: by mail-ot1-x32a.google.com with SMTP id 30so4055927otx.9 for <webtransport@ietf.org>; Wed, 11 Nov 2020 17:31:48 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=t/8evVVE2YCGyuavUcqG2wsYttbAbWXUhngkXMJ9Iyc=; b=dYoHIP1zu11oRqrg7aOf4Aa3T4fZ0DkaT+spn9P504ozhQ7w/M1R5HLWgbHmBxFvqu 9gn6zBs8tq5O/dftsV91SQSIMYC75h/ukVJ7fF/fInvSxiYkeFSZvL2kvWbiuOEb+iLf CLCiZ9oo1koqZ900tiCu/pAp2NQ73iW0/jHJIr9Kzt89RuTQ/ZitUIEJF6n+F8wISCsZ 4AXAgQTGgyQ1u949wZ4ovaqxIQ5moIMWk5xQ1xdPitrwRh2rioXlDOsmfA+zH4KAdFNx eXMeT7Lh9iaE4x9znYRodtlIlm5k7LXVgRZheCohtn+BcikrJDm8URFLSmIVD7VFVJHN qFlA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=t/8evVVE2YCGyuavUcqG2wsYttbAbWXUhngkXMJ9Iyc=; b=WpdveRuW3stAgFXxUsGfP8wFph7mv4Wrl5p629a3fxW+a8ZSivE4Sy48VhbYv3bX96 Kqg6Vrro8D0rsoLPN0Z7tXxPvQGPFGSnDfP5+kDl60HzWzYdgqckxhoGkf2lHPq/tAAH TsWGvz0ztn7kN/rF7mOjmLux/WMlnt38AslLbpNooT/IxGTQjRw5q5pyz/UJ07Vrbcet VlxMf1JYU3lzYl/nsH9+7a+4oPFr7Hi45CCp+iR+lR5JGUvHoW+ic+HSu825XpZKdANm aC5aLveFYLM2szuSzhQ7iTU6P/O2La/URRlYHMWh3TzLI9V+yLnUrHeLd4tn6uajRA4K TTPg==
X-Gm-Message-State: AOAM533txc/eDimOgr/QINI5v1UcbpvPsElE/UVDw9ezvzCZ8R9KC4ks P5T6+jvUv7wpCj23eqEi4ZcuKNUwdeDMNTC1sHaI5pMTuYH77w==
X-Google-Smtp-Source: ABdhPJwwxexUR8fcxsuUfwgGQkY8S1gsIoH6/S4HZeZHZPjkySfM0+3wrKIRamk5GE9+ESrq7TOJvYtTgWsoVCYNsBg=
X-Received: by 2002:a05:6830:22da:: with SMTP id q26mr20632248otc.127.1605144707873;  Wed, 11 Nov 2020 17:31:47 -0800 (PST)
MIME-Version: 1.0
References: <CAHVo=Zk84mfOJr3XSXmrVDBq0XUKoB63ytCR1dhhtM7aehq7qw@mail.gmail.com> <CAAZdMafmO3qKQKegJ7X+MvTjnPvKnO3+B1T-aRME6FZqL-e_1A@mail.gmail.com> <CAOW+2dv8bGfftqZYFnPGpOX+XPzydh4_KJjknhu5FxP-w1neTw@mail.gmail.com>
In-Reply-To: <CAOW+2dv8bGfftqZYFnPGpOX+XPzydh4_KJjknhu5FxP-w1neTw@mail.gmail.com>
From: Luke Curley <kixelated@gmail.com>
Date: Wed, 11 Nov 2020 17:31:39 -0800
Message-ID: <CAHVo=Zkhav-SqLAPocm2ZtEOwfrjBvOUuJ4egphLiw_UA67JYA@mail.gmail.com>
To: Bernard Aboba <bernard.aboba@gmail.com>
Cc: Victor Vasiliev <vasilvv=40google.com@dmarc.ietf.org>,  WebTransport <webtransport@ietf.org>
Content-Type: multipart/related; boundary="0000000000002093ba05b3dee080"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/RcPFpyAJIKD0L90NIpPrHcgzV5w>
Subject: Re: [Webtransport] HTTP/3 Downgrade
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 12 Nov 2020 01:31:51 -0000

--0000000000002093ba05b3dee080
Content-Type: multipart/alternative; boundary="0000000000002093b905b3dee07f"

--0000000000002093b905b3dee07f
Content-Type: text/plain; charset="UTF-8"

@bernard I think that use-case boils down to a lack of HTTP functionality.
The "proper" approach would be to use HTTP server push for media, but
nobody likes that. Justin's ask is to instead to augment HTTP/3 such that
it muxes in QUIC-like connections. I do think it address HTTP's
short-comings, but it's non-trivial and will require custom HTTP/3
implementations.

My use-case is almost identical (Twitch). We're implementing a video
protocol over QuicTransport instead of trying to leverage HTTP/3. It gives
us the ability to push media while utilizing stock QUIC implementations.
All you need on top is a simple API layer, such as JSON messages over
bidirectional streams.

As for firewall traversal, QUIC connections can use the same socket and
would thus share the NAT binding... assuming middleware does not decode
QUIC initial packets. Each connection could end up on different host
depending on load balancing though.

Has somebody formulated a list of pros and cons for Http3Transport as
compared to QuicTransport?

On Wed, Nov 11, 2020 at 2:35 PM Bernard Aboba <bernard.aboba@gmail.com>
wrote:

> Victor said:
>
> "Http3Transport without pooling doesn't make that much sense."
>
> [BA] Some Http3Transport use cases depend on pooling between WebTransport
> and HTTP/3 request/responses; others could just be satisfied by
> WebTransport pooling.  I would suggest that we distinguish these two
> requirements, because pooling/sharing a QUIC connection between
> WebTransport instances appears simpler than pooling/sharing a QUIC
> connection between WebTransport and HTTP/3.
>
> At IETF 107 RIPT BOF there was a desire expressed to enable media services
> to leverage HTTP infrastructure. Justin Uberti described a use case where
> gRPC would be sent over HTTP/3 to request that the server initiate either a
> reliable stream or flow of datagrams (see below).  This use case appears to
> require pooling of WebTransport and HTTP/3 request/responses (in order to
> simplify firewall traversal).  However, this use case is not easily
> supported using an garden variety HTTP/3 server, which probably could not
> initially be expected to support QUIC datagrams (although it would not be
> hard to support in node.js assuming that a QUIC module was available).
>
> See Slide 7 here:
> https://datatracker.ietf.org/meeting/107/materials/slides-107-ript-rtc-implementation-experiences-00
>
> [image: image.png]
>
> On Wed, Nov 11, 2020 at 1:52 PM Victor Vasiliev <vasilvv=
> 40google.com@dmarc.ietf.org> wrote:
>
>> I'm not sure "HTTP/3 without pooling" does anything that QuicTransport
>> doesn't already do, especially since the latter got real header support.
>> So, at least as far as my understanding of this space goes, Http3Transport
>> without pooling doesn't make that much sense.
>>
>> On Wed, Nov 11, 2020 at 4:43 PM Luke Curley <kixelated@gmail.com> wrote:
>>
>>> It seems like connection pooling introduces a lot of technical
>>> complexity for limited benefits. Hypothetically, what if connection pooling
>>> was dropped as a requirement?
>>>
>>> What if Http3Transport involved establishing a new HTTP/3 connection and
>>> downgrading it to QUIC? It would be analogous to WebSockets for HTTP/1.1.
>>>
>>> You could use 0-RTT to minimize latency when establishing a HTTP/3 or
>>> Http3Transport connection to an existing host. These connections would not
>>> share congestion control state (unfortunate), but would also not share flow
>>> control limits (yay).
>>>
>>> I also think this is how you could merge QuicTransport and
>>> Http3Transport. Use HTTP/3 for the handshake, and QUIC for the data
>>> transfer.
>>> --
>>> Webtransport mailing list
>>> Webtransport@ietf.org
>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>
>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
>

--0000000000002093b905b3dee07f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>@bernard I think that use-case boils down to a lack o=
f HTTP functionality. The &quot;proper&quot; approach would be to use HTTP =
server push for media, but nobody likes that. Justin&#39;s ask is to instea=
d to augment HTTP/3 such that it muxes in QUIC-like connections. I do think=
 it address HTTP&#39;s short-comings, but it&#39;s non-trivial and will req=
uire custom HTTP/3 implementations.=C2=A0</div><div><br></div><div>My use-c=
ase is almost identical (Twitch). We&#39;re implementing a video protocol o=
ver QuicTransport instead of trying to leverage HTTP/3. It gives us the abi=
lity to push media while utilizing stock QUIC implementations. All you need=
 on top is a simple API layer, such as JSON messages=C2=A0over bidirectiona=
l streams.</div><div><br></div><div>As for firewall traversal, QUIC connect=
ions can use the same socket and would thus share the NAT binding... assumi=
ng middleware does not decode QUIC initial packets. Each connection could e=
nd up on different host depending on load balancing though.<br></div><div><=
br></div><div>Has somebody formulated a list of pros and cons for Http3Tran=
sport as compared to QuicTransport?</div></div><br><div class=3D"gmail_quot=
e"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Nov 11, 2020 at 2:35 PM Be=
rnard Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com">bernard.aboba@gm=
ail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"=
margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-lef=
t:1ex"><div dir=3D"ltr">Victor said:=C2=A0<div><br></div><div>&quot;Http3Tr=
ansport without pooling doesn&#39;t make that much sense.&quot;</div><div><=
br></div><div>[BA] Some Http3Transport use cases depend on pooling between =
WebTransport and HTTP/3 request/responses; others could just be satisfied b=
y WebTransport pooling.=C2=A0 I would suggest that we distinguish these two=
 requirements, because pooling/sharing a QUIC connection between WebTranspo=
rt instances appears simpler than pooling/sharing a QUIC connection between=
 WebTransport and HTTP/3.</div><div><br></div><div>At IETF 107 RIPT BOF the=
re was a desire expressed to enable media services to leverage HTTP infrast=
ructure. Justin Uberti described a use case where gRPC would be sent over H=
TTP/3 to request that the server initiate either a reliable stream or flow =
of datagrams (see below).=C2=A0 This use case appears to require pooling of=
 WebTransport and HTTP/3 request/responses (in order to simplify firewall t=
raversal).=C2=A0 However, this use case is not easily supported using an ga=
rden=C2=A0variety HTTP/3 server, which probably could not initially be expe=
cted to support QUIC datagrams (although it would not be hard to support in=
 node.js assuming that a QUIC module was available).=C2=A0</div><div><br></=
div><div>See Slide 7 here:=C2=A0<a href=3D"https://datatracker.ietf.org/mee=
ting/107/materials/slides-107-ript-rtc-implementation-experiences-00" targe=
t=3D"_blank">https://datatracker.ietf.org/meeting/107/materials/slides-107-=
ript-rtc-implementation-experiences-00</a></div><div><br></div><div><div><i=
mg src=3D"cid:ii_khdyrmmj0" alt=3D"image.png" width=3D"562" height=3D"294">=
<br></div></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=
=3D"gmail_attr">On Wed, Nov 11, 2020 at 1:52 PM Victor Vasiliev &lt;vasilvv=
=3D<a href=3D"mailto:40google.com@dmarc.ietf.org" target=3D"_blank">40googl=
e.com@dmarc.ietf.org</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex"><div dir=3D"ltr">I&#39;m not sure &quot;HTTP/3 without =
pooling&quot; does anything that QuicTransport doesn&#39;t already=C2=A0do,=
 especially since the latter got real header support.=C2=A0 So, at least as=
 far as my understanding of this space goes, Http3Transport without pooling=
 doesn&#39;t make that much sense.</div><br><div class=3D"gmail_quote"><div=
 dir=3D"ltr" class=3D"gmail_attr">On Wed, Nov 11, 2020 at 4:43 PM Luke Curl=
ey &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D"_blank">kixelated@g=
mail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D=
"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le=
ft:1ex"><div dir=3D"ltr"><div><div>It seems like connection pooling introdu=
ces a lot of technical complexity for limited benefits. Hypothetically, wha=
t if connection pooling was dropped as a requirement?=C2=A0</div></div><div=
><br></div><div>What if Http3Transport involved establishing a new HTTP/3 c=
onnection and downgrading it to QUIC? It would be analogous to WebSockets f=
or HTTP/1.1.=C2=A0=C2=A0<br></div><div><br></div><div><div>You could use 0-=
RTT to minimize latency when establishing a HTTP/3 or Http3Transport connec=
tion to an existing host. These connections would not share congestion cont=
rol state (unfortunate), but would also not share flow control limits (yay)=
.</div></div><div></div><div><br></div><div>I also think this is how you co=
uld merge QuicTransport and Http3Transport. Use HTTP/3 for the handshake, a=
nd QUIC for the data transfer.</div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div>

--0000000000002093b905b3dee07f--

--0000000000002093ba05b3dee080
Content-Type: image/png; name="image.png"
Content-Disposition: inline; filename="image.png"
Content-Transfer-Encoding: base64
Content-ID: <ii_khdyrmmj0>
X-Attachment-Id: ii_khdyrmmj0

iVBORw0KGgoAAAANSUhEUgAAA54AAAHkCAYAAABWqfBpAAAgAElEQVR4AeydaZAVVZq//5/nw0xM
zETMfOkvE9Eds/R0z/Q2vc10z3RP9/S+r3Wr2Pd9UxRQEJRNEJBNRUX2fREQAWkWZREERUEWFRBE
NgUFQRCq3n88Wfe9dW5W5q1b1C2oon8nIiuzMs/6nJMnz++8J/P+P5MTAREQAREQAREQAREQAREQ
AREQgUYk8P8aMW5FLQIiIAIiIAIiIAIiIAIiIAIiIAIm4alGIAIiIAIiIAIiIAIiIAIiIAIi0KgE
JDwbFa8iFwEREAEREAEREAEREAEREAERkPBUGxABERABERABERABERABERABEWhUAhKejYpXkYuA
CIiACIiACIiACIiACIiACEh4qg2IgAiIgAiIgAiIgAiIgAiIgAg0KgEJz0bFq8hFQAREQAREQARE
QAREQAREQAQkPNUGREAEREAEREAEREAEREAEREAEGpWAhGej4lXkIiACIiACIiACIiACIiACIiAC
Ep5qAyIgAiIgAiIgAiIgAiIgAiIgAo1KQMKzUfEqchEQAREQAREQAREQAREQAREQAQlPtQEREAER
EAEREAEREAEREAEREIFGJSDh2ah4FbkIiIAIiIAIiIAIiIAIiIAIiICEp9qACIiACIiACIiACIiA
CIiACIhAoxKQ8GxUvIpcBERABERABERABERABERABERAwlNtQAREQAREQAREQAREQAREQAREoFEJ
SHg2Kl5FLgIiIAIiIAIiIAIiIAIiIAIiIOGpNiACIiACIiACIiACIiACIiACItCoBCQ8GxWvIhcB
ERABERABERABERABERABEZDwVBsQAREQAREQAREQAREQAREQARFoVAISno2KV5GLgAiIgAiIgAiI
gAiIgAiIgAhIeKoNiIAIiIAIiIAIiIAIiIAIiIAINCoBCc9GxavIRUAEREAEREAEREAEREAEREAE
JDzVBkRABERABERABERABERABERABBqVgIRno+JV5CIgAiIgAiIgAiIgAiIgAiIgAhKeagMiIAIi
IAIiIAIiIAIiIAIiIAKNSkDCs1HxKnIREAEREAEREAEREAEREAEREAEJT7WBBhOounbe3tzzvK1e
sdgWzJ9vi5c/a8/vfMPOX2lw1Iqg2RGotA/e2WObN261N09fbTa5v3b5tO19cb2tWLrQ5i9YZCvW
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
GeELf1E77a7QeREQAREQAREQAREQgTQCJfdR3kIAACAASURBVBWeDMIPLLsnN7iMfh6lgJUhzFTl
le02soNbHDrYzK2Jaw2DIKUUnkR7yfauf9Tu6uJWp3AgW26d+j5kz+55364Hy4LThCccTr++2AZ3
82WYHteNCc/6xnft0hFbM2Ok9WjrPD396n2moqMNHrfQXns3tCQFaIs8rLp+zl5aNdUGdq+xoIaD
/kxFW+s3ZKqtf/X9OiYRiuXV8DoqvfCshvXh8Rds2vDeuWXFeRzKO9iQh1fYm+euW/gTJnHhSUzn
33rOHr63S3Y5an69tWjbz6Yu5mdWrtvuuaUUnqUrw80QntW5vWbHdy+xBwd0zPU3IfPod1B7PGAL
Nx5JXDpfHUf4t9LefXmuDe7V1lq37Wnj5++xi0X2XWEsOhYBERABERABERABEUgmUGLhmZxIczpb
9ck5O/TSBluxaJ7NmjnL5i9Zbdv2nLihj41UXjlte154xhbNm22zZs23lc+9bKc+KvZdytrU6htf
5dWztn/nBluxZL7NnjXb5s5fZus2v2Inztdh/qmddMEzVZUf24kD223dqqU2b84cW7D4aVu3abcd
P1c/YVts+UpZRwULVu+LlXbh1D7bvGa5zZ8722bPWWgr1223w2eK+9mZmuSu2pkju+y5VYts7uyZ
NnvuElu7+VU73YC2UxN3XUelKkNd6ZTq+jU7+/YrtuHZZTYP5rPn29KVf7LdB06bPmZbKsaKRwRE
QAREQAREQAQaTkDCs+EMFYMIiIAIiIAIiIAIiIAIiIAIiEABAhKeBeDokgiIgAiIgAiIgAiIgAiI
gAiIQMMJSHg2nKFiEAEREAEREAEREAEREAEREAERKEBAwrMAHF0SAREQAREQAREQAREQAREQARFo
OAEJz4YzVAwiIAIiIAIiIAIiIAIiIAIiIAIFCEh4FoCjSyIgAiIgAiIgAiIgAiIgAiIgAg0nIOHZ
cIaKQQREQAREQAREQAREQAREQAREoAABCc8CcHRJBERABERABERABERABERABESg4QQkPBvOUDGI
gAiIgAiIgAiIgAiIgAiIgAgUICDhWQCOLomACIiACIiACIiACIiACIiACDScgIRnwxkqBhEQAREQ
AREQAREQAREQAREQgQIEJDwLwNElERABERABERABERABERABERCBhhOQ8Gw4Q8UgAiIgAiIgAiIg
AiIgAiIgAiJQgICEZwE4uiQCIiACIiACIiACIiACIiACItBwAhKeDWeoGERABERABERABERABERA
BERABAoQkPAsAEeXREAEREAEREAEREAEREAEREAEGk5AwrPhDBWDCIiACIiACIiACIiACIiACIhA
AQISngXg6JIIiIAIiIAIiIAIiIAIiIAIiEDDCUh4NpyhYhABERABERABERABERABERABEShAQMKz
ABxdEgEREAEREAEREAEREAEREAERaDgBCc+GM1QMIiACIiACIiACIiACIiACIiACBQhIeBaAo0si
IAIiIAIiIAIiIAIiIAIiIAINJyDh2XCGikEEREAEREAEREAEREAEREAERKAAAQnPAnB0SQREQARE
QAREQAREQAREQAREoOEEJDwbzlAxiIAIiIAIiIAIiIAIiIAIiIAIFCAg4VkAji6JgAiIgAiIgAiI
gAiIgAiIgAg0nICEZ8MZKgYREAEREAEREAEREAEREAEREIECBCQ8C8DRJREQAREQAREQAREQAREQ
AREQgYYTkPBsOEPFIAIiIAIiIAIiIAIiIAIiIAIiUICAhGcBOLokAiIgAiIgAiIgAiIgAiIgAiLQ
cAISng1nqBhEQAREQAREQAREQAREQAREQAQKEJDwLABHl0RABERABERABERABERABERABBpOQMKz
4QwVgwiIgAiIgAiIgAiIgAiIgAiIQAECEp4F4OiSCIiACIiACIiACIiACIiACIhAwwlIeDacoWIQ
AREQAREQAREQAREQAREQAREoQEDCswAcXRIBERABERABERABERABERABEWg4AQnPhjNUDCIgAiIg
AiIgAiIgAiIgAiIgAgUISHgWgKNLIiACIiACIiACIiACIiACIiACDScg4dlwhopBBERABERABERA
BERABERABESgAAEJzwJwdEkEREAEREAEREAEREAEREAERKDhBCQ8G85QMYiACIiACIiACIiACIiA
CIiACBQgIOFZAI4uiYAIiIAIiIAIiIAIiIAIiIAINJyAhGfDGSoGERABERABERABERABERABERCB
AgQkPAvA0SUREAEREAEREAEREAEREAEREIGGE5DwbDhDxSACIiACIiACIiACIiACIiACIlCAgIRn
ATi6JAKFCFRWVtoHH3xgJ0+etPfff9+qqqoKec+79vzzz9vrr7+ed07/iIAIiIAIiIAIiIAIiMDt
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
Lw7K+IMf/GD0F564aEy98xOWfP19RJufd3QSN7RSLmHSh07yCW81LGVNHuKSH2W+5kGOP/nJT5Zo
Vh6coC5N4i/XfJNX4sszfAArP/7xj8d34a7//u//HvPNX2mIm7Iri+eUTZg0KXvououDRtKmDIlf
+fIs7pe+9KXhy1/+8thuEi59zVO7SVj4qXmEt9/+9rdLfCV++JXXr371q5HH+OHrW9/61ugfHtFt
XfKSD7riJs/4ffvb3x5BqfD4JZ/wgofWkb32izfl/P73vz/88pe/HP207XqJc8UVVyz5kd3Xv/71
Mb/vfOc7oyyFA53ho81vNe8deK5Gaj1Nl0CXQJdAl0CXQJdAl8A2ksCuAp5Pe9rThtNOO2145CMf
OXzwgx9cUsK/+tWvDi95yUtGpTcgswKIKPdR3inmAT1R7vlFafZclXfpc73whS8cbnOb2wx3uctd
hlvf+tbD1772tSVAlDjuQADaoc8v9BMGECRN5TcAQnxxwrc4+BKePEK35iNOyhf67i9/+cuHZz/7
2TvQePvb3z685S1vGemh4SJD9wc+8IHDRz7ykZEH9JZz4oQfPNbrve997/D4xz9+iffIV5wAN3m2
6ZU9V8JSPrKJLIThO3STxr3S9exvyU466aThec973sDqGT6FSe8uHZrCvMvLHa8Jr/UnvgkSYWhI
xw9PT3jCE4af//znI43U553udKfhwx/+8BiP3Pi3LvmnjMk3tNG/4IILhs9//vNjXgkPrykD/9bJ
8z73uc/Ig3i3v/3txwmVt771rcP5558/7LfffsMd73jH4dGPfvQA3D7rWc8azj777OF617vecM45
54yyU05yVJbDDjtseOITn7hU9ja/1bx34LkaqfU0XQJdAl0CXQJdAl0CXQLbSAK7AniymB1wwAHj
Er8o4hRmwIFif8IJJ4wASjz+LHkso5dccsnw5je/eVTs+QMAL37xi4d3vvOdozUPWGAtfc973jO8
4AUvGNOg/93vfndUyi+88MLhs5/97AA48X/Ri140PPOZzxzzeNSjHjU84xnPGMEGOvJ57WtfuwRm
5Edpf8Mb3jC84hWvGHkHJlhtP/OZz4x8oE2BF5cVDIC+9NJLRxADQADV5Ik2wCS9uJY/XnzxxSM/
rE38kh8eAXPpxXd94xvfGEG7JZHAkzzf//73D2984xtHHiNT/m9605tGWd7tbncbPvrRj47pp8BL
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
6BLoEtjWEqjAk/JtWaSDZywJtZyyux0lwLpmueYvfvGLfm0gGVjy6y9f1IslwOtRPyy6HXju2P5n
vXXgOUsy3b9LoEugS6BLoEugS6BLoEtglECAJ6Xdcsdb3vKWw1577TVc+9rXHvfJsfBlSSLQ5d1l
6SWXd3dLOlmKqh/rUk1nqWSbjnLPElXTAcHyiN9q003xKa82PzzJI/lJh4e8u0uD1+rXplPWKgOy
897KAG1hoSWcrPLuLh2Zxk98rqYT3qbzvki6yqc8Fq2rNp2ytOXDZ/h2b+XCry0f+bdymdWm2rax
SDr51fpDQ5mrPIXXOPhEu+Y3K13bphZJ17YpvEhX22LaRuVztelaGczKT7ya33J1ZXn2Na95zXFf
79hIN8HPXpuAx85il0CXQJdAl0CXQJdAl8CWkQDgeZ3rXGf48z//8xFwAp2uq1zlKsN1r3vd4QY3
uMH4tx5OA3Vqq3eXg1q4m93sZkt+ljs6VCdx3CmkD3zgA5f8jjrqqDFdjeMUU3v4qt8P//6H46mm
8fOXJBT+vLv7r2r7+aqfPYZ4i5+/3mABy7u7vYEOyql+9v05cTZ+DtWxvzDv7u94x9+M4PyGN7zh
8Bd/8RfjRSF3am3i+SsS/wOZ93322WfcD+r/OuNHBizLrMrxE24/Yt7d7cO0bzJ+aHEHHnjgkp+/
PbEHM3HcvfOPn/ic9PFDF/28u8u/8umgH+7GN77xUjyHITm4p6YzaaHc8SMPcsm7u79l8V+mDkyK
v32y9mTm3UFA9qYefPDBS37CydN/fyaeg4XUa96d/muvq3TqRf1oi07l9X+dief/PO0FzbsTb/29
Sq0H+0e1x9SvuG1bdLqvv5FxSm5oOVHXvlDp+MlXWWpbdPqw/bz+Jifp7OXVFvHMTx05Fbi2xXvf
+97j38o4RCrptEV/O5P3/ffff9wD65Cm+Dnoyem/N7/5zZf81J06TJzb3OY2475cdR2/8847b1zt
sPfef2gv6q62xRw+5T9Vpbve9a43XPnKV+7Ac/xi+k+XQJdAl0CXQJdAl0CXQJfAThKIxdNhKxRx
IBTwZL2gpAMnDoNh/aCke3c5JIZzEEz8/A2FfaF5d2cxAj7j538Zuby7W6bnBNTqB2RS7uP3xS9+
cbRO5d2dgu4An+rHQub00/jl4J68u9u/ClRWP0CJLOIHhLE05d0dqAUmqh/rlMOD4mfJZ5WBw3ks
+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
DTfc8AYkX3vtte7II4/sw1999dVveD5245hjjunDv/TSS2OPc+/PEdhvv/26XXfddYvgoW0vvvji
7vXXX5/L75prrunb6brrrpu7N8vJGWec0cf7wZ/+YJbgiwrz4x//uE/7M5/5zLx4t9xyS3f++ed3
v/jFL+bd32gXn/rUp/r6GX+PP/741OJfcsklc2GFb3/vfve7u6OOOqr7zne+0/3qV7+al472FPbM
M8+cd38jX3z729/u63TppZeu22qcffbZfRkffPDBdVvG5RTsrrvu6s4999zuZz/72XKSWZdxr7ji
ir7tbrrppnVZvhQqCASBIBAEgsCWQmDFiedZZ53Vbb/99t3Pf/7zvg5XXnllt80223TPP//8vDpR
8pHON73pTf3vsssum/d80sWBBx7Yh18J4kmxPvbYY7vvf//7k7LbsPf32muv7s1vfvOql/+FF16Y
a8M777xzLr+v//HX+/vf+MY35u7NcnLSSSf18VZDwX7yySf7tD/xiU/MFUU/1D/1wxtvvHHu/pY8
efTRR/t+iKwvVZ577rlu22237euhLqeffvrUpL785T/qw77tbW/rEM367bLLLv34rXF56qmnziOf
2tOzk08+eWr6G+mhdlenCy64YN0W+7Of/Wxfxs04VwH9ne98Z1+/9Uz+p3UO7zfvEgs6Q3FP/1rs
ItwwnYWuLawpg7k3EgSCQBAIAkFgPSKwosSTdWSPPfboX35V2YMPPrjbf//967I//vLPftlR/r2M
kSPHtSCeF110UZ/3mDV2XoE34MWWIp7akhX64x//eMe6XbJRiKc+ywL6kY98pHvmmWeq+Fv0eM89
9/T98HOf+9yS82WxNY6MNccdd9xxbvFnLNEinqxMQ0HGKck1NltCviWJ5znnnNN997t/Mizeil+H
eK44pItO0ILlPvvs0z3yyCOLjrseIowtalW5thTx5CVi7J944omVdY5BIAgEgSAQBNYVAitKPH/4
wx/2L75vfetbfSVZJVlh2hVY7pjHH398H47Fk9If4rnyfWJLEc9JJd8oxHNS+bfk/eUST2Nqt912
68cRi9gBBxzQn19//fUTqzGNeFakCy+8sE+nXTjaksST9fVLX/pSFWfVjiGeqwbtVpNwiOdW09Sp
aBAIAkEgCCwDgWUTz6effrqzWu1XbrCnnXZaf3300Uf3iity6bm9VNyBWGOEtcfzlFNO6cOshMWT
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
CGBBLK1/AAAAAElFTkSuQmCC
--0000000000002093ba05b3dee080--


From nobody Thu Nov 12 06:34:57 2020
Return-Path: <ekr@rtfm.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0A0563A112C for <webtransport@ietfa.amsl.com>; Thu, 12 Nov 2020 06:34:55 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.396
X-Spam-Level: 
X-Spam-Status: No, score=-1.396 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, GB_ABOUTYOU=0.5, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=rtfm-com.20150623.gappssmtp.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 4_LlG3PqxX-h for <webtransport@ietfa.amsl.com>; Thu, 12 Nov 2020 06:34:50 -0800 (PST)
Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com [IPv6:2a00:1450:4864:20::12e]) (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 5A4863A1121 for <webtransport@ietf.org>; Thu, 12 Nov 2020 06:34:50 -0800 (PST)
Received: by mail-lf1-x12e.google.com with SMTP id f11so8766365lfs.3 for <webtransport@ietf.org>; Thu, 12 Nov 2020 06:34:50 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=WaJNiZzj0YYDB1nvhpSgZan3rijNt7HOL6gZIb+ip1A=; b=M149UZeBEN2BhVM4J13Ux0Ae/fIzkaLBcHr5ej4p10Eq/cbL3s17Qry4wlIAEMoAdH JT8PBwTKVHIzSUaFPFNE8flCTX8EV0Hiwi1Ed01J4UAT932OHFfaC8ksgALNY3RJHvJN 24oEA28T2UYqNw25gNveu+6SS1V2dXk3CmxRpYudQCXGB4Fz5KPomsSKurEWrOfGdzKj ZVOFnnHNBnbKdVqPAgMgzIuGgY4ZA1iLmFKI+xiGyqVJ6K8al0/oshJCV4ULyP/6ac2z zKebHqY+BU3Onldip31Dj0gwpA3RwHnieCr6W6GwOk2nBhEhUbsKpMxi5NA4caN/QpgZ 60nw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=WaJNiZzj0YYDB1nvhpSgZan3rijNt7HOL6gZIb+ip1A=; b=ZS74RUtHegVcEFBqxmiNyJfxH+hFx1aOHJ5nm40ak5rLCwTKhJehPM+4YsvLtU692R Z4Ul26LeCylGM5c1j83wO1DwKwlyxmLMHL/xZm5Wp/O1hdD4xCX1U3GxbMfwAKg5FoBL lczWvfTRrnmMmhj0fhUASrFshHpu32ytMfqyPBOYpbwbAi+kOk+uNh9KJgNq1bmeC7xZ YTwrznj+UL3EWJgUKHSV56vwVNP6MRW0UXIIjx5iaTVj2nX/BYX9ngtd8+JXhAn6v0xt cUgyd4jyWDrChZxZCO6DTzfd4CM4TzwopULgZy3YhwEjQCn5aRz5IawehKhLr7oJVKUM xCKg==
X-Gm-Message-State: AOAM532BtJAyr6wgQrT6ZPUGCrV02l8EeNd2/MBzOfIfAzwxqNa6Bron JPWlM9GM0Rml+I/9Pd98y+rGHN5J4EagNlhS9qwoPw==
X-Google-Smtp-Source: ABdhPJyde+rb4ueMObn/Ag59z4jr1kHq152hmNMynYNR33cwq/w8z9NHBY3UpRgx+mtJOkN/S/4kvYxhJBlYhPtMz7g=
X-Received: by 2002:a05:6512:683:: with SMTP id t3mr1195281lfe.234.1605191688417;  Thu, 12 Nov 2020 06:34:48 -0800 (PST)
MIME-Version: 1.0
References: <CAAZdMafdbwusA3Ks_k=RW9FXCh+OMj90Y_7A7Pj5cBHTXgyQPA@mail.gmail.com> <98dfa9e0-6a37-4b79-9eb5-b4bbf8b6850d@www.fastmail.com> <CAOW+2duCDcnzuc4YHdWZafo+cv4-RBnJ1t3OMniTCbdVpEmLxg@mail.gmail.com>
In-Reply-To: <CAOW+2duCDcnzuc4YHdWZafo+cv4-RBnJ1t3OMniTCbdVpEmLxg@mail.gmail.com>
From: Eric Rescorla <ekr@rtfm.com>
Date: Thu, 12 Nov 2020 06:34:12 -0800
Message-ID: <CABcZeBNfGau0Unyb7A2CnpSpX4rBXC4thjoZmikt7O-QwCJk=w@mail.gmail.com>
To: Bernard Aboba <bernard.aboba@gmail.com>
Cc: Martin Thomson <mt@lowentropy.net>, WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000062986f05b3e9d0db"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/S_0PsKqmKANX2GNeKW-GrPfoS-Q>
Subject: Re: [Webtransport] Choosing the Transport, pt. 2
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 12 Nov 2020 14:34:55 -0000

--00000000000062986f05b3e9d0db
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Nov 10, 2020 at 8:38 AM Bernard Aboba <bernard.aboba@gmail.com>
wrote:

> Martin said:
>
> "It seems your arguments are based on it being possible to hide a bunch o=
f
> this complexity under a unified API.  That's great, but it doesn't mean
> that the abstraction won't leak.  I'm sure that running over h2 will look
> very different to running on bare QUIC."
>
> [BA] There is a question whether h2 is supported within the WebTransport
> API:
> https://github.com/w3c/webtransport/issues/164
>
> Part of the concern is the complexity that would be added by supporting
> failover within the API, rather than outside of it.
>
> Currently, if QUIC and associated functionality (such as datagram support=
)
> cannot be negotiated, the WebTransport constructor will fail.  Among othe=
r
> things this implies that if the WebTransport constructor succeeds and the
> ready promise is resolved, that the datagramWritable and datagramReadable
> attributes are always defined.
>
> It does not make sense to me to pretend that datagram functionality is
> available when running over a transport that does not support datagrams.
>

I don't agree with this. The availability or non-availability of UDP is
unpredictable to users and context-dependent, and the user experience of
having things just not in one network is extremely frustrating. Moreover,
we have extensive experience that it is possible to provide inferior, yet
somewhat acceptable, low-latency applications such as videoconferencing
even over non-datagram transport (hence the support for ICE TCP and TURN
TCP etc in WebRTC), especially in fast networks. I believe the same
reasoning applies here.

-Ekr

>
> On Mon, Nov 9, 2020 at 9:05 PM Martin Thomson <mt@lowentropy.net> wrote:
>
>> Hey Victor,
>>
>> I have a hard time understanding this.
>>
>> If I recall correctly, your original proposal involved multiple
>> protocols.  So this sounds like you have discovered something that suppo=
rts
>> that view, or at least has consolidated your own opinion.  But I don't s=
ee
>> any actual evidence here to support building multiple protocols.
>>
>> Building one protocol is hard enough.  It seems like we signed on to do
>> two here, on the basis that we need a fallback.  But I don't see how tha=
t
>> naturally extends to three.  On the contrary, just one protocol is prett=
y
>> tempting at this point.  TCP fallback could be handled by a websockets
>> polyfill outside of the browser (or a WebRTC polyfill for those who are
>> less complexity-averse).
>>
>> It seems your arguments are based on it being possible to hide a bunch o=
f
>> this complexity under a unified API.  That's great, but it doesn't mean
>> that the abstraction won't leak.  I'm sure that running over h2 will loo=
k
>> very different to running on bare QUIC.
>>
>> That doesn't meant that I'm not curious about your semantic unification
>> idea.  I don't understand that either, but it's an abstract notion with
>> some appeal to me.
>>
>> Cheers,
>> Martin
>>
>> On Wed, Oct 28, 2020, at 03:22, Victor Vasiliev wrote:
>> > (previous iteration of this thread here
>> > <
>> https://mailarchive.ietf.org/arch/msg/webtransport/CEGNLkMqrvug3uPyPmQIX=
nWVIAY/
>> >)
>> >
>> > Hello everyone,
>> >
>> > As you might remember, we've still not decided which of QuicTransport,
>> > Http2Transport and Http3Transport we should adapt:
>> >  1. There has been a strong interest in running WebTransport over HTTP=
.
>> > HTTP allows us to do connection pooling, a well-understood mechanism o=
f
>> > falling back to TCP and better integration with existing load balancer=
s.
>> >  2. There has also been interest in running WebTransport over QUIC
>> > itself, due to the complexity of WebTransport over HTTP, both in terms
>> > of design and in terms of writing servers for it (nice discussion here
>> > <
>> https://mailarchive.ietf.org/arch/msg/webtransport/O8P5nmmw0ywra1VWtJmS4=
lBglhI/
>> >).
>> >  3. There has been a desire to pick only one of those.
>> > I've been reworking <https://github.com/vasilvv/webtransport/pull/18>
>> > the QuicTransport draft based on what we've found while implementing i=
t
>> > in Chrome.  Doing that, and observing how it becomes more and more lik=
e
>> > HTTP with every revision, has convinced me more than ever that all of
>> > the transports above should be the same thing conceptually, differing
>> > only in wire protocol.  That observation was very helpful, since it
>> > allowed us to replace <https://github.com/w3c/webtransport/issues/129>
>> > all of the different API entry points with just one, already
>> > dramatically simplifying the situation.  Same observation also can
>> > potentially help us make some progress here.  We can unify all of the
>> > proposals semantically (make them share a URL scheme and the headers
>> > format), and then the variants just become different encodings.
>> >
>> > If we compare the WebTransport proposals to the HTTP ecosystem, beside=
s
>> > the obvious equivalences (webtransport-http2 =E2=89=85 HTTP/2,
>> > webtransport-http3 =E2=89=85 HTTP/3), it becomes apparent that
>> > webtransport-quic =E2=89=85 HTTP/1.1.  This gives us a hint of why we =
might
>> > want all three of those.  This is also really nice, since we know how
>> > to switch between all of those protocols, and we have a lot of
>> > experience with an ecosystem shaped like that: webtransport-quic and
>> > webtransport-http3 can be switched via ALPN, webtransport-http2 can be
>> > raced in parallel with the former.
>> >
>> > So I propose that we adapt all of them.  As it stands,
>> > webtransport-quic is a simple-to-implement and proven-to-work solution
>> > that should not require much of working group's time.  There are
>> > questions regarding whether webtransport-http is too complex; I believ=
e
>> > that we won't know unless we try, and since there's clearly interest i=
n
>> > trying, I believe we should adopt that draft and actually start workin=
g
>> > out those complex details.
>> >
>> > What does everyone think?
>> >
>> > Cheers,
>> >   Victor.
>> > --
>> > Webtransport mailing list
>> > Webtransport@ietf.org
>> > https://www.ietf.org/mailman/listinfo/webtransport
>> >
>>
>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--00000000000062986f05b3e9d0db
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Tue, Nov 10, 2020 at 8:38 AM Berna=
rd Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com">bernard.aboba@gmail=
.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"mar=
gin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1=
ex"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">Martin said:=C2=A0<d=
iv><br></div><div>&quot;It seems your arguments are based on it being possi=
ble to hide a bunch of this complexity under a unified API.=C2=A0 That&#39;=
s great, but it doesn&#39;t mean that the abstraction won&#39;t leak.=C2=A0=
 I&#39;m sure that running over h2 will look very different to running on b=
are QUIC.&quot;</div><div><br></div><div>[BA] There is a question whether h=
2 is supported within the WebTransport API:</div><div><a href=3D"https://gi=
thub.com/w3c/webtransport/issues/164" target=3D"_blank">https://github.com/=
w3c/webtransport/issues/164</a></div><div><br></div><div>Part of the concer=
n is the complexity that would be added by supporting failover within the A=
PI, rather than outside of it.=C2=A0</div><div><br></div><div>Currently, if=
 QUIC and associated functionality (such as datagram support) cannot be neg=
otiated, the WebTransport constructor will fail.=C2=A0 Among other things t=
his implies that if the WebTransport constructor succeeds and the ready pro=
mise is resolved, that the datagramWritable and datagramReadable attributes=
 are always defined.=C2=A0</div><div><br></div><div>It does not make sense =
to me to pretend that datagram functionality is available when running over=
 a transport that does not support datagrams.=C2=A0</div></div></div></div>=
</blockquote><div>=C2=A0</div><div>I don&#39;t agree with this. The availab=
ility or non-availability of UDP is unpredictable to users and context-depe=
ndent, and the user experience of having things just not in one network is =
extremely frustrating. Moreover, we have extensive experience that it is po=
ssible to provide inferior, yet somewhat acceptable, low-latency applicatio=
ns such as videoconferencing even over non-datagram transport (hence the su=
pport for ICE TCP and TURN TCP etc in WebRTC), especially in fast networks.=
 I believe the same reasoning applies here.<br></div><div><br></div><div>-E=
kr</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex=
;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br><div class=3D=
"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 9, 2020 at =
9:05 PM Martin Thomson &lt;<a href=3D"mailto:mt@lowentropy.net" target=3D"_=
blank">mt@lowentropy.net</a>&gt; wrote:<br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex">Hey Victor,<br>
<br>
I have a hard time understanding this.<br>
<br>
If I recall correctly, your original proposal involved multiple protocols.=
=C2=A0 So this sounds like you have discovered something that supports that=
 view, or at least has consolidated your own opinion.=C2=A0 But I don&#39;t=
 see any actual evidence here to support building multiple protocols.<br>
<br>
Building one protocol is hard enough.=C2=A0 It seems like we signed on to d=
o two here, on the basis that we need a fallback.=C2=A0 But I don&#39;t see=
 how that naturally extends to three.=C2=A0 On the contrary, just one proto=
col is pretty tempting at this point.=C2=A0 TCP fallback could be handled b=
y a websockets polyfill outside of the browser (or a WebRTC polyfill for th=
ose who are less complexity-averse).<br>
<br>
It seems your arguments are based on it being possible to hide a bunch of t=
his complexity under a unified API.=C2=A0 That&#39;s great, but it doesn&#3=
9;t mean that the abstraction won&#39;t leak.=C2=A0 I&#39;m sure that runni=
ng over h2 will look very different to running on bare QUIC.<br>
<br>
That doesn&#39;t meant that I&#39;m not curious about your semantic unifica=
tion idea.=C2=A0 I don&#39;t understand that either, but it&#39;s an abstra=
ct notion with some appeal to me.<br>
<br>
Cheers,<br>
Martin<br>
<br>
On Wed, Oct 28, 2020, at 03:22, Victor Vasiliev wrote:<br>
&gt; (previous iteration of this thread here <br>
&gt; &lt;<a href=3D"https://mailarchive.ietf.org/arch/msg/webtransport/CEGN=
LkMqrvug3uPyPmQIXnWVIAY/" rel=3D"noreferrer" target=3D"_blank">https://mail=
archive.ietf.org/arch/msg/webtransport/CEGNLkMqrvug3uPyPmQIXnWVIAY/</a>&gt;=
)<br>
&gt; <br>
&gt; Hello everyone,<br>
&gt; <br>
&gt; As you might remember, we&#39;ve still not decided which of QuicTransp=
ort, <br>
&gt; Http2Transport and Http3Transport we should adapt:<br>
&gt;=C2=A0 1. There has been a strong interest in running WebTransport over=
 HTTP. <br>
&gt; HTTP allows us to do connection pooling, a well-understood mechanism o=
f <br>
&gt; falling back to TCP and better integration with existing load balancer=
s.<br>
&gt;=C2=A0 2. There has also been interest in running WebTransport over QUI=
C <br>
&gt; itself, due to the complexity of WebTransport over HTTP, both in terms=
 <br>
&gt; of design and in terms of writing servers for it (nice discussion here=
 <br>
&gt; &lt;<a href=3D"https://mailarchive.ietf.org/arch/msg/webtransport/O8P5=
nmmw0ywra1VWtJmS4lBglhI/" rel=3D"noreferrer" target=3D"_blank">https://mail=
archive.ietf.org/arch/msg/webtransport/O8P5nmmw0ywra1VWtJmS4lBglhI/</a>&gt;=
).<br>
&gt;=C2=A0 3. There has been a desire to pick only one of those.<br>
&gt; I&#39;ve been reworking &lt;<a href=3D"https://github.com/vasilvv/webt=
ransport/pull/18" rel=3D"noreferrer" target=3D"_blank">https://github.com/v=
asilvv/webtransport/pull/18</a>&gt; <br>
&gt; the QuicTransport draft based on what we&#39;ve found while implementi=
ng it <br>
&gt; in Chrome.=C2=A0 Doing that, and observing how it becomes more and mor=
e like <br>
&gt; HTTP with every revision, has convinced me more than ever that all of =
<br>
&gt; the transports above should be the same thing conceptually, differing =
<br>
&gt; only in wire protocol.=C2=A0 That observation was very helpful, since =
it <br>
&gt; allowed us to replace &lt;<a href=3D"https://github.com/w3c/webtranspo=
rt/issues/129" rel=3D"noreferrer" target=3D"_blank">https://github.com/w3c/=
webtransport/issues/129</a>&gt; <br>
&gt; all of the different API entry points with just one, already <br>
&gt; dramatically simplifying the situation.=C2=A0 Same observation also ca=
n <br>
&gt; potentially help us make some progress here.=C2=A0 We can unify all of=
 the <br>
&gt; proposals semantically (make them share a URL scheme and the headers <=
br>
&gt; format), and then the variants just become different encodings.<br>
&gt; <br>
&gt; If we compare the WebTransport proposals to the HTTP ecosystem, beside=
s <br>
&gt; the obvious equivalences (webtransport-http2 =E2=89=85 HTTP/2, <br>
&gt; webtransport-http3 =E2=89=85 HTTP/3), it becomes apparent that <br>
&gt; webtransport-quic =E2=89=85 HTTP/1.1.=C2=A0 This gives us a hint of wh=
y we might <br>
&gt; want all three of those.=C2=A0 This is also really nice, since we know=
 how <br>
&gt; to switch between all of those protocols, and we have a lot of <br>
&gt; experience with an ecosystem shaped like that: webtransport-quic and <=
br>
&gt; webtransport-http3 can be switched via ALPN, webtransport-http2 can be=
 <br>
&gt; raced in parallel with the former.<br>
&gt; <br>
&gt; So I propose that we adapt all of them.=C2=A0 As it stands, <br>
&gt; webtransport-quic is a simple-to-implement and proven-to-work solution=
 <br>
&gt; that should not require much of working group&#39;s time.=C2=A0 There =
are <br>
&gt; questions regarding whether webtransport-http is too complex; I believ=
e <br>
&gt; that we won&#39;t know unless we try, and since there&#39;s clearly in=
terest in <br>
&gt; trying, I believe we should adopt that draft and actually start workin=
g <br>
&gt; out those complex details.<br>
&gt; <br>
&gt; What does everyone think?<br>
&gt; <br>
&gt; Cheers,<br>
&gt;=C2=A0 =C2=A0Victor.<br>
&gt; -- <br>
&gt; Webtransport mailing list<br>
&gt; <a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtranspor=
t@ietf.org</a><br>
&gt; <a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"=
noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtran=
sport</a><br>
&gt;<br>
<br>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>

--00000000000062986f05b3e9d0db--


From nobody Thu Nov 12 07:30:54 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7553B3A133B for <webtransport@ietfa.amsl.com>; Thu, 12 Nov 2020 07:30:53 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.087
X-Spam-Level: 
X-Spam-Status: No, score=-2.087 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 ZUaltAdeXchk for <webtransport@ietfa.amsl.com>; Thu, 12 Nov 2020 07:30:52 -0800 (PST)
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) (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 D53FB3A1332 for <webtransport@ietf.org>; Thu, 12 Nov 2020 07:30:51 -0800 (PST)
Received: by mail-lf1-x12f.google.com with SMTP id i6so9061725lfd.1 for <webtransport@ietf.org>; Thu, 12 Nov 2020 07:30:51 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=zaKDuIqFS0XRlSziKVu2od+HBnvbVqDrFxngWWyrq7o=; b=syW2jiwJ3UGQ/751fEuoV8RradfrEBcztDWSQ9dU/uM63jH7yb+ekgHYtxSJKB9dgA W6jDFa+MnvMz7UzEVDcGh4YrOFHqnwk3lMbwl/gcrHYqKiYv3qRwZoYj6ZcFA2Ew50fX ALo7Ws6s8NTG0HepMR8JcUNxDC5hKfiBVBNLkDgY2d6/J59QMEzXle+mUIT2hFbIG00f xjQtsC6wJBRIE9ESJLjbjC+aGkLyf26KmhkMrWzXw8d9LCzdUTyZNd8c5bArkGFFMkv5 HEUdf/Lhr89q32rup9T9OgTAhAtBdySBxbH0LnVHhYVlwfyDTYmJA3wRH6j1wWQFqKJb kSLA==
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; bh=zaKDuIqFS0XRlSziKVu2od+HBnvbVqDrFxngWWyrq7o=; b=CXnTVBUv1b91fcpwjIsEatnQv+UuKqZFxeMk+gCTm/cNDMgwgiDTfXf/q9hQfSBUCe ZltegnDoxyAvk5JdanYTF2qvl2nJ3NHuvYOCMhkLpPDLidMjK6+rD1nxy9lgnO2RR04w l4GDgbPNzY4i4EtbFwp6THh0gxe6l7O+6rcDf1S8V7it5ndXqCwrnRJVb4yq0V9MPXmA 0D0uE4UqtkE5y5gPoCRoQ4p79KEZhNPQ6QxFnRJd0k3aWxnXtMAQ0ddKGMeHdxYxAEjS Isj9V/wvBu9sAkmlvk6oSRPn5gLIJUy5VBrWd52WQY0ewkU7cBaMFr6M5r6AMF2k9Zbn P7gQ==
X-Gm-Message-State: AOAM532hVFzFRxwSfn7F2WYB0lWG/QpDrd/hUTQLl8zOuiJBoArx1Whg U55YPmJA9+g0CDfuLPrKWVl6kSKmx9G71wmMPnx4TO0sNK/7iA==
X-Google-Smtp-Source: ABdhPJwFeyx/vycoxo72fLOhS+a8HxngR7WF+y3upmcuraO1erjgyVQCHbGYi6SdF/66MxBcFG4m/qDF0N6q4aWbD/k=
X-Received: by 2002:a19:88c:: with SMTP id 134mr11107931lfi.560.1605195049391;  Thu, 12 Nov 2020 07:30:49 -0800 (PST)
MIME-Version: 1.0
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Thu, 12 Nov 2020 07:30:40 -0800
Message-ID: <CAOW+2dvDnTb5sBknkPVCnvdwcSi1jeeyveJe_4XaoxOGS6JyLw@mail.gmail.com>
To: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000b6dc0705b3ea981d"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/2S1IFwCCaWWQpcU79ShV467zJpM>
Subject: [Webtransport] Request for slides
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 12 Nov 2020 15:30:53 -0000

--000000000000b6dc0705b3ea981d
Content-Type: text/plain; charset="UTF-8"

If you're on the agenda for the upcoming WEBTRANS WG meeting (see:
https://codimd.ietf.org/notes-ietf-109-webtrans ), we need your slides
ASAP.

The slide deck is here:

https://docs.google.com/presentation/d/1zB6dcIOlKwZW8NUfYw-HtatNLpSJZBnrk-0ZpmSpfIQ/

The IETF WEBTRANS WG will meet on Monday, November 16 from 1 AM - 3 AM

Pacific TIme.  In other time zones, the meeting will occur on:

Monday, November 16, 2020 from 09:00 - 11:00 (UTC)
Monday, November 16, 2020 from 16:00 - 18:00 (Banghok).

--000000000000b6dc0705b3ea981d
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div><font color=3D"#212=
529" face=3D"SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Cour=
ier New, monospace"><span style=3D"font-size:12.25px;white-space:pre-wrap">=
If you&#39;re on the agenda for the upcoming WEBTRANS WG meeting (see: </sp=
an></font><a href=3D"https://codimd.ietf.org/notes-ietf-109-webtrans" rel=
=3D"nofollow" style=3D"font-family:SFMono-Regular,Menlo,Monaco,Consolas,&qu=
ot;Liberation Mono&quot;,&quot;Courier New&quot;,monospace;font-size:12.25p=
x;white-space:pre-wrap;background-color:transparent;box-sizing:border-box;c=
olor:rgb(51,122,183);text-decoration-line:none">https://codimd.ietf.org/not=
es-ietf-109-webtrans</a>=C2=A0), we need your slides ASAP.=C2=A0</div><div>=
<br></div><div>The slide deck is here:=C2=A0</div><div><pre class=3D"gmail-=
wordwrap" style=3D"box-sizing:border-box;font-family:SFMono-Regular,Menlo,M=
onaco,Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,monospac=
e;font-size:12.25px;margin-top:0px;margin-bottom:1rem;overflow:auto;color:r=
gb(33,37,41);white-space:pre-wrap;word-break:normal;padding:0px"><a href=3D=
"https://docs.google.com/presentation/d/1zB6dcIOlKwZW8NUfYw-HtatNLpSJZBnrk-=
0ZpmSpfIQ/" rel=3D"nofollow" style=3D"box-sizing:border-box;color:rgb(51,12=
2,183);text-decoration-line:none;background-color:transparent">https://docs=
.google.com/presentation/d/1zB6dcIOlKwZW8NUfYw-HtatNLpSJZBnrk-0ZpmSpfIQ/</a=
></pre></div><div dir=3D"ltr"><span style=3D"color:rgb(33,37,41);font-famil=
y:SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Co=
urier New&quot;,monospace;font-size:12.25px;white-space:pre-wrap">The IETF =
WEBTRANS WG will meet on Monday, November 16 from 1 AM - 3 AM</span><pre cl=
ass=3D"gmail-wordwrap" style=3D"box-sizing:border-box;font-family:SFMono-Re=
gular,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&q=
uot;,monospace;font-size:12.25px;margin-top:0px;margin-bottom:1rem;overflow=
:auto;color:rgb(33,37,41);white-space:pre-wrap;word-break:normal;padding:0p=
x">Pacific TIme.  In other time zones, the meeting will occur on:

Monday, November 16, 2020 from 09:00 - 11:00 (UTC)
Monday, November 16, 2020 from 16:00 - 18:00 (Banghok).</pre><pre class=3D"=
gmail-wordwrap" style=3D"box-sizing:border-box;font-family:SFMono-Regular,M=
enlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,mo=
nospace;font-size:12.25px;margin-top:0px;margin-bottom:1rem;overflow:auto;c=
olor:rgb(33,37,41);white-space:pre-wrap;word-break:normal;padding:0px"><br>=
</pre></div></div></div></div>

--000000000000b6dc0705b3ea981d--


From nobody Thu Nov 12 11:18:48 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D86D43A0061 for <webtransport@ietfa.amsl.com>; Thu, 12 Nov 2020 11:18:46 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.096
X-Spam-Level: 
X-Spam-Status: No, score=-2.096 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DC_PNG_UNO_LARGO=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 JMjebprN2LPu for <webtransport@ietfa.amsl.com>; Thu, 12 Nov 2020 11:18:44 -0800 (PST)
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) (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 7E6FD3A005C for <webtransport@ietf.org>; Thu, 12 Nov 2020 11:18:43 -0800 (PST)
Received: by mail-lj1-x22a.google.com with SMTP id r17so7528014ljg.5 for <webtransport@ietf.org>; Thu, 12 Nov 2020 11:18:43 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=+G64eWyUzVPNoKLjQ8vRTDR1q6VO9pTPCboFjPbqM6Y=; b=qWrSEnNZgERtOms1FCLpDyfsmijA6JSN5vc8X7PXztbM9qfCRsFpNzBdYNv4dObNcW QIxsI7iffGc3dDNi13p5WiwM6+S9rEbkbjpidflS7XUwcaTyh0zZMivOezxj5UTeDNTs HZnzUDtnmAN+oXGMa6aId1DHClxm3K/NSQ1j3lDvPRZdyNZtA7JzLjYJYld2mTQwXjwq WdADwh0EjnL068uW0bnlJtTfDYnEahVna2RcDAvjuE6XvOSMrvN7Kng24o/7x2GNwx6z pwwr5Mmg4ajsmTG+ddC2w1snnAaxHLjxKNyOxcZPlFMEvt4St9Ep0w3scFtlPvoBBK2R rpdg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=+G64eWyUzVPNoKLjQ8vRTDR1q6VO9pTPCboFjPbqM6Y=; b=cByBuZGaqZfvfEATUoVlYNCXHFcT/dU8db6te4N/gNVXu096m7nixDMd2DihjjVW36 zAoHjbqC5dGh16woyJD+IkqErHF9DrBT4grRAoorFU6/QcCViSk6SZ1qSB5Yezj5fpF/ 8eJGW7D0OOhsd38wSB9PAojhGZwG1vAkn/WpIzY6+vqgVJJBzxSjHz6kB4aSNCOsOeSX 1Nx2MJjmB8q+WNn2GHZfHbHQVt/AaPq7MPe97HVa3RKiJFOvuYp/IfegvBUj277WahOu 6FVmOGHk7HPKQHiCzDM6MBq+zR/RDqfR7qzJQXswRSt6n+o49R46hbD+snaJiPimArnU f+ew==
X-Gm-Message-State: AOAM533D9H1hEC/02yDJ1j+zw+FqQ5ySwIz2aM3O7Q9+HTET3neZnlge ctjcI9cdnWmDvdnldFawvwySOLRKmV8Utnowbg6Li5nQlbfRBA==
X-Google-Smtp-Source: ABdhPJxyY0gxc5yvkdWMOEn8tn3/sALRj7Uknfc47gbcVq6Vnb4PYOT82U67z7rfRLJDEAV2Iff21nuUvk+WTQ1wpC8=
X-Received: by 2002:a2e:b70d:: with SMTP id j13mr499085ljo.240.1605208720827;  Thu, 12 Nov 2020 11:18:40 -0800 (PST)
MIME-Version: 1.0
References: <CAHVo=Zk84mfOJr3XSXmrVDBq0XUKoB63ytCR1dhhtM7aehq7qw@mail.gmail.com> <CAAZdMafmO3qKQKegJ7X+MvTjnPvKnO3+B1T-aRME6FZqL-e_1A@mail.gmail.com> <CAOW+2dv8bGfftqZYFnPGpOX+XPzydh4_KJjknhu5FxP-w1neTw@mail.gmail.com> <CAHVo=Zkhav-SqLAPocm2ZtEOwfrjBvOUuJ4egphLiw_UA67JYA@mail.gmail.com>
In-Reply-To: <CAHVo=Zkhav-SqLAPocm2ZtEOwfrjBvOUuJ4egphLiw_UA67JYA@mail.gmail.com>
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Thu, 12 Nov 2020 11:18:31 -0800
Message-ID: <CAOW+2dvJ4MjvpERdyvAC+izJLGrnPrVt0CcrEDsQK8N_qcK1OA@mail.gmail.com>
To: Luke Curley <kixelated@gmail.com>
Cc: Victor Vasiliev <vasilvv=40google.com@dmarc.ietf.org>,  WebTransport <webtransport@ietf.org>
Content-Type: multipart/related; boundary="00000000000098a63305b3edc745"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/7MmkLkNF-JekAP-TedWUlboXejo>
Subject: Re: [Webtransport] HTTP/3 Downgrade
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 12 Nov 2020 19:18:47 -0000

--00000000000098a63305b3edc745
Content-Type: multipart/alternative; boundary="00000000000098a63105b3edc744"

--00000000000098a63105b3edc744
Content-Type: text/plain; charset="UTF-8"

Luke said:

"My use-case is almost identical (Twitch). We're implementing a video

protocol over QuicTransport instead of trying to leverage HTTP/3. It gives
us the ability to push media while utilizing stock QUIC implementations.
All you need on top is a simple API layer, such as JSON messages over
bidirectional streams."

[BA] That's a pretty straightforward way to move forward on low
latency or P2P use cases (e.g. game streaming and remote desktop).
HTTP/3 use cases tend to be situations where caching might be useful,
or where there is a desire to leverage HTTP/3 specifically. For
example, for live events you can often live with more latency (perhaps
up to a second), and CDNs are widely used today to improve
scalability. In the RIPT BOF, a desire to leverage cloud
infrastructure was mentioned, though at the time there was scepticism
as to whether that would actually be possible (and similar concerns
have been raised on this thread).

As for firewall traversal, QUIC connections can use the same socket and

would thus share the NAT binding... assuming middleware does not decode
QUIC initial packets. Each connection could end up on different host
depending on load balancing though.

[BA] I think the concern was not NAT traversal so much as enterprise
firewalls that today often have restrictive policies (e.g. TCP-only or
HTTP-only). Not sure whether those firewalls are likely to be
QUIC-friendly or if so what we can assume about them when they are
upgraded (e.g. MASQUE support?). So may not be easy to say exactly
what the requirements will be.

Has somebody formulated a list of pros and cons for Http3Transport as
compared to QuicTransport?

[BA] There have been some slides presented with a few basic
considerations. But more detailed examination seems needed to distill
requirements and get to the bottom of what implementers need as
opposed to what might sound good at a superficial level but might not
be deployable or implementable. The need for more detailed discussion
becomes apparent when actually trying to implement some of the use
cases - and realizing that in practice there are more moving parts
than meets the eye.

There are also DevOps issues like load balancing/draining, which has
been an issue with Websockets deployment. Quite solvable but worth
articulating in terms of requirements.



"

On Wed, Nov 11, 2020 at 5:31 PM Luke Curley <kixelated@gmail.com> wrote:

> @bernard I think that use-case boils down to a lack of HTTP functionality.
> The "proper" approach would be to use HTTP server push for media, but
> nobody likes that. Justin's ask is to instead to augment HTTP/3 such that
> it muxes in QUIC-like connections. I do think it address HTTP's
> short-comings, but it's non-trivial and will require custom HTTP/3
> implementations.
>
> My use-case is almost identical (Twitch). We're implementing a video
> protocol over QuicTransport instead of trying to leverage HTTP/3. It gives
> us the ability to push media while utilizing stock QUIC implementations.
> All you need on top is a simple API layer, such as JSON messages over
> bidirectional streams.
>
> As for firewall traversal, QUIC connections can use the same socket and
> would thus share the NAT binding... assuming middleware does not decode
> QUIC initial packets. Each connection could end up on different host
> depending on load balancing though.
>
> Has somebody formulated a list of pros and cons for Http3Transport as
> compared to QuicTransport?
>
> On Wed, Nov 11, 2020 at 2:35 PM Bernard Aboba <bernard.aboba@gmail.com>
> wrote:
>
>> Victor said:
>>
>> "Http3Transport without pooling doesn't make that much sense."
>>
>> [BA] Some Http3Transport use cases depend on pooling between WebTransport
>> and HTTP/3 request/responses; others could just be satisfied by
>> WebTransport pooling.  I would suggest that we distinguish these two
>> requirements, because pooling/sharing a QUIC connection between
>> WebTransport instances appears simpler than pooling/sharing a QUIC
>> connection between WebTransport and HTTP/3.
>>
>> At IETF 107 RIPT BOF there was a desire expressed to enable media
>> services to leverage HTTP infrastructure. Justin Uberti described a use
>> case where gRPC would be sent over HTTP/3 to request that the server
>> initiate either a reliable stream or flow of datagrams (see below).  This
>> use case appears to require pooling of WebTransport and HTTP/3
>> request/responses (in order to simplify firewall traversal).  However, this
>> use case is not easily supported using an garden variety HTTP/3 server,
>> which probably could not initially be expected to support QUIC datagrams
>> (although it would not be hard to support in node.js assuming that a QUIC
>> module was available).
>>
>> See Slide 7 here:
>> https://datatracker.ietf.org/meeting/107/materials/slides-107-ript-rtc-implementation-experiences-00
>>
>> [image: image.png]
>>
>> On Wed, Nov 11, 2020 at 1:52 PM Victor Vasiliev <vasilvv=
>> 40google.com@dmarc.ietf.org> wrote:
>>
>>> I'm not sure "HTTP/3 without pooling" does anything that QuicTransport
>>> doesn't already do, especially since the latter got real header support.
>>> So, at least as far as my understanding of this space goes, Http3Transport
>>> without pooling doesn't make that much sense.
>>>
>>> On Wed, Nov 11, 2020 at 4:43 PM Luke Curley <kixelated@gmail.com> wrote:
>>>
>>>> It seems like connection pooling introduces a lot of technical
>>>> complexity for limited benefits. Hypothetically, what if connection pooling
>>>> was dropped as a requirement?
>>>>
>>>> What if Http3Transport involved establishing a new HTTP/3 connection
>>>> and downgrading it to QUIC? It would be analogous to WebSockets for
>>>> HTTP/1.1.
>>>>
>>>> You could use 0-RTT to minimize latency when establishing a HTTP/3 or
>>>> Http3Transport connection to an existing host. These connections would not
>>>> share congestion control state (unfortunate), but would also not share flow
>>>> control limits (yay).
>>>>
>>>> I also think this is how you could merge QuicTransport and
>>>> Http3Transport. Use HTTP/3 for the handshake, and QUIC for the data
>>>> transfer.
>>>> --
>>>> Webtransport mailing list
>>>> Webtransport@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>
>>> --
>>> Webtransport mailing list
>>> Webtransport@ietf.org
>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>
>>

--00000000000098a63105b3edc744
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Luke said:=C2=A0<div><br></div><div>&quot;<span style=3D"c=
olor:rgb(33,37,41);font-family:SFMono-Regular,Menlo,Monaco,Consolas,&quot;L=
iberation Mono&quot;,&quot;Courier New&quot;,monospace;font-size:12.25px;wh=
ite-space:pre-wrap">My use-case is almost identical (Twitch). We&#39;re imp=
lementing a video</span></div><pre class=3D"gmail-wordwrap" style=3D"box-si=
zing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,&quot;Libe=
ration Mono&quot;,&quot;Courier New&quot;,monospace;font-size:12.25px;margi=
n-top:0px;margin-bottom:1rem;overflow:auto;color:rgb(33,37,41);white-space:=
pre-wrap;word-break:normal;padding:0px">protocol over QuicTransport instead=
 of trying to leverage HTTP/3. It gives
us the ability to push media while utilizing stock QUIC implementations.
All you need on top is a simple API layer, such as JSON messages over
bidirectional streams.&quot;</pre><pre class=3D"gmail-wordwrap" style=3D"bo=
x-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,&quot;=
Liberation Mono&quot;,&quot;Courier New&quot;,monospace;font-size:12.25px;m=
argin-top:0px;margin-bottom:1rem;overflow:auto;color:rgb(33,37,41);white-sp=
ace:pre-wrap;word-break:normal;padding:0px">[BA] That&#39;s a pretty straig=
htforward way to move forward on low latency or P2P use cases (e.g. game st=
reaming and remote desktop).  HTTP/3 use cases tend to be situations where =
caching might be useful, or where there is a desire to leverage HTTP/3 spec=
ifically. For example, for live events you can often live with more latency=
 (perhaps up to a second), and CDNs are widely used today to improve scalab=
ility. In the RIPT BOF, a desire to leverage cloud infrastructure was menti=
oned, though at the time there was scepticism as to whether that would actu=
ally be possible (and similar concerns have been raised on this thread). </=
pre><pre class=3D"gmail-wordwrap" style=3D"box-sizing:border-box;font-famil=
y:SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Co=
urier New&quot;,monospace;font-size:12.25px;margin-top:0px;margin-bottom:1r=
em;overflow:auto;color:rgb(33,37,41);white-space:pre-wrap;word-break:normal=
;padding:0px">As for firewall traversal, QUIC connections can use the same =
socket and<br></pre><pre class=3D"gmail-wordwrap" style=3D"box-sizing:borde=
r-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mon=
o&quot;,&quot;Courier New&quot;,monospace;font-size:12.25px;margin-top:0px;=
margin-bottom:1rem;overflow:auto;color:rgb(33,37,41);white-space:pre-wrap;w=
ord-break:normal;padding:0px">would thus share the NAT binding... assuming =
middleware does not decode
QUIC initial packets. Each connection could end up on different host
depending on load balancing though.</pre><pre class=3D"gmail-wordwrap" styl=
e=3D"box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas=
,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,monospace;font-size:12=
.25px;margin-top:0px;margin-bottom:1rem;overflow:auto;color:rgb(33,37,41);w=
hite-space:pre-wrap;word-break:normal;padding:0px">[BA] I think the concern=
 was not NAT traversal so much as enterprise firewalls that today often hav=
e restrictive policies (e.g. TCP-only or HTTP-only). Not sure whether those=
 firewalls are likely to be QUIC-friendly or if so what we can assume about=
 them when they are upgraded (e.g. MASQUE support?). So may not be easy to =
say exactly what the requirements will be. </pre><pre class=3D"gmail-wordwr=
ap" style=3D"box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,=
Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,monospace;font=
-size:12.25px;margin-top:0px;margin-bottom:1rem;overflow:auto;color:rgb(33,=
37,41);white-space:pre-wrap;word-break:normal;padding:0px">Has somebody for=
mulated a list of pros and cons for Http3Transport as
compared to QuicTransport?
</pre><pre class=3D"gmail-wordwrap" style=3D"box-sizing:border-box;font-fam=
ily:SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;=
Courier New&quot;,monospace;font-size:12.25px;margin-top:0px;margin-bottom:=
1rem;overflow:auto;color:rgb(33,37,41);white-space:pre-wrap;word-break:norm=
al;padding:0px">[BA] There have been some slides presented with a few basic=
 considerations. But more detailed examination seems needed to distill requ=
irements and get to the bottom of what implementers need as opposed to what=
 might sound good at a superficial level but might not be deployable or imp=
lementable. The need for more detailed discussion becomes apparent when act=
ually trying to implement some of the use cases - and realizing that in pra=
ctice there are more moving parts than meets the eye. </pre><pre class=3D"g=
mail-wordwrap" style=3D"box-sizing:border-box;font-family:SFMono-Regular,Me=
nlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,mon=
ospace;font-size:12.25px;margin-top:0px;margin-bottom:1rem;overflow:auto;co=
lor:rgb(33,37,41);white-space:pre-wrap;word-break:normal;padding:0px">There=
 are also DevOps issues like load balancing/draining, which has been an iss=
ue with Websockets deployment. Quite solvable but worth articulating in ter=
ms of requirements.

</pre><br class=3D"gmail-Apple-interchange-newline"><div>&quot;</div></div>=
<br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed=
, Nov 11, 2020 at 5:31 PM Luke Curley &lt;<a href=3D"mailto:kixelated@gmail=
.com">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmai=
l_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,20=
4,204);padding-left:1ex"><div dir=3D"ltr"><div>@bernard I think that use-ca=
se boils down to a lack of HTTP functionality. The &quot;proper&quot; appro=
ach would be to use HTTP server push for media, but nobody likes that. Just=
in&#39;s ask is to instead to augment HTTP/3 such that it muxes in QUIC-lik=
e connections. I do think it address HTTP&#39;s short-comings, but it&#39;s=
 non-trivial and will require custom HTTP/3 implementations.=C2=A0</div><di=
v><br></div><div>My use-case is almost identical (Twitch). We&#39;re implem=
enting a video protocol over QuicTransport instead of trying to leverage HT=
TP/3. It gives us the ability to push media while utilizing stock QUIC impl=
ementations. All you need on top is a simple API layer, such as JSON messag=
es=C2=A0over bidirectional streams.</div><div><br></div><div>As for firewal=
l traversal, QUIC connections can use the same socket and would thus share =
the NAT binding... assuming middleware does not decode QUIC initial packets=
. Each connection could end up on different host depending on load balancin=
g though.<br></div><div><br></div><div>Has somebody formulated a list of pr=
os and cons for Http3Transport as compared to QuicTransport?</div></div><br=
><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, N=
ov 11, 2020 at 2:35 PM Bernard Aboba &lt;<a href=3D"mailto:bernard.aboba@gm=
ail.com" target=3D"_blank">bernard.aboba@gmail.com</a>&gt; wrote:<br></div>=
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">Victor s=
aid:=C2=A0<div><br></div><div>&quot;Http3Transport without pooling doesn&#3=
9;t make that much sense.&quot;</div><div><br></div><div>[BA] Some Http3Tra=
nsport use cases depend on pooling between WebTransport and HTTP/3 request/=
responses; others could just be satisfied by WebTransport pooling.=C2=A0 I =
would suggest that we distinguish these two requirements, because pooling/s=
haring a QUIC connection between WebTransport instances appears simpler tha=
n pooling/sharing a QUIC connection between WebTransport and HTTP/3.</div><=
div><br></div><div>At IETF 107 RIPT BOF there was a desire expressed to ena=
ble media services to leverage HTTP infrastructure. Justin Uberti described=
 a use case where gRPC would be sent over HTTP/3 to request that the server=
 initiate either a reliable stream or flow of datagrams (see below).=C2=A0 =
This use case appears to require pooling of WebTransport and HTTP/3 request=
/responses (in order to simplify firewall traversal).=C2=A0 However, this u=
se case is not easily supported using an garden=C2=A0variety HTTP/3 server,=
 which probably could not initially be expected to support QUIC datagrams (=
although it would not be hard to support in node.js assuming that a QUIC mo=
dule was available).=C2=A0</div><div><br></div><div>See Slide 7 here:=C2=A0=
<a href=3D"https://datatracker.ietf.org/meeting/107/materials/slides-107-ri=
pt-rtc-implementation-experiences-00" target=3D"_blank">https://datatracker=
.ietf.org/meeting/107/materials/slides-107-ript-rtc-implementation-experien=
ces-00</a></div><div><br></div><div><div><img src=3D"cid:ii_khdyrmmj0" alt=
=3D"image.png" width=3D"562" height=3D"294"><br></div></div></div><br><div =
class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Nov 11,=
 2020 at 1:52 PM Victor Vasiliev &lt;vasilvv=3D<a href=3D"mailto:40google.c=
om@dmarc.ietf.org" target=3D"_blank">40google.com@dmarc.ietf.org</a>&gt; wr=
ote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px=
 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D=
"ltr">I&#39;m not sure &quot;HTTP/3 without pooling&quot; does anything tha=
t QuicTransport doesn&#39;t already=C2=A0do, especially since the latter go=
t real header support.=C2=A0 So, at least as far as my understanding of thi=
s space goes, Http3Transport without pooling doesn&#39;t make that much sen=
se.</div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_att=
r">On Wed, Nov 11, 2020 at 4:43 PM Luke Curley &lt;<a href=3D"mailto:kixela=
ted@gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></di=
v><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;borde=
r-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div><=
div>It seems like connection pooling introduces a lot of technical complexi=
ty for limited benefits. Hypothetically, what if connection pooling was dro=
pped as a requirement?=C2=A0</div></div><div><br></div><div>What if Http3Tr=
ansport involved establishing a new HTTP/3 connection and downgrading it to=
 QUIC? It would be analogous to WebSockets for HTTP/1.1.=C2=A0=C2=A0<br></d=
iv><div><br></div><div><div>You could use 0-RTT to minimize latency when es=
tablishing a HTTP/3 or Http3Transport connection to an existing host. These=
 connections would not share congestion control state (unfortunate), but wo=
uld also not share flow control limits (yay).</div></div><div></div><div><b=
r></div><div>I also think this is how you could merge QuicTransport and Htt=
p3Transport. Use HTTP/3 for the handshake, and QUIC for the data transfer.<=
/div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div>
</blockquote></div>

--00000000000098a63105b3edc744--

--00000000000098a63305b3edc745
Content-Type: image/png; name="image.png"
Content-Disposition: inline; filename="image.png"
Content-Transfer-Encoding: base64
Content-ID: <ii_khdyrmmj0>
X-Attachment-Id: ii_khdyrmmj0

iVBORw0KGgoAAAANSUhEUgAAA54AAAHkCAYAAABWqfBpAAAgAElEQVR4AeydaZAVVZq//5/nw0xM
zETMfOkvE9Eds/R0z/Q2vc10z3RP9/S+r3Wr2Pd9UxRQEJRNEJBNRUX2fREQAWkWZREERUEWFRBE
NgUFQRCq3n88Wfe9dW5W5q1b1C2oon8nIiuzMs/6nJMnz++8J/P+P5MTAREQAREQAREQAREQAREQ
AREQgUYk8P8aMW5FLQIiIAIiIAIiIAIiIAIiIAIiIAIm4alGIAIiIAIiIAIiIAIiIAIiIAIi0KgE
JDwbFa8iFwEREAEREAEREAEREAEREAERkPBUGxABERABERABERABERABERABEWhUAhKejYpXkYuA
CIiACIiACIiACIiACIiACEh4qg2IgAiIgAiIgAiIgAiIgAiIgAg0KgEJz0bFq8hFQAREQAREQARE
QAREQAREQAQkPNUGREAEREAEREAEREAEREAEREAEGpWAhGej4lXkIiACIiACIiACIiACIiACIiAC
Ep5qAyIgAiIgAiIgAiIgAiIgAiIgAo1KQMKzUfEqchEQAREQAREQAREQAREQAREQAQlPtQEREAER
EAEREAEREAEREAEREIFGJSDh2ah4FbkIiIAIiIAIiIAIiIAIiIAIiICEp9qACIiACIiACIiACIiA
CIiACIhAoxKQ8GxUvIpcBERABERABERABERABERABERAwlNtQAREQAREQAREQAREQAREQAREoFEJ
SHg2Kl5FLgIiIAIiIAIiIAIiIAIiIAIiIOGpNiACIiACIiACIiACIiACIiACItCoBCQ8GxWvIhcB
ERABERABERABERABERABEZDwVBsQAREQAREQAREQAREQAREQARFoVAISno2KV5GLgAiIgAiIgAiI
gAiIgAiIgAhIeKoNiIAIiIAIiIAIiIAIiIAIiIAINCoBCc9GxavIRUAEREAEREAEREAEREAEREAE
JDzVBkRABERABERABERABERABERABBqVgIRno+JV5CIgAiIgAiIgAiIgAiIgAiIgAhKeagMiIAIi
IAIiIAIiIAIiIAIiIAKNSkDCs1HxKnIREAEREAEREAEREAEREAEREAEJT7WBBhOounbe3tzzvK1e
sdgWzJ9vi5c/a8/vfMPOX2lw1Iqg2RGotA/e2WObN261N09fbTa5v3b5tO19cb2tWLrQ5i9YZCvW
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
GeELf1E77a7QeREQAREQAREQAREQgTQCJfdR3kIAACAASURBVBWeDMIPLLsnN7iMfh6lgJUhzFTl
le02soNbHDrYzK2Jaw2DIKUUnkR7yfauf9Tu6uJWp3AgW26d+j5kz+55364Hy4LThCccTr++2AZ3
82WYHteNCc/6xnft0hFbM2Ok9WjrPD396n2moqMNHrfQXns3tCQFaIs8rLp+zl5aNdUGdq+xoIaD
/kxFW+s3ZKqtf/X9OiYRiuXV8DoqvfCshvXh8Rds2vDeuWXFeRzKO9iQh1fYm+euW/gTJnHhSUzn
33rOHr63S3Y5an69tWjbz6Yu5mdWrtvuuaUUnqUrw80QntW5vWbHdy+xBwd0zPU3IfPod1B7PGAL
Nx5JXDpfHUf4t9LefXmuDe7V1lq37Wnj5++xi0X2XWEsOhYBERABERABERABEUgmUGLhmZxIczpb
9ck5O/TSBluxaJ7NmjnL5i9Zbdv2nLihj41UXjlte154xhbNm22zZs23lc+9bKc+KvZdytrU6htf
5dWztn/nBluxZL7NnjXb5s5fZus2v2Inztdh/qmddMEzVZUf24kD223dqqU2b84cW7D4aVu3abcd
P1c/YVts+UpZRwULVu+LlXbh1D7bvGa5zZ8722bPWWgr1223w2eK+9mZmuSu2pkju+y5VYts7uyZ
NnvuElu7+VU73YC2UxN3XUelKkNd6ZTq+jU7+/YrtuHZZTYP5rPn29KVf7LdB06bPmZbKsaKRwRE
QAREQAREQAQaTkDCs+EMFYMIiIAIiIAIiIAIiIAIiIAIiEABAhKeBeDokgiIgAiIgAiIgAiIgAiI
gAiIQMMJSHg2nKFiEAEREAEREAEREAEREAEREAERKEBAwrMAHF0SAREQAREQAREQAREQAREQARFo
OAEJz4YzVAwiIAIiIAIiIAIiIAIiIAIiIAIFCEh4FoCjSyIgAiIgAiIgAiIgAiIgAiIgAg0nIOHZ
cIaKQQREQAREQAREQAREQAREQAREoAABCc8CcHRJBERABERABERABERABERABESg4QQkPBvOUDGI
gAiIgAiIgAiIgAiIgAiIgAgUICDhWQCOLomACIiACIiACIiACIiACIiACDScgIRnwxkqBhEQAREQ
AREQAREQAREQAREQgQIEJDwLwNElERABERABERABERABERABERCBhhOQ8Gw4Q8UgAiIgAiIgAiIg
AiIgAiIgAiJQgICEZwE4uiQCIiACIiACIiACIiACIiACItBwAhKeDWeoGERABERABERABERABERA
BERABAoQkPAsAEeXREAEREAEREAEREAEREAEREAEGk5AwrPhDBWDCIiACIiACIiACIiACIiACIhA
AQISngXg6JIIiIAIiIAIiIAIiIAIiIAIiEDDCUh4NpyhYhABERABERABERABERABERABEShAQMKz
ABxdEgEREAEREAEREAEREAEREAERaDgBCc+GM1QMIiACIiACIiACIiACIiACIiACBQhIeBaAo0si
IAIiIAIiIAIiIAIiIAIiIAINJyDh2XCGikEEREAEREAEREAEREAEREAERKAAAQnPAnB0SQREQARE
QAREQAREQAREQAREoOEEJDwbzlAxiIAIiIAIiIAIiIAIiIAIiIAIFCAg4VkAji6JgAiIgAiIgAiI
gAiIgAiIgAg0nICEZ8MZKgYREAEREAEREAEREAEREAEREIECBCQ8C8DRJREQAREQAREQAREQAREQ
AREQgYYTkPBsOEPFIAIiIAIiIAIiIAIiIAIiIAIiUICAhGcBOLokAiIgAiIgAiIgAiIgAiIgAiLQ
cAISng1nqBhEQAREQAREQAREQAREQAREQAQKEJDwLABHl0RABERABERABERABERABERABBpOQMKz
4QwVgwiIgAiIgAiIgAiIgAiIgAiIQAECEp4F4OiSCIiACIiACIiACIiACIiACIhAwwlIeDacoWIQ
AREQAREQAREQAREQAREQAREoQEDCswAcXRIBERABERABERABERABERABEWg4AQnPhjNUDCIgAiIg
AiIgAiIgAiIgAiIgAgUISHgWgKNLIiACIiACIiACIiACIiACIiACDScg4dlwhopBBERABERABERA
BERABERABESgAAEJzwJwdEkEREAEREAEREAEREAEREAERKDhBCQ8G85QMYiACIiACIiACIiACIiA
CIiACBQgIOFZAI4uiYAIiIAIiIAIiIAIiIAIiIAINJyAhGfDGSoGERABERABERABERABERABERCB
AgQkPAvA0SUREAEREAEREAEREAEREAEREIGGE5DwbDhDxSACIiACIiACIiACIiACIiACIlCAgIRn
ATi6JAKFCFRWVtoHH3xgJ0+etPfff9+qqqoKec+79vzzz9vrr7+ed07/iIAIiIAIiIAIiIAIiMDt
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
Lw7K+IMf/GD0F564aEy98xOWfP19RJufd3QSN7RSLmHSh07yCW81LGVNHuKSH2W+5kGOP/nJT5Zo
Vh6coC5N4i/XfJNX4sszfAArP/7xj8d34a7//u//HvPNX2mIm7Iri+eUTZg0KXvououDRtKmDIlf
+fIs7pe+9KXhy1/+8thuEi59zVO7SVj4qXmEt9/+9rdLfCV++JXXr371q5HH+OHrW9/61ugfHtFt
XfKSD7riJs/4ffvb3x5BqfD4JZ/wgofWkb32izfl/P73vz/88pe/HP207XqJc8UVVyz5kd3Xv/71
Mb/vfOc7oyyFA53ho81vNe8deK5Gaj1Nl0CXQJdAl0CXQJdAl8A2ksCuAp5Pe9rThtNOO2145CMf
OXzwgx9cUsK/+tWvDi95yUtGpTcgswKIKPdR3inmAT1R7vlFafZclXfpc73whS8cbnOb2wx3uctd
hlvf+tbD1772tSVAlDjuQADaoc8v9BMGECRN5TcAQnxxwrc4+BKePEK35iNOyhf67i9/+cuHZz/7
2TvQePvb3z685S1vGemh4SJD9wc+8IHDRz7ykZEH9JZz4oQfPNbrve997/D4xz9+iffIV5wAN3m2
6ZU9V8JSPrKJLIThO3STxr3S9exvyU466aThec973sDqGT6FSe8uHZrCvMvLHa8Jr/UnvgkSYWhI
xw9PT3jCE4af//znI43U553udKfhwx/+8BiP3Pi3LvmnjMk3tNG/4IILhs9//vNjXgkPrykD/9bJ
8z73uc/Ig3i3v/3txwmVt771rcP5558/7LfffsMd73jH4dGPfvQA3D7rWc8azj777OF617vecM45
54yyU05yVJbDDjtseOITn7hU9ja/1bx34LkaqfU0XQJdAl0CXQJdAl0CXQLbSAK7AniymB1wwAHj
Er8o4hRmwIFif8IJJ4wASjz+LHkso5dccsnw5je/eVTs+QMAL37xi4d3vvOdozUPWGAtfc973jO8
4AUvGNOg/93vfndUyi+88MLhs5/97AA48X/Ri140PPOZzxzzeNSjHjU84xnPGMEGOvJ57WtfuwRm
5Edpf8Mb3jC84hWvGHkHJlhtP/OZz4x8oE2BF5cVDIC+9NJLRxADQADV5Ik2wCS9uJY/XnzxxSM/
rE38kh8eAXPpxXd94xvfGEG7JZHAkzzf//73D2984xtHHiNT/m9605tGWd7tbncbPvrRj47pp8BL
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
6BLoEtjWEqjAk/JtWaSDZywJtZyyux0lwLpmueYvfvGLfm0gGVjy6y9f1IslwOtRPyy6HXju2P5n
vXXgOUsy3b9LoEugS6BLoEugS6BLoEtglECAJ6Xdcsdb3vKWw1577TVc+9rXHvfJsfBlSSLQ5d1l
6SWXd3dLOlmKqh/rUk1nqWSbjnLPElXTAcHyiN9q003xKa82PzzJI/lJh4e8u0uD1+rXplPWKgOy
897KAG1hoSWcrPLuLh2Zxk98rqYT3qbzvki6yqc8Fq2rNp2ytOXDZ/h2b+XCry0f+bdymdWm2rax
SDr51fpDQ5mrPIXXOPhEu+Y3K13bphZJ17YpvEhX22LaRuVztelaGczKT7ya33J1ZXn2Na95zXFf
79hIN8HPXpuAx85il0CXQJdAl0CXQJdAl8CWkQDgeZ3rXGf48z//8xFwAp2uq1zlKsN1r3vd4QY3
uMH4tx5OA3Vqq3eXg1q4m93sZkt+ljs6VCdx3CmkD3zgA5f8jjrqqDFdjeMUU3v4qt8P//6H46mm
8fOXJBT+vLv7r2r7+aqfPYZ4i5+/3mABy7u7vYEOyql+9v05cTZ+DtWxvzDv7u94x9+M4PyGN7zh
8Bd/8RfjRSF3am3i+SsS/wOZ93322WfcD+r/OuNHBizLrMrxE24/Yt7d7cO0bzJ+aHEHHnjgkp+/
PbEHM3HcvfOPn/ic9PFDF/28u8u/8umgH+7GN77xUjyHITm4p6YzaaHc8SMPcsm7u79l8V+mDkyK
v32y9mTm3UFA9qYefPDBS37CydN/fyaeg4XUa96d/muvq3TqRf1oi07l9X+dief/PO0FzbsTb/29
Sq0H+0e1x9SvuG1bdLqvv5FxSm5oOVHXvlDp+MlXWWpbdPqw/bz+Jifp7OXVFvHMTx05Fbi2xXvf
+97j38o4RCrptEV/O5P3/ffff9wD65Cm+Dnoyem/N7/5zZf81J06TJzb3OY2475cdR2/8847b1zt
sPfef2gv6q62xRw+5T9Vpbve9a43XPnKV+7Ac/xi+k+XQJdAl0CXQJdAl0CXQJfAThKIxdNhKxRx
IBTwZL2gpAMnDoNh/aCke3c5JIZzEEz8/A2FfaF5d2cxAj7j538Zuby7W6bnBNTqB2RS7uP3xS9+
cbRO5d2dgu4An+rHQub00/jl4J68u9u/ClRWP0CJLOIHhLE05d0dqAUmqh/rlMOD4mfJZ5WBw3ks
+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
DTfc8AYkX3vtte7II4/sw1999dVveD5245hjjunDv/TSS2OPc+/PEdhvv/26XXfddYvgoW0vvvji
7vXXX5/L75prrunb6brrrpu7N8vJGWec0cf7wZ/+YJbgiwrz4x//uE/7M5/5zLx4t9xyS3f++ed3
v/jFL+bd32gXn/rUp/r6GX+PP/741OJfcsklc2GFb3/vfve7u6OOOqr7zne+0/3qV7+al472FPbM
M8+cd38jX3z729/u63TppZeu22qcffbZfRkffPDBdVvG5RTsrrvu6s4999zuZz/72XKSWZdxr7ji
ir7tbrrppnVZvhQqCASBIBAEgsCWQmDFiedZZ53Vbb/99t3Pf/7zvg5XXnllt80223TPP//8vDpR
8pHON73pTf3vsssum/d80sWBBx7Yh18J4kmxPvbYY7vvf//7k7LbsPf32muv7s1vfvOql/+FF16Y
a8M777xzLr+v//HX+/vf+MY35u7NcnLSSSf18VZDwX7yySf7tD/xiU/MFUU/1D/1wxtvvHHu/pY8
efTRR/t+iKwvVZ577rlu22237euhLqeffvrUpL785T/qw77tbW/rEM367bLLLv34rXF56qmnziOf
2tOzk08+eWr6G+mhdlenCy64YN0W+7Of/Wxfxs04VwH9ne98Z1+/9Uz+p3UO7zfvEgs6Q3FP/1rs
ItwwnYWuLawpg7k3EgSCQBAIAkFgPSKwosSTdWSPPfboX35V2YMPPrjbf//967I//vLPftlR/r2M
kSPHtSCeF110UZ/3mDV2XoE34MWWIp7akhX64x//eMe6XbJRiKc+ywL6kY98pHvmmWeq+Fv0eM89
9/T98HOf+9yS82WxNY6MNccdd9xxbvFnLNEinqxMQ0HGKck1NltCviWJ5znnnNN997t/Mizeil+H
eK44pItO0ILlPvvs0z3yyCOLjrseIowtalW5thTx5CVi7J944omVdY5BIAgEgSAQBNYVAitKPH/4
wx/2L75vfetbfSVZJVlh2hVY7pjHH398H47Fk9If4rnyfWJLEc9JJd8oxHNS+bfk/eUST2Nqt912
68cRi9gBBxzQn19//fUTqzGNeFakCy+8sE+nXTjaksST9fVLX/pSFWfVjiGeqwbtVpNwiOdW09Sp
aBAIAkEgCCwDgWUTz6effrqzWu1XbrCnnXZaf3300Uf3iity6bm9VNyBWGOEtcfzlFNO6cOshMWT
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
CGBBLK1/AAAAAElFTkSuQmCC
--00000000000098a63305b3edc745--


From nobody Fri Nov 13 07:05:22 2020
Return-Path: <vasilvv@google.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0022B3A09D6 for <webtransport@ietfa.amsl.com>; Fri, 13 Nov 2020 07:05:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.598
X-Spam-Level: 
X-Spam-Status: No, score=-17.598 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DC_PNG_UNO_LARGO=0.001, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, 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 69x1_sFfZzM6 for <webtransport@ietfa.amsl.com>; Fri, 13 Nov 2020 07:05:19 -0800 (PST)
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com [IPv6:2a00:1450:4864:20::236]) (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 37B4C3A003E for <webtransport@ietf.org>; Fri, 13 Nov 2020 07:05:18 -0800 (PST)
Received: by mail-lj1-x236.google.com with SMTP id i17so9963204ljd.3 for <webtransport@ietf.org>; Fri, 13 Nov 2020 07:05:18 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Q8BwNtgykEUrahx2VasWbBm8zrAE4cCtjPsNHPT6IDk=; b=rxPGKFVdgSjpUEafbq5oBoXB2Z48djItCYWuH7HgHxqSwBr7UwiATjp0U7egaqKrJv 4jB9LgZ5AeVFksPBCmf4uFLpNMaY8VMpKyHgGZTyfVso0hGOFXSPPVacvBDUUydGBf2n 6Xn9hKtu+OnmhSX5sC5AGrTAWtXVDCeJKSwETkzA7TNgYk2XVlF6ELHv4RatL1Uc8CkS JD5AQdxbq8ywZcs0Hyh4SSOKrGJNPYHKen93cLpb8Le2ljH5gIDPD0kOrzGG2MXejH4N q9cptzQlfB9kxHjxjarL1DeQDYsmKBAtwiXOnHMamm+JzW+dcJhliSnvyrgwhvTfsC+c v2bQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Q8BwNtgykEUrahx2VasWbBm8zrAE4cCtjPsNHPT6IDk=; b=pnZrveI+1XhRoeLP9sqJFOveAHhvwePRmsKigcuepXLiFUMI+3HKt5g05vFp4GqVVV 44UrPSTVpiFGIDjq+xRdLbhZADqG2sdLJ5XbMRIS7+yGJGtseViTaqvTCxvjVyMIR08g 7qsD0cUuJ54mR5IASaY247ggOxjTFb7AQY3MhxnohlHX3Buwrcf09vpCf0MlD04DnBfD 6EWCQk6GKuNVglAY7RdfI1yv61fox3WOkSNiXTExCvz34zAXMXwmGiU01dXF7Jz3R/Wv XHLNMTnXTZY7Gc9veOQfJIQhjRdb/Qe2c6Dwf9pJZNp8WbzPfK3NqcwQJ7qWfjfwM52o bBZA==
X-Gm-Message-State: AOAM5304uOSrbyXoDbLn62E4a4FMRMHokdtfehN5HgLIdi/fSrdWE7mk 01fVmQAC2Tvc1gZQx5MXB72lF+540hjNaNixT/cuk25kffE=
X-Google-Smtp-Source: ABdhPJwVhCxVSnpSp7uo4vpiYFrezEMyojU8gU1BH939oUeNse3ai96vKGUZu8vH4MLCriQtQ6C73Pk1jYIdmkto2Ks=
X-Received: by 2002:a05:651c:502:: with SMTP id o2mr1206505ljp.318.1605279915499;  Fri, 13 Nov 2020 07:05:15 -0800 (PST)
MIME-Version: 1.0
References: <CAHVo=Zk84mfOJr3XSXmrVDBq0XUKoB63ytCR1dhhtM7aehq7qw@mail.gmail.com> <CAAZdMafmO3qKQKegJ7X+MvTjnPvKnO3+B1T-aRME6FZqL-e_1A@mail.gmail.com> <CAOW+2dv8bGfftqZYFnPGpOX+XPzydh4_KJjknhu5FxP-w1neTw@mail.gmail.com>
In-Reply-To: <CAOW+2dv8bGfftqZYFnPGpOX+XPzydh4_KJjknhu5FxP-w1neTw@mail.gmail.com>
From: Victor Vasiliev <vasilvv@google.com>
Date: Fri, 13 Nov 2020 10:05:03 -0500
Message-ID: <CAAZdMacxJ0LbgiQEta1S4=9BHNDVO7LHufp4MaNZLoMa4HuNdg@mail.gmail.com>
To: Bernard Aboba <bernard.aboba@gmail.com>
Cc: Luke Curley <kixelated@gmail.com>, WebTransport <webtransport@ietf.org>
Content-Type: multipart/related; boundary="00000000000021a21005b3fe5b10"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/EVwvoFTSrVDMuqtxN_5yhcXaE6I>
Subject: Re: [Webtransport] HTTP/3 Downgrade
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 13 Nov 2020 15:05:21 -0000

--00000000000021a21005b3fe5b10
Content-Type: multipart/alternative; boundary="00000000000021a20f05b3fe5b0f"

--00000000000021a20f05b3fe5b0f
Content-Type: text/plain; charset="UTF-8"

On Wed, Nov 11, 2020 at 5:35 PM Bernard Aboba <bernard.aboba@gmail.com>
wrote:

> Victor said:
>
> "Http3Transport without pooling doesn't make that much sense."
>
> [BA] Some Http3Transport use cases depend on pooling between WebTransport
> and HTTP/3 request/responses; others could just be satisfied by
> WebTransport pooling.  I would suggest that we distinguish these two
> requirements, because pooling/sharing a QUIC connection between
> WebTransport instances appears simpler than pooling/sharing a QUIC
> connection between WebTransport and HTTP/3.
>

I'm actually not sure about that.  Managing connection pools can be fairly
hard, so I would not be surprised if implementing pooled WebTransport
without HTTP required more code than just using HTTP/3.

Design-wise, almost all hard problems (things like flow control) are issues
for both.


>
> At IETF 107 RIPT BOF there was a desire expressed to enable media services
> to leverage HTTP infrastructure. Justin Uberti described a use case where
> gRPC would be sent over HTTP/3 to request that the server initiate either a
> reliable stream or flow of datagrams (see below).  This use case appears to
> require pooling of WebTransport and HTTP/3 request/responses (in order to
> simplify firewall traversal).  However, this use case is not easily
> supported using an garden variety HTTP/3 server, which probably could not
> initially be expected to support QUIC datagrams (although it would not be
> hard to support in node.js assuming that a QUIC module was available).
>
> See Slide 7 here:
> https://datatracker.ietf.org/meeting/107/materials/slides-107-ript-rtc-implementation-experiences-00
>
> [image: image.png]
>

I've been thinking about this, and I am not entirely convinced this is
specific to Http3Transport.  There are many reasons why HTTP load balancers
usually work on L7 instead of L4, but the main ones are roughly: (1) this
lets them optimize content (caching, compression, etc), (2) L7 LB can fan
out requests from a single HTTP connection to multiple backends.  The first
one doesn't really apply that much to WebTransport (since we can't do
things like caching), and the second one is just a benefit of
Http3Transport being pooled.  QuicTransport is probably perfectly fine
being load balanced at L4.

>From my perspective, the main benefit of Http3Transport is pooling support,
and pretty much everything else should work for QuicTransport too.  Another
benefit is ability to fall back to Http2Transport when UDP is blocked (I
understand that Http2Transport is not compelling for *existing* systems
that already work over TCP, but if I were to build a *completely new* thing
over WebTransport, I would want it to handle networks with no UDP for me).

--00000000000021a20f05b3fe5b0f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">On Wed, Nov 11, 2020 at 5:35 PM Bernard A=
boba &lt;<a href=3D"mailto:bernard.aboba@gmail.com" target=3D"_blank">berna=
rd.aboba@gmail.com</a>&gt; wrote:<br></div><div class=3D"gmail_quote"><bloc=
kquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:=
1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">Victor said:=
=C2=A0<div><br></div><div>&quot;Http3Transport without pooling doesn&#39;t =
make that much sense.&quot;</div><div><br></div><div>[BA] Some Http3Transpo=
rt use cases depend on pooling between WebTransport and HTTP/3 request/resp=
onses; others could just be satisfied by WebTransport pooling.=C2=A0 I woul=
d suggest that we distinguish these two requirements, because pooling/shari=
ng a QUIC connection between WebTransport instances appears simpler than po=
oling/sharing a QUIC connection between WebTransport and HTTP/3.</div></div=
></blockquote><div><br></div><div>I&#39;m actually not sure about that.=C2=
=A0 Managing connection pools can be fairly hard, so I would not be surpris=
ed if implementing pooled WebTransport without HTTP required more code than=
 just using HTTP/3.</div><div><br>Design-wise, almost all hard problems (th=
ings like flow control) are issues for both.</div><div>=C2=A0</div><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px=
 solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div><br></div><=
div>At IETF 107 RIPT BOF there was a desire expressed to enable media servi=
ces to leverage HTTP infrastructure. Justin Uberti described a use case whe=
re gRPC would be sent over HTTP/3 to request that the server initiate eithe=
r a reliable stream or flow of datagrams (see below).=C2=A0 This use case a=
ppears to require pooling of WebTransport and HTTP/3 request/responses (in =
order to simplify firewall traversal).=C2=A0 However, this use case is not =
easily supported using an garden=C2=A0variety HTTP/3 server, which probably=
 could not initially be expected to support QUIC datagrams (although it wou=
ld not be hard to support in node.js assuming that a QUIC module was availa=
ble).=C2=A0</div><div><br></div><div>See Slide 7 here:=C2=A0<a href=3D"http=
s://datatracker.ietf.org/meeting/107/materials/slides-107-ript-rtc-implemen=
tation-experiences-00" target=3D"_blank">https://datatracker.ietf.org/meeti=
ng/107/materials/slides-107-ript-rtc-implementation-experiences-00</a></div=
><div><br></div><div><div><img src=3D"cid:ii_khdyrmmj0" alt=3D"image.png" w=
idth=3D"562" height=3D"294"><br></div></div></div></blockquote><div><br></d=
iv><div>I&#39;ve been thinking about this, and I am not entirely convinced =
this is specific to Http3Transport.=C2=A0 There are many reasons why HTTP l=
oad balancers usually work on L7 instead of L4, but the main ones are rough=
ly: (1) this lets them optimize content (caching, compression, etc), (2) L7=
 LB can fan out requests from a single HTTP connection to multiple backends=
.=C2=A0 The first one doesn&#39;t really apply that much to WebTransport (s=
ince we can&#39;t do things like caching), and the second one is just a ben=
efit of Http3Transport being pooled.=C2=A0 QuicTransport is probably perfec=
tly fine being load balanced at L4.</div><div><br></div><div>From my perspe=
ctive, the main benefit of Http3Transport is pooling support, and pretty mu=
ch everything else should work for QuicTransport too.=C2=A0 Another benefit=
 is ability to fall back to Http2Transport=C2=A0when UDP is blocked (I unde=
rstand that=C2=A0Http2Transport=C2=A0is not compelling for <i>existing</i> =
systems that already work over TCP, but if I were to build a <i>completely =
new</i> thing over WebTransport, I would want it to handle networks with no=
 UDP for me).</div></div></div>

--00000000000021a20f05b3fe5b0f--

--00000000000021a21005b3fe5b10
Content-Type: image/png; name="image.png"
Content-Disposition: inline; filename="image.png"
Content-Transfer-Encoding: base64
Content-ID: <ii_khdyrmmj0>
X-Attachment-Id: ii_khdyrmmj0

iVBORw0KGgoAAAANSUhEUgAAA54AAAHkCAYAAABWqfBpAAAgAElEQVR4AeydaZAVVZq//5/nw0xM
zETMfOkvE9Eds/R0z/Q2vc10z3RP9/S+r3Wr2Pd9UxRQEJRNEJBNRUX2fREQAWkWZREERUEWFRBE
NgUFQRCq3n88Wfe9dW5W5q1b1C2oon8nIiuzMs/6nJMnz++8J/P+P5MTAREQAREQAREQAREQAREQ
AREQgUYk8P8aMW5FLQIiIAIiIAIiIAIiIAIiIAIiIAIm4alGIAIiIAIiIAIiIAIiIAIiIAIi0KgE
JDwbFa8iFwEREAEREAEREAEREAEREAERkPBUGxABERABERABERABERABERABEWhUAhKejYpXkYuA
CIiACIiACIiACIiACIiACEh4qg2IgAiIgAiIgAiIgAiIgAiIgAg0KgEJz0bFq8hFQAREQAREQARE
QAREQAREQAQkPNUGREAEREAEREAEREAEREAEREAEGpWAhGej4lXkIiACIiACIiACIiACIiACIiAC
Ep5qAyIgAiIgAiIgAiIgAiIgAiIgAo1KQMKzUfEqchEQAREQAREQAREQAREQAREQAQlPtQEREAER
EAEREAEREAEREAEREIFGJSDh2ah4FbkIiIAIiIAIiIAIiIAIiIAIiICEp9qACIiACIiACIiACIiA
CIiACIhAoxKQ8GxUvIpcBERABERABERABERABERABERAwlNtQAREQAREQAREQAREQAREQAREoFEJ
SHg2Kl5FLgIiIAIiIAIiIAIiIAIiIAIiIOGpNiACIiACIiACIiACIiACIiACItCoBCQ8GxWvIhcB
ERABERABERABERABERABEZDwVBsQAREQAREQAREQAREQAREQARFoVAISno2KV5GLgAiIgAiIgAiI
gAiIgAiIgAhIeKoNiIAIiIAIiIAIiIAIiIAIiIAINCoBCc9GxavIRUAEREAEREAEREAEREAEREAE
JDzVBkRABERABERABERABERABERABBqVgIRno+JV5CIgAiIgAiIgAiIgAiIgAiIgAhKeagMiIAIi
IAIiIAIiIAIiIAIiIAKNSkDCs1HxKnIREAEREAEREAEREAEREAEREAEJT7WBBhOounbe3tzzvK1e
sdgWzJ9vi5c/a8/vfMPOX2lw1Iqg2RGotA/e2WObN261N09fbTa5v3b5tO19cb2tWLrQ5i9YZCvW
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
GeELf1E77a7QeREQAREQAREQAREQgTQCJfdR3kIAACAASURBVBWeDMIPLLsnN7iMfh6lgJUhzFTl
le02soNbHDrYzK2Jaw2DIKUUnkR7yfauf9Tu6uJWp3AgW26d+j5kz+55364Hy4LThCccTr++2AZ3
82WYHteNCc/6xnft0hFbM2Ok9WjrPD396n2moqMNHrfQXns3tCQFaIs8rLp+zl5aNdUGdq+xoIaD
/kxFW+s3ZKqtf/X9OiYRiuXV8DoqvfCshvXh8Rds2vDeuWXFeRzKO9iQh1fYm+euW/gTJnHhSUzn
33rOHr63S3Y5an69tWjbz6Yu5mdWrtvuuaUUnqUrw80QntW5vWbHdy+xBwd0zPU3IfPod1B7PGAL
Nx5JXDpfHUf4t9LefXmuDe7V1lq37Wnj5++xi0X2XWEsOhYBERABERABERABEUgmUGLhmZxIczpb
9ck5O/TSBluxaJ7NmjnL5i9Zbdv2nLihj41UXjlte154xhbNm22zZs23lc+9bKc+KvZdytrU6htf
5dWztn/nBluxZL7NnjXb5s5fZus2v2Inztdh/qmddMEzVZUf24kD223dqqU2b84cW7D4aVu3abcd
P1c/YVts+UpZRwULVu+LlXbh1D7bvGa5zZ8722bPWWgr1223w2eK+9mZmuSu2pkju+y5VYts7uyZ
NnvuElu7+VU73YC2UxN3XUelKkNd6ZTq+jU7+/YrtuHZZTYP5rPn29KVf7LdB06bPmZbKsaKRwRE
QAREQAREQAQaTkDCs+EMFYMIiIAIiIAIiIAIiIAIiIAIiEABAhKeBeDokgiIgAiIgAiIgAiIgAiI
gAiIQMMJSHg2nKFiEAEREAEREAEREAEREAEREAERKEBAwrMAHF0SAREQAREQAREQAREQAREQARFo
OAEJz4YzVAwiIAIiIAIiIAIiIAIiIAIiIAIFCEh4FoCjSyIgAiIgAiIgAiIgAiIgAiIgAg0nIOHZ
cIaKQQREQAREQAREQAREQAREQAREoAABCc8CcHRJBERABERABERABERABERABESg4QQkPBvOUDGI
gAiIgAiIgAiIgAiIgAiIgAgUICDhWQCOLomACIiACIiACIiACIiACIiACDScgIRnwxkqBhEQAREQ
AREQAREQAREQAREQgQIEJDwLwNElERABERABERABERABERABERCBhhOQ8Gw4Q8UgAiIgAiIgAiIg
AiIgAiIgAiJQgICEZwE4uiQCIiACIiACIiACIiACIiACItBwAhKeDWeoGERABERABERABERABERA
BERABAoQkPAsAEeXREAEREAEREAEREAEREAEREAEGk5AwrPhDBWDCIiACIiACIiACIiACIiACIhA
AQISngXg6JIIiIAIiIAIiIAIiIAIiIAIiEDDCUh4NpyhYhABERABERABERABERABERABEShAQMKz
ABxdEgEREAEREAEREAEREAEREAERaDgBCc+GM1QMIiACIiACIiACIiACIiACIiACBQhIeBaAo0si
IAIiIAIiIAIiIAIiIAIiIAINJyDh2XCGikEEREAEREAEREAEREAEREAERKAAAQnPAnB0SQREQARE
QAREQAREQAREQAREoOEEJDwbzlAxiIAIiIAIiIAIiIAIiIAIiIAIFCAg4VkAji6JgAiIgAiIgAiI
gAiIgAiIgAg0nICEZ8MZKgYREAEREAEREAEREAEREAEREIECBCQ8C8DRJREQAREQAREQAREQAREQ
AREQgYYTkPBsOEPFIAIiIAIiIAIiIAIiIAIiIAIiUICAhGcBOLokAiIgAiIgAiIgAiIgAiIgAiLQ
cAISng1nqBhEQAREQAREQAREQAREQAREQAQKEJDwLABHl0RABERABERABERABERABERABBpOQMKz
4QwVgwiIgAiIgAiIgAiIgAiIgAiIQAECEp4F4OiSCIiACIiACIiACIiACIiACIhAwwlIeDacoWIQ
AREQAREQAREQAREQAREQAREoQEDCswAcXRIBERABERABERABERABERABEWg4AQnPhjNUDCIgAiIg
AiIgAiIgAiIgAiIgAgUISHgWgKNLIiACIiACIiACIiACIiACIiACDScg4dlwhopBBERABERABERA
BERABERABESgAAEJzwJwdEkEREAEREAEREAEREAEREAERKDhBCQ8G85QMYiACIiACIiACIiACIiA
CIiACBQgIOFZAI4uiYAIiIAIiIAIiIAIiIAIiIAINJyAhGfDGSoGERABERABERABERABERABERCB
AgQkPAvA0SUREAEREAEREAEREAEREAEREIGGE5DwbDhDxSACIiACIiACIiACIiACIiACIlCAgIRn
ATi6JAKFCFRWVtoHH3xgJ0+etPfff9+qqqoKec+79vzzz9vrr7+ed07/iIAIiIAIiIAIiIAIiMDt
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
Lw7K+IMf/GD0F564aEy98xOWfP19RJufd3QSN7RSLmHSh07yCW81LGVNHuKSH2W+5kGOP/nJT5Zo
Vh6coC5N4i/XfJNX4sszfAArP/7xj8d34a7//u//HvPNX2mIm7Iri+eUTZg0KXvououDRtKmDIlf
+fIs7pe+9KXhy1/+8thuEi59zVO7SVj4qXmEt9/+9rdLfCV++JXXr371q5HH+OHrW9/61ugfHtFt
XfKSD7riJs/4ffvb3x5BqfD4JZ/wgofWkb32izfl/P73vz/88pe/HP207XqJc8UVVyz5kd3Xv/71
Mb/vfOc7oyyFA53ho81vNe8deK5Gaj1Nl0CXQJdAl0CXQJdAl8A2ksCuAp5Pe9rThtNOO2145CMf
OXzwgx9cUsK/+tWvDi95yUtGpTcgswKIKPdR3inmAT1R7vlFafZclXfpc73whS8cbnOb2wx3uctd
hlvf+tbD1772tSVAlDjuQADaoc8v9BMGECRN5TcAQnxxwrc4+BKePEK35iNOyhf67i9/+cuHZz/7
2TvQePvb3z685S1vGemh4SJD9wc+8IHDRz7ykZEH9JZz4oQfPNbrve997/D4xz9+iffIV5wAN3m2
6ZU9V8JSPrKJLIThO3STxr3S9exvyU466aThec973sDqGT6FSe8uHZrCvMvLHa8Jr/UnvgkSYWhI
xw9PT3jCE4af//znI43U553udKfhwx/+8BiP3Pi3LvmnjMk3tNG/4IILhs9//vNjXgkPrykD/9bJ
8z73uc/Ig3i3v/3txwmVt771rcP5558/7LfffsMd73jH4dGPfvQA3D7rWc8azj777OF617vecM45
54yyU05yVJbDDjtseOITn7hU9ja/1bx34LkaqfU0XQJdAl0CXQJdAl0CXQLbSAK7AniymB1wwAHj
Er8o4hRmwIFif8IJJ4wASjz+LHkso5dccsnw5je/eVTs+QMAL37xi4d3vvOdozUPWGAtfc973jO8
4AUvGNOg/93vfndUyi+88MLhs5/97AA48X/Ri140PPOZzxzzeNSjHjU84xnPGMEGOvJ57WtfuwRm
5Edpf8Mb3jC84hWvGHkHJlhtP/OZz4x8oE2BF5cVDIC+9NJLRxADQADV5Ik2wCS9uJY/XnzxxSM/
rE38kh8eAXPpxXd94xvfGEG7JZHAkzzf//73D2984xtHHiNT/m9605tGWd7tbncbPvrRj47pp8BL
26SBGfHIAmB9znOeM+aB5jve8TfDeeedN8od2GVJ5U/2yqvceFQG/qytZM+fpTTl+9znPjfWE7nx
U5aPfexjwyc/+cnhZS972fC9731v5AEfkZV4eRfvzne+83D3u999rHNLRYWx4KVdBFziDW1lUX8/
+tGPRougdwCNxVT7CuAlc8D+sssuG/Mmjw996EPDwQcfPDz/+c8feZSX8qlTkyjqA3/itg7/2gQL
o2f1+bf/929H2ZHf2972trFdaNPqDx2yUn8mSH749z8c/YW1Dh/3vOc9h49//OMjbcATT/yV/173
utdY9tCVv+W6RxxxxNj2+LtOPvnksY2ymt/kJjcZrZ5T+bX5L/LegeciUupxugS6BLoEugS6BLoE
ugS2sQR2BfCkrD/sYQ8bQYOlrt4pyQDmIx7xiOGYY44ZXvrSl47LDvkDAfvuu+9w3/ved3jc4x43
KslA6hlnnDFadE4//fThVa961UgDgAAYgMhb3epW4/JDtA455JDhoIMOGm53u9sNRx111JgXIPSQ
hzxkBBEnnnjicPnll4/xWWEp6/K7973vPSrzlPFTTz11BB1AEZADpLA04YMVidUUWLBk8ba3ve3I
BwsSSxYF3h0fT3nKU0ZeLIkEOh7wgAeMFsRXvvKVw1e+8pURuFg6iU/lPfLII0fQSBaupz71qQOL
MQDhIr+LLrpotFaRA9AiP+UjG3H/8i//cgl4AkYBlnlumzh/NAA4NIBwwBZgAtD23nuf0SpmkgAg
ExfYV17yV4fAkiWfZ5555lh2VlogVBnUE3mxrIkLcANDrG1AlHZw1llnjeUTHz/K6ln5XEAhOQPV
wLxlpPI89NBDx/zUtbrHG0CnPfAj029+85vDq1/96hF8sXqrW0CMv7bFOqg8ZG/CQblNWLAealvy
xosLX8oI/Ie/Vp7imHhgeVROoFkb04bwbUJD2wDC5aV87373u0drJKskmYiLfuv4Ad+PecxjxjpS
Hu0IHW3jfve73whKyQEfLvWifeEl+fkG5MlqfuCBB45tU5r1cB14rocUO40ugS6BLoEugS6BLoEu
gS0sgV0BPCnVrEMUe8o+ax8FmULMAvXwhz98BAsBGIAnwEBBpwjzZ90Bfl7/+tePINYyQQp4QAbL
EtqsX8CHpZgU8A984APDHe5wh9EixJIESOyzzz4j0GEVA4xuectbjhY3oGv//fcfeaU4A0jAE3Ap
H9bAe9zjHiOIYFkClLlw+SoAACAASURBVCjtLIIsceIAEsARgAmwKLOyPvjBDx6BChqW+iozi1jA
BaB3+OGHD6973etG0PGgBz1oLDeaf/3Xfz1a+CIf9DwrJ7BJDmQlXxZZwAIwIbOkAeQ8o+e5dfzU
EWDJoisuui71ZeJAvq95zWvGcgHiLGasmMoAtAsDcI499tjh6U9/+rgnVRo0gCSAXTmlUz/iembp
BP5YEVmD5Z10LZ8AP9CZcgHelhWrD0un5Q1cAZ4mHmI5FF9coPyxj33syCu5kpcwZVcfgDSLOjlp
H4Cj+sdPZOhuskIZOOlbJ472Ddxpm+THyokOf2lMcmgveVdv2h2Z4l0ZpmiTJ961EaDfagITOuKi
BeCqe/SUQ3wy0b7UW+L5XnxHyuibE9e1Hq4Dz0aKKkYl2GiusW50p/HgVYPZDPxudHl2/roEugS6
BLajBCggDpEwnlCAu+sSaCWwK4BnFGv6C8sRcMOPEm6vHKWcnkMh5kcJ5qe9ikcZtpzWskeWIgCH
FU64JbnHH3/88NCHPnQElZR8y1WBMpYj4YAnQAp4AkRonHLKKeM3wAoJjAJE6AoDGuVJmbckFxil
yOOfJSpWSmGWcbJcspjhh+WSMg80WNZr6SRawA5AIw6waykrSxVgKlxcVjT5A0j4Fpdc7nrXu47l
JZ+ABnegEzAmI8uUWet+9rOfjXze//73H2UrPTouADF10da7cMtRjzvuuBHEpj7EJ2v845OllQWX
tRowlx+QZck04C4+WT/5yU8e5cpqqE6BIUAp5SPbWEeBTv0S4IkeGmjKr3XkVIEncB9rMB2ZTPVv
AbKpS/Ji8QQWgTX1wnIK+LFYKwvwrO5YevGgj7SMVX3hxYUOWal77SyybfmMv3pm5QVA8cJf2dQF
63n2eMpP+2RtJkvlAHjFb530Jj0sJcaTSZovfOELS8AYoBUmrXB37ePoo48eZS69cgD9LNEpGx48
r4frwPN/pWg247nPfe44o6GiXJC+jshMyUZzzPQ+KjMw4dfdsovMkmw0nvckPwYFM0obsS5nyUVH
qQMxgFSnMzLLqCPobm0SMHtIxma+N5ozENkLo2/qbvdLgNVB26AALecoXG07otjyW/Si4LgWjS+e
POIo5LPSsu4YL4wNFIvqKJGWhYlTxxJWCH1Nd10CkcCuAp7aPVAB4AFvFFyA5NOf/vSohwFqrF3G
PODU0ssoxOJZEslCA1iKx0KlXQM4Lu2e5RL/FHiAzLJaFtXsgQMUfCP6XX4AozEYEH7Xu941KucA
le8H6KA8ywfIYGmTH4unZ+VhXWMxs/TUM6AAiNIrWcuAJECLkg+YWtaoLOIBAsAPKyC6gC0AnZNO
GUcABmnxTE/17CIjd0DPMmD80n8ADuUG/MgKX+K6yAewDI3Ud+7ywjNLKfnJH5/qAOjHv2f7IwE9
MgQm5YcuYGUPo7zITR3h24SAdPpPZbWEGTAENMlAfwQkBoQKEx+feGodIMfqnXLpE9UfHgB2YBKo
wzsQl9NayV24/ZpkSVdkeSYXZVKv2hZa2iiZosOSbZks+mjgDV8mM7LUtu1v8cxPXHq8dqktSudS
NuGxeMrHO9CrHZqgYPFUBnm2TnrjAHDpmQy1e3HJpQJPfq5MTLiHB0Cfvqz98cOvaz3ctgeeKpRy
lwHX4KtD0ICZ6OOvs9sozixR+NJg8aqzq/z6oHWa3f2PBCIzH91mcQY19axu43QAOjX+Orzu1iaB
T33qU6MsDfobzRmM1bMT57rb/RIww03+BuPlHAVS3NqOAFfjSb0otOLph6q/Z0vKXK0/JUIa330b
Jo84B3mIR2Gq8ZTD0ithriy/k46iF/riULqMJ5b+Jb5DSLrrEiCBXQE8KdbanPZNkWdloTBTcoEO
Fj1tmiJNcTbuAT/iUJopxuJSyLVZk/F0On4Ue5ZCbTzLYPWrJm4ZGuTFWufwG2kCBE1I+oYATXFC
135APNCtWF19M74VQFM5gK18T8IB1IDM0CBDvAE69BLlYIFl3VUesiAH/PJLOZVZ/6F8gChdAC8O
S1LGHL6DNjoO+lFWoBMNgBMABOzRZwWTXnyHA7Gueke3dfRk/mioD+nJTfnshQUw0QEuWQ7RITf8
ApT2swJ5ZHHuueeOciOrHJ6EDgCvDeAP4NHvArQmHQBZ6chdPsozxSfQCfDJXxx0WRTT76onYXQr
ZVZnKbMl0cA+iyZQzrKoXcifBVwbVKeAKNranWdh4uINLZN1AC5wHbm18sR7+KPDk6G4udDRF2u/
yiu+Zdb2nppsTNtEo3XiMkCxGqt7cjVhgab4JmK0Qc/80AfsWcHxLL2yWS6sbYkXfsVdD7ftgadZ
AzNQQJvlC7UiNQIffjqMRWa+16NS5tEw4+PjxLOOozqNw6yMo619aBptd/8jAcshdBr2XGwWNwU8
8W7WVKegLXS3NglsZOBJkTDYUqi62/0SWCvwnOI4gA7gW9Tpu4xBJhPnuQBPynPrKBjaegBowCQl
C22z+BTDOGMfpUoYkCx9d10CuwJ4RgG2D1E70/boMlHChQNS7jUsceqdwgxsJK07ZVn66hc60iZ9
wpNP3t35AU2J644unkMLiAGagBU8hE7y4JfnhCVtpesZ3eqXeICEy3v8lA0oYWnEExmKk7zauJFF
wsXXZwRkVN5q2uTnjj/xEje8Cqt+aJNb/ITjsZWl9OKQEf4qPWlCV/0CofJHg8zd5eOqcfOMVuJM
0U285JE4+PHsjmd51zDxvfNPXO8mHljqq1/NI+niV/mOn3tNj66rAmXvNX77nDS5o5e8ck+axMk9
+eeu/NK7r4fb9sCTEM0MzLMOWhJgAK6z2esh/NXQiDJghmyW06gA0O42twRmAc/NXaqNxf1GBp4b
S1Lbj5utBDxTe5aUG8vMgnOUCcsBpxwF0ASn+ItYfadodL+tJYFZwJMOZbnhSh2gEWWW3kLxjTK8
2e7KYSKHMWNXl8V3GyAhX5eJI3d5uy8qS/GAp/C8aLrdXT/40s4AO4YiE2JOALYX0pLYyGN389Xm
BxxWXjy3cTbLuzZhHKjtaqXf+FT8DjynpNL4ZcmbWeE97SxjoAhMzWovypuZLUsjLA940pOeNNKy
pGTKsbpYguD0L43QUgoza9JammLg4DROSo0wFleWxTqD3tK2n8OyCMsg0LJxfyVWgNAzYcAiZEO7
fG0MN9vkQ6kOL8oxa8+SpQj2eKChDFnK4jAA6RwyUJ2lOpZjcNmbQpbKY3/ALEUtnadlPvKShhxZ
NVo3C3haaoQng0Uc2fEz26pTM/Fgo7w8TJxYyiHvKadeLWOytEN8S25S3qm8pmjwM6uIB6fecZbL
hAfL+3Q2cZbhRAbCkl/C610b8z9nqWM0pVfOec6yGntc0s4dOtCuWqjAM3KzzyNyU8ez5Ka8+NJe
LMGyRN+SfDOyrcML2VDO0JOvtiofS6vIrC2Pti1NO4kknnZMbtJrQ5YITX3DQAUaePINmLgSnyx9
rykbuWiHwizFUS4D5kqdOtZHkblvwXPbtuVpEs+V/Kfy0X7wTnbV+bZZ7LRr5bcU3TevHbfON4JG
lqVbJWCJ2yJ7erci8LSUyvgBUC7nWBXEZSXVv3fXJVCBp+/NuyWIN7jBDcbVYSuVkL5M32Os2wqX
/mUrlGOjloF86Vvt1eW+67+fefr8Sr/7DjwXkJhN5gZgCsyedtav48U6eyBjJY4SFustGtaJmzXy
7AL+WkUw+VFKrUW3v8Ba8BxqZJO/TkCYdf81zP6jlp6BBmiWH+XHPgFXZtYtGWkV8FlldOgKOVhW
jIZ17ZajoW1WrCqsWa5mn0R1+AM4IwP7DiicaFrmqM6FAdzVCbd0F+i19Nmme2VPOczIUdyqA+Kz
D9eSHPQjf+mAkep0/vKuezyFAw38a0dgxo+fGVfAwbNyhL53IKx18nCanHCXMuDNMwU9tGpeLY28
6/yl08aASjLSxtQRf3fAq4bZCyGMcmumuHUAFsVGHPICaMKf5cZTIM8yI2BQGhc5BERot/bVxAV4
BnThWdzs05EewGsdGtq7cHWq3YVPMiSL6hzAIK4TAH0zkU3KIqxdUqt98wfe4nwb5Mcfn9oCmWQJ
pTqu3xxQK67vWBt1SSd//ibTANtZYcl3uTsl1IQFmuHNTHTec6Jh6ISvWdsBlDPfsj02cb6h1I1l
q8qujclHPdS40mi3wsgJ0M33abn6ci5tZtYkUk2fPm25VTF7aqlteLVnjjx8B/Oc+jQRJa5JiO66
BEggwNOhPL6PP/3TPx322muv4VrXutY49pjU7leXQW8DvQ3MawMMHde4xjV20pM2ci+71+5kjlUj
ynGr1OxOPpIXpboCBRYKisFyvFHkABiKBEtErE/8bRgHHIVRwKsL8ASuWChj4QQgIhfghjUJbxwA
QZFFjyWxuliPWXuq9YmCCBRKs5zyFnoUeMp/e+onwGnj+CLA0wZ8eQILOQYdfYAM4AjAngKeZEKR
tPyDHDlKKkCEZpsGkFN3wE6sSdKx3qAF9FarzWqAJzpkW61fLEcBJlXmeACe8aptpA3hSRphUdRX
AjyBGpao8GDCwyEB8lFGbTZ5saSYNBDWtj31Kn+AAuCIIyOWRfkAHhVoeY7CDHzW5V/omQxRP5Fz
gCe5AUMUcy4ySP2zFMXhGdgBsCtfvo1MYlhRUF2Ap/IAPQEz8mGNU37fU/iSdgp4amvisvpWq75v
j6UdT2jGBeAB/U74i6ySJ360fXvZE8Z6KA9tpuYRmlN334o0lnBWmfj+yVyY9h+nz+GnrU45k2rC
AcY4bSYAGVhOOfHNsotf36OlTnEBnsovLUsn2acfS7ype4Any7M85l36Rvwu13ftaeCZ/q7KtS27
71bfqjzaT9pFG6+/bz8JAJ7Xuc51hutf//oj4AQ6V3td6UpXGq561asOV7nKVUYa3ldLayOkw7/r
yle+8limvO+qu3zQJr+axyz/Gqc+J757nmv4Rntuy9u+72l+I8P2jq+N0E5XwgPZKkfunleSfrm4
7QT9Ru5RdyvwjEJFmd0ojiJULZcUBJfTLwHAKLWVX7MP4rAaTS2bQpPiS9GuVqQAz6mlvdlv2gIG
+QZg5hALfpRAii4eqoIdPik4QAElcTmFl9KpPNmrFBq5t/SnLJ7yY3ECOtrlgKETa3cLIoEeIKrK
KmlY6fDWWsoouxX4Jb57rFjVir0a4AmQRCGv9AOIAJc44BKfgEErL3GAGXsoxFkJ8JyqX5MA6FBo
A7rDh2W2wii51Vm+Ss4BsDXMM6AlnXLEBdD4K4ipMrFCZ4JEmgBP1ropucWK1y7RBoKmFHK0tV9t
o7oAT9/nlAv4rlbfKeCZ76pdfhuabZkDPFv+xTc5QH6WLbfO5ICwAPE2vL5b8SCutjIF6LSdWN71
MxxZm+zy7U31V5F7PUAtffGsslsej4/6rQZ4OiHS97QSF+CJ5qLXRgCerNj6z1z6e2W3esP3pCxV
rlUm2oLJPOOAyZ2pb6LG78/bSwKxePr7EqthbnSjG42K6LWvfe3xu9PW+tVl0NtAbwPz2gA8cs1r
XrNbPKeGDwqMQdpMeRSmqXh7yo+SSpmgtEahwC9wR9GtLntDsy+xhuWZRUL6qrgFeFpa07qcokjh
a91UOpZZ9FleZjlAVZwpRblNQ3FVbgqSRj7PTQHPgBRK9ixHXq1MxJUvi+CUS16U5ymnLckbGAtQ
sCdWPlWpXg3wnLUcPIDFMfFxaRO1vhOWO8sIvlYCPKesWMAjOgB267L8r6YD7MQ3wTLLAfHqoS4h
DsC29HgRF+A5CzAE3E7Ro5TbA6wuK2Bk1WJ9qy7A08nZUy58ZyWCOFPAM/wC1rMmSyr9AM9YmGtY
VkBMzTrOS1dpeI6MZslQnExS1eXE6SPaNqutAT4ssQH3AD2Z+uZngSHfkokkgDouwHOehS9x23uA
p8kSFvt5V4D1PBmgvzssnr6beZf/gptyJtGMdeRMMeiuS6CVQIBn/kfSihLfxb777ruqPZ4t/f7e
JdAlsPUl0Pd4zqjjAA4grlpUZkTf496WBFNqzz///CWloyrLWf45D0DHUldPzI1yOAU889+YiwLP
KLP2cVryNnVlyZq9iss5II2SRMlyByAd+uMgpFY5DRisezwBVmlbxbfmm3bQgrN5wBMIQbcFniw7
AXJRDFnGgEKHw/DbVcAzS+wq8LRMVZ4VNNWyew6/awWesYpNAc/sDa3A0x4AvJlVn2on8WOdqX8z
EcW+HrzUlqm+B8jNAgwB7PVbkp5lKPt1U5e+PRZlKw+0x+qWA56x5i0HPIGrun9VXr5Xy2OnrI35
5qaAp/9Ww/tagWfaiO9ulmMhkVfdr4xfcrJsOQBT+siq1klAuMme1P3UHVjVZ8etB/CcssiGfu4b
aY+nvbVWC9TLd6SPmfet22+rjsTrrktgSgIVeNZwS+oXWR1R0/TnLoEuge0pgQ48m3oHWMzKG4Ap
Rfb9bSZneRUFHv9m6uOyl29qaWjiZOllBWfrCTyd+okvs+oA17xr1pLE8Jo7pVlcZQUG0XdZclrB
xxTwTNkc+DLLrRfw1K5SBw5xAsTsRbMfDkDNwTS7E3hSTMlqCnhEHgEVuxt4Ru6A5bx2Iqy281ip
2omHlKe9rwZ4akvAjSW19kZavuu7cjItXljrdhXwxL+ymWQCKuvhRJ7bZbO7A3hmAkObnuVYhrU1
oLk6+135Zwm4spk8IMPa5rI6gf9y7UF4lnNvR+A5tS2iynzWcyaHtJlFv59ZtLr/1pTALOC5NUvb
S9Ul0CWwKyTQgWeRKmtClpsCR/VwmhJtwz+qVMqcfU1xDhTiRwGc5SjR4tS/jQk4Ww+LZ6w6FVzN
4mU1/qy+LD8BeCyrcVPAM3vC6qEniZ97ANBaLZ5RnFvFO/k49ZPsq2zWc6ntlMUzSy3xNsvtKeDp
sBjyqCe6zuKx+qfu51n2a/zVAM/0EVPfhCWhgM+uBJ6Vf5ZC37uVAsCwq+4j3h3AM3nMOqEWvyzt
6rNOavFPX5U99Jn8svS4usTTHlfiOvBcibSG8aA61v1qgV4ZhR57K0ugA8+tXLu9bF0Cu0cCxvO+
x/N/D77JzD2rCaCyER3r1HJW2JwIqRxxAZBTBwEljr8joRxWIJJ0U0r2SpfaZikvkLUrHeXfxIEl
fHFTwJOCrryWps1StCznE2etwDMAdpZ1Vb3IZ3cCT2WS5zxwl2+iWp8i0/aubaJXl8wmTqwpiy61
ZQ1m7bR3LvtgQ2vePQDb/uNF3GqAZ/5iZpaleFcutZ1XpqzUMIEUF1C4K5faZgLHQVyzXA4LMqHQ
uhysRJ7ht530Y4GztBmwtr9sUdeB56KS6vG6BJaXQAeey8uox+gS6BKYL4EOPIdhtALaG0RpdjBF
tRjMEx+rCpC3u5YlWT6WpXwO6plSyIGunFZZ9+pQwLIEsP7FRMpnmaDyO5mygrD1BJ74BSQojxXc
hgd3J5wuKn9gbmpfm4OGnNBryV7cFPAUFmA1tbTXgTj5j8C1Ak+AknzbfZ/hLwf97E7gSc6xktlD
17rss8T37gaeeIkV2MFLU98YC3f7dz3AiyXXlp1OgS2TNvXk4NUAT3sqyaTul43sfKMmfHaVxVOf
w6o/5Rwag696gFGA3JQs1muPpz7HsmNtqa0PfJJ56mTqtOr8tYtDopxy65Tlqfq2F1v5LKOvfVRk
oX9p9+N34BnpLHa3T68F/Yul7LG2gwQ68NwOtdzL2CWwayWw7YGnQRYgo9BQjuxDZLGZuuofaQM3
2V8FAO0ul4M38AvEWRbLKocHz9njxorXWgYCJCiJgJYDPyhqFGkKHzm0AGQ9gScZAZzyoaTai2Tp
L2Vavv77UNgif+4egEEGLK8Ua0omUJ2/mqnWxVnA8yc/+cnS/5GyvJAjCw7rDV6yRHmtwJOi7D88
tTEypaxzwJ9TQeWlTncn8JR/LLrqw1JooIUMlNuS0XPOOWfka08AT3snWQ/JxXdp/6K24oAUIERb
N2GU/XyjQIdhtE5Lw+oNtAKa2p12pZ2bXMmkzWqAp3256JuUuOKKK5ZAEn9tTx67CngCZ/IGKJVJ
+/Efo9qs71qflLZFHrsDeMrHagZtW7ktcY/MTaho22RS23bqyl1daGvK5aoW2xoPaM2kmm/VZJn2
4Nv3TTnxlpVcu4nrwDOSWP5ObtlrPmWZXp5Cj7HVJdCB51av4V6+LoFdL4FtDzwz2x6lZ969Wqsc
XEPRE5/SszsdsAakUfJafil5QHP9w/vKG4XCKaBtOopcCzqlW2/giaZ8okBWPlgp7Z+bdwBSLYv/
ovO3EpWGZ0quPW8VkMwCnug5jbOeFIoGQGOvExDmfa3AUz5ALuUYPUDPHlx1qC4p6/yrcr6r93hG
lv7CJgAPDy4nBFPos6x0TwBP/MnXfr8A8/AH5AB5LORTzncdWSeNu32t9WTP1QBP+ZFZvj/9gAsQ
Bpp25VJbVl5gDqiu5fIsX+C3ut0FPOWp7bJWtnw5UXve/k9ps9RcueqhYLUsnk34mWBL31vz0qe0
hyt14NlKcPY7WeU7M5HRXZdAK4EOPFuJzH83CWhCx7fVr60rAxPA9NZMaM9vFT102wNPSo5Z80Wu
OpOu6ViK6TTGqWVfu6NpWWbK0sCSaQ8mxa9aO2bxYBkb8Ed5pmBMLb1NWnvtyGaK7mrDQpv8WNjw
DkQu91+cSdfeAQlAg9KPDr5ap0NQjrYOazxWVJYawD6gNRZmsqoOrdainPB5eZG9PPBqyWRAtrpE
s8oAD/wMWNV551/bXdrx1NJjaafoV5poKTfe6rJM/9FGuZ+q/5re8yx+hUUmbVmWS5c8cmosuQGL
i/zFRWSddl4BZ+guKrcpMEQmJifwBPCkzeBN/VQ371sRT/mkqQMXCx+/tJFKTzvR9/h2lM/EytTy
1LSV8FZprDas0mif8QD84km/NGtioE2nPMpqAF/EqQ99H9n79medqKtdozvV7pbLJ/VYv7NZaUwI
yGfW95d0oVnrOWGz7vl2lmvzaWN4Wa0zFlgaPdWWVkuzp9s6EujAc2V16Vv0/fqe9MHu3vUp9RKW
cHd9f41bn4WHBn90kj7Plba+sr4njrShJT80Q8c9eYb/tuToJF3oh6b0/PKePNFALzSNoUkbPzQT
P3IwPsQvtMWPX2gkTL78khd/V5yw5OM5fIojTeikfMJDM2FJJ07See5ueQlse+C5vIh6jK0sAZ3J
PGUxB5/MUmw3u2yUnQymHEWXZdFJsd11CXQJdAl0CWxvCXTgubL6BzxtabIvHSgxqePsggBS4CXg
C7gCYAJi7Ld2Tof3AC/biqy+8g4gAZWJj5Zn91zy9Cy+cb6CNXFDmyFCXuIHeOU5ebQlR9dkl9Va
JkdD29YhwEJ69N1TNpPatnmhGT+TjeTj/BKXVTPe0ZQ+/LgnXXjil3z5cYnvPWEpa8rkjn9xAii9
Rx7Ca1x0vKc84npPOWvcVk79fWcJdOC5s0y6zzaSgKW0OjsWo+p0JDpQ1j4HEG1Fp8P19xSWbrbg
G+gM6LYPtLsugS6BLoEuge0tgQ48V1b/AKZVU9e97nXHFSrnn3/+cMtb3nLcCgVwBswAMhXceLda
5IwzzlgCUkCPlTXOFQiokiYgNGAoYMt79atxPaOBpmervaw+8xw/d1dotCXnbyXJCSecMG5fERdN
W6ayAghv4U+4cwlsMxIvZfdspZUVMocddti4vcnZK8JrWu/4c0+YcHpMjZcypPze44cHcUMjZcs9
/rnjTZh0SRt66lZZ6Y78kqaVU3/fWQIdeO4sk+6zjSTggJLsa2LZs2/Qfs/sIbNP0BK6reh0pPlv
VTKwR84eSPtmWTqBbgdP6Xi76xLoEugS6BLY3hLowHNl9Q+cOJTyoIMOGs9LOP7444cjjjhi1CmE
+f9i46xzOQAiYJRV89RTTx3OO++84bjjjhsBDWDjwD/nCABoxm5+QOi55547nHbaaeOBiPwqUPLM
zxYjf5dn5RaAZJ+8bVaeWSD9VZWzJirAogcBiQ6sayemSUFcVslTTjllBMnaBiAKLH/3u98dwSyg
7d0hf0Ccvf7Kb1IbbdtFkic9Cy1WUTyTx+WXXz7+97PzFJRffuiYMKejOChQ2ZSDLuMcFgfMORwy
wN5frCnfWWedNW4DkZ8T4J1fQc+j76AhT2eaOGfABQyjoZ7IQv4OX7PFA9g1YX/Tm950BJ+svtLj
o7vlJdCB5/Iy6jG2uAR0eBdddNF4oA7rp87SUg97MHVyW9npQHWwOmr7OYFvd4czWX4jvLsugS6B
LoEugS6BDjxX1gaAFhZP/zJw9NFHj/fTTz99PKMA4APKPvjBDw6HHnroeF6Av6MCUu3d95/XngPM
/AOBgyHf+MY3jiCHv/j2uPsPZ6AWUDJmJ41ngIgeQ6/xTwJWMwF40gKm9uQDok5pF1da8QFm9S0u
HluHtnjKY/nvfvvttwSaHaQI2KEJSAObrJiA561udavh3e9+96hzALXAmjzpYbe97W1H4JkyKOtf
/uVfjjKkj+HP8l4yDW/AKX/gGxAFqI899tjx7BLLlQ855JCRP/ILSAX4AV9/iaZ8lhk7A0Id4Vfd
8McTsAtgPupRjxqBcMA7vUl8ZSdDZejAs20l0+8deE7Lpft2CXQJdAl0CXQJdAl0CXQJ/K8EOvBc
WVMAPC+99NLRqgYckt+ZZ545OLHeyfmHH374aMU84IADlqyQJ5100gikgBmWT4AGsAISWUaBMX7e
AU2TxKyegJ/luQkT7jkX6yigC6ixIAZkigfUsabyc6ELwPkbM+DKRHzrxAO0pAPKgEgT9wCwgyNP
PPHE4eSTTx7/9g+ABl6BP/86IB3ZAIji4oFMgNi8s3iyJFqFxilHgDTeWD0BWpZO9OQPSOKLNRTI
BYzJG4hEC015kSMQjiZLL1BuSxFrqTjo4dnkOz6VCQgVnxMHAFYWS20ja+m6W14CHXguL6Meo0ug
S6BLoEugS6BLqzxl+QAAIABJREFUoEtgW0ugA8+VVT/QYvmmbSxAiWWkltayxFld5KAhJ0kDL5ap
+rs7y2uBJ0AR8ASevAM9ABMABegAh+j6Gy1ADNADVoUBRknj3SV/VkH7Ei19jZ+4AZ6e+atnoBBo
ftzjHjf+H3Rb8qTHA5AmLotl/kuZRdGSVqflsyayNioTUGjpLssh4ChMWVhiAU+ySZmBQ5bflIUM
LHU98sgjR0ujJbuW1/IHPG2dwhdgDXhK5/Ai5ctyZOEAtf/1Fk6m/j4OMBZHfKDSZACrML4BV39R
GODprm4BT+VDJ/Jo5dTfd5ZAB547y6T7dAl0CXQJdAl0CXQJdAl0CRQJdOBZhLHAI3Biyap9hMCK
Q3wATyAGIAXUWNqAHsALAAX4AEOnu1qWCtS4pK+WOiDRGRTAF6vg3nvvPW6bES8XMJS0wB3AdYtb
3GJc9ipMPOH+FswyVc/8veMDyLUM2P7Q1iWtcyACIO2BfNCDHjTSsXxXWe1JdSmfw4X23XffEfTh
W1x8AcVkA+ABpAHOrLvPf/7zR3p4A0iBcxZIvDmM6IILLhh5vte97jXyLR7g6YAjdC3L9Td7wrOP
FdA85phjRrDscCR1pE5Yd9GVp3MvgFDAk+WWxZNsWF3d0Wa1FtffelmSy6+75SXQgefyMuoxugS6
BLoEugS6BLoEugS2tQQ68FxZ9QOerJA5MRY4seSWxQ+4uuyyy8ZlnoAdayhgxaIHqLL2OVk/1j9A
DyD0f+3AFZBDgXfoDYDmEB3LVMXLktQApQBKS3HFQ1M8NMRldQWAxcOXcIfn2AsJILf/Y04KaItv
ryNw591+UzwGTNor6cwIll0WXdZMfmjbA+odDReAd/HFFy8BODLy9zP+txuPkYO4wC7A6V8JWHuV
5ZJLLhnsLVUmz2TBcgkYWkprHycaruc85zkjsGfNfetb3zr64Z+VlDxzEJO81Jk9qfjBR67E968H
yoT/DjwX+z468FxMTj1Wl0CXQJdAl0CXQJdAl8C2lcAs4EnJZzHqbkcJAJ7ACGAUoJY7AONZmAvI
qX6e+cdP3JqWvzShnbDQbNMFZCaduyv5J31o1rAdS/U/b+FZuuRZeUl+udew5BW/3PnLN/Tqe56n
4kojH3HCf+K5u/hz4gHUF1544QiyEy/lrXlLU9/DW42LHhruru6Wl0AHnsvLqMfoEugS6BLoEugS
6BLoEtjWEqjAk/JtWaSDZywJtZyyux0lwLpmueYvfvGLfm0gGVjy6y9f1IslwOtRPyy6HXju2P5n
vXXgOUsy3b9LoEugS6BLoEugS6BLoEtglECAJ6Xdcsdb3vKWw1577TVc+9rXHvfJsfBlSSLQ5d1l
6SWXd3dLOlmKqh/rUk1nqWSbjnLPElXTAcHyiN9q003xKa82PzzJI/lJh4e8u0uD1+rXplPWKgOy
897KAG1hoSWcrPLuLh2Zxk98rqYT3qbzvki6yqc8Fq2rNp2ytOXDZ/h2b+XCry0f+bdymdWm2rax
SDr51fpDQ5mrPIXXOPhEu+Y3K13bphZJ17YpvEhX22LaRuVztelaGczKT7ya33J1ZXn2Na95zXFf
79hIN8HPXpuAx85il0CXQJdAl0CXQJdAl8CWkQDgeZ3rXGf48z//8xFwAp2uq1zlKsN1r3vd4QY3
uMH4tx5OA3Vqq3eXg1q4m93sZkt+ljs6VCdx3CmkD3zgA5f8jjrqqDFdjeMUU3v4qt8P//6H46mm
8fOXJBT+vLv7r2r7+aqfPYZ4i5+/3mABy7u7vYEOyql+9v05cTZ+DtWxvzDv7u94x9+M4PyGN7zh
8Bd/8RfjRSF3am3i+SsS/wOZ93322WfcD+r/OuNHBizLrMrxE24/Yt7d7cO0bzJ+aHEHHnjgkp+/
PbEHM3HcvfOPn/ic9PFDF/28u8u/8umgH+7GN77xUjyHITm4p6YzaaHc8SMPcsm7u79l8V+mDkyK
v32y9mTm3UFA9qYefPDBS37CydN/fyaeg4XUa96d/muvq3TqRf1oi07l9X+dief/PO0FzbsTb/29
Sq0H+0e1x9SvuG1bdLqvv5FxSm5oOVHXvlDp+MlXWWpbdPqw/bz+Jifp7OXVFvHMTx05Fbi2xXvf
+97j38o4RCrptEV/O5P3/ffff9wD65Cm+Dnoyem/N7/5zZf81J06TJzb3OY2475cdR2/8847b1zt
sPfef2gv6q62xRw+5T9Vpbve9a43XPnKV+7Ac/xi+k+XQJdAl0CXQJdAl0CXQJfAThKIxdNhKxRx
IBTwZL2gpAMnDoNh/aCke3c5JIZzEEz8/A2FfaF5d2cxAj7j538Zuby7W6bnBNTqB2RS7uP3xS9+
cbRO5d2dgu4An+rHQub00/jl4J68u9u/ClRWP0CJLOIHhLE05d0dqAUmqh/rlMOD4mfJZ5WBw3ks
+/zmN7+5FIcM8AkUJJ1w4Dfv7gCzg4zihxZX033nO98ZD/lJHHdLRPnHT3xO+vihi37e3eVf+QRg
OUuuEw8Icxps3t1Z55Q7fuRBLnl3N3EhP2Az/uQCtOadXNS7U27jJ1x+tZ059Ee9Jg4gigd/vRI/
QNT/iNZ03vGfOOpbu67ptEVX4ri3bVH7IqtaD9qiyYTISr7S+U5CS5vCu+8pfm1bVEfaXW2LZKtO
azpt0YnJoSNMm6pt0XdnWXit91YGyi6dug4t33lbV21bFB+fqSsTQFe/+tU78By/mP7TJdAl0CXQ
JdAl0CXQJdAlsJMEAjyBAEr45ZdfPv61BQuGv5TorkugS6BLYDkJAOt9qe1yUurh6yYBszGO3q6X
JQ5mRKyVr86sSY2XZ0doC5vlrMM3w2U5g4MPXvayl42zTfw3izOrpLxmuHa3M8tm5mtPOzPBjn7f
6M4sZdpm7pbpmE20t6I6s7GJM3W3TKi6zC6+6lWvGo+kf/3rXz9aEswQx8lnilb1y+x30myku++y
8ppnx/ubGW7dVHnJ2zfPEjHLadOW6L3oRS8al0dZtsRyEkeRtqxuM/UT4b3fuwR2hwQq8Ex+xm1L
61gwu+sS6BLoElhOAh14LiehHr6uEsifCt/97ncfcvmzX3807A9+LfmI88xfeOLe9a53Hf1uf/vb
j3soEjd3y238qa909oo8/vGPH84999zx3Vp0ywk2g7M0QxksTdjdzr4NezD2pAOs/Cn2s571rD3J
xkJ5m+BQV2mj7mnT9ltUhczES9uma7qzzz57KU8g9Zxzzhnj2y/lv93OOuus8V0dWTrDAVKVhm/D
Vf2e8pSnLNHdaA/AIpnY3xKe7W+5wx3uMPqbPKoA3p6TVt53vvOdRz/ffDtZI606stfG5X/l/Hn5
Pe5xj/EdqLcMyHXPe95zAGK76xLoEthZAlPAc+dY3adLoEugS2C2BDrwnC2bHrILJAB4UoqrAzIA
Qkr1fe5znyWrRYBn9hwkDWsnUEL5vOKKK+I9ro+nWFLWAdBqFUKLsg4QWLe+0d2eBJ6sQhdddNEe
FZG9Guq3TkTsUYbmZA7UAD7VaXvaICADDMWKFuBpn8ly7rnPfe4Ixux3iQPSTEaYXGFlmHL+ANsk
y2ZxAZ6sjdWxQPoTde2AFTQO8FT+6siXJdT3/chHPnIpCO30FSyc1ZLPmuzQBf2RVRGcd+BXWHdd
Al0CO0qgA88d5dHfugS6BFYugQ48Vy6zTZWComXzr83hlLA97aaAZ3iytI6SaVM1Nwt4ClOuqjCy
akTJt1R0ytmXYuCsgLSNh07kZKkn2UkXZ1kRvhwaMIuO9OQtrU3s85w8bNBv6bXAM/Hq0sCWLkAu
Txa2AJ0aR9nin3Zhg3vr8C9udcpq2SNeWeJaV+UW2jVeZDKLt5YeMGcCYcopJz7wM6sOptKRKflk
+SZZ4HslNKboTgHPxAOYtGn8cisBniyADuyYckDZLLcW4OnwDby6T7laz9r2vPaY9L5HcndAB9fK
XdsgoxZ4Ju4DHvCA8YTM0JsCnglzUiBasXpalu/94osvTpSd7g4i0WY535n4Dl/orkugS2BHCXTg
uaM8+luXQJfAyiXQgefKZbYpUlAIKa1ZrkaZAsxy8tieKsQ84GlQw2csnPOAJ7Bg2e0FF1wwFkUa
aZ0OthZnienrXve68ehpwBZNAMAJai4WWX4uyxcpzdU5YAENaVhf8HjhhRcuAb7EBcpYYpIHeuef
f/6ooIsT4GnPn3pMnu6O8A6AFJeSbUlqpcV6bM9bdXixZxJQqu3iaU972g4WHvk96UlPWkrqxLcH
P/jB47JEbUha4VnqKSLeLflUv6zO+BSPPIAtR3WnDOI6wW2WUzb5ABHVAQdAh3KySrmjxTo6z6Fn
b6Q6CQ/4dyqb91qOeXRmhc0DnqyT8mCN41YCPMmA3JxQtxK3GuBpILD8NPJxt7RX3Vf3hCc8Ydw3
fdlll411YBnsLOfbeM1rXrOD3H0zDiRBP+B2HvBEW573u9/9lrKZBzz9PQPasRJrH5Y71+9lidCM
B8ua5dFdl0CXwI4S6MBzR3n0ty6BLoGVS6ADz5XLbFOkoPA985nPHK1fQJqZfEqfJYHzrCW7unDz
gCcFntIYi9Q84BkF3tI4jqIIWMwDNIuUDWgkI0tNyYlFkB8QAKywTNoLBsjgFR9xQBYwBCyyjFJ2
gb8WRKELyAEVrC3iOu6aEh8LV4Cnfa/vf//7R16ke/WrX71Tvv6fSbpYTS0ltrcVOMNrHODpUjYg
jqze+c53jvTq4TMt8LRH1v9cxXorrX1xrElxFHzyB9oBJVZJS5vl57+1gEPLFx3DT241v9DI3RHm
4pBNnHJYPmoZZYCifPBhPyD5zXKO7kbPBIA05Ij37AUOvVnpl/OfBzyBcXnHMph2a6IEH+1V229k
ZS+i79khRtrKcm6lwBNv8lCHLJOsmr49slZ/1SoOBIoLlFJCAx6neLK0Vdm1N1ZPZfVt+J74J+08
4KmtaVfaX9ws4KmfM4kivr9lUC75WK67Eucb8+2sBKyuhH6P2yWwWSXQgedmrbnOd5fAxpFAB54b
py7WlROKeqs4UbApYgaPPeUATzywBOUCQqKgswLGBXhKQ1F3iUuRpRgCdFkGC2hZkrdWRykGZqqT
H2W2gjjPypEj5CnPrIytlQ4dVmbpA9wASQC1KvTiqS9KPxfgWcEdf+BNvmjEASvtctHIrh6mBES8
5S1vSbLxLk+yrP4VeKKL15qfhPxrnkBLayWK9QkIrc6fbQO8sxyZKmPAmnj8WFJT30mLB39+bSJg
yqkXQOmFL3zhTsH+k0o+6wE88Zb27K6dskyjb69mXIAn/6mr7k9UNhb8HDAkvkkRExTzeF4p8AQQ
tY12ibo2qG0AYnGAJ3m3fUvCcweQ0czeyfi7+282ZWmBJ6t9ZKhutDkTNNpfneDRznz76RPcWa+z
lzNtwXJ3+bDOrsTFIpvluitJ2+N2CWxlCWxW4Olb1h/0q8tgK7aBVpfc6H1QB54bvYZWyR8A8773
vW946lOfOloBKHEsiRSxLPtbJek1JQvwxEe9gEYArx7qEfBU43m2hJOSGssohlgjLYNdqwM8Wciq
Y3kClqqjeOMlwDOAwoEyrDT1ArzwTJnmgGQK/DwX4EkRbx1a6jaOzOwlZNFm8WFVspcSf/iJAwTq
IS3xJ/sKmCvwFMc74AxEKMPU0k/AswUZWcpaATt6QMO8PXdOFcU7GcQpG7lVueZZfTnAZ8qlDVXr
aeI5mEo+80Bc4s67x1KPVr1YtJWzWinTTsg7IKvea33VPA0svmHtHBADdPOn7DWe55UCT7J7wQte
0JIZ31nTLVWN027nLa9NPBMeZJH92vF3x7ewFnhW2XnW5pS3gk7pAc82rnffrgmNgOJYzld6Sq36
QI+C0l2XQJfAHySwWYEnnUe/kAnTld6lTXqTmfQrNKr/Smlup/iRE9lFjlPlT7x5cabSzfNDixPH
s7rDR94XzUu8qWte3rs6LOXZ01vo/tBDLPbUgedictp0sShngAaAQukGnvyNAIVqIwDPLDH88pe/
PPL0tre9bScZBzQAMInvHqtgTZClr2u1UqwWeMZ6Zl8nkDp1xXppCSoL7zw3D3gCHQGeOjagjGXK
4UzqGtgBBNV1BTKzgCfgMQ94Ak4U+kc84hEj6EGXdakC0PUEnln+W5edJu8pufJjbZ5yATn1L00S
bz2BJ5CUNur7IqMpq26A5yKn2obP9q6O5acdTbmVAk9tp9Z/pem7lFfcosATj2QwBepTJy3wNCkV
GVpaq73aItA6fZvvNHHdp6z+VhiwENtysBIX3utqgZWk73G7BLaqBDYr8HQ+gxU4Vp/oP2wJCeDI
HRjJFcBA1zCumjwWZiuCvskEr/4h8Y2FJkKNlQEnaAivtDwHLCTf1q+Ge0Yjd88OPnO2hRU1OdMi
NLS75Je7tKEZfjLBnzjuCctz2rB36XNPHmg4MC4gPOHokIOVI/SY+FutZJI4fTV/adE2FtuWJJ1z
Begtla64reNnHCULK5qspAmftmCpZ6vX6IR4EsZQQHdxqUt+8gwv7skracRpL+Ol8UvcyC0yxaf4
8U+c0HvXu941jmvi0BGc9+HsDeVw4dtkv7HTxG/aLH96H3om+cWxfUi70743k+vAczPV1oK8so5Q
+nyI1dkDyH9PA08Wm+p8RKx4LBTVBXhaSrecizXXssG1uNUCzwAKPC/nKO+sd/PcosAzls22Th2u
oq7XA3hWPu2dMxEA6Om849YTeOpc8T5l8Ux+i94jnynL8XoCTwCnOgOhCYIWeKWdrAV4ysdghP6U
WynwtJx1lhXTBIlvIm5R4JlvF4hr3SzgWU+1NRibxKHgRREIHQNw+3cqCWvvBm59yxSAbePmPZNI
7cFKCe/3LoHtKoHNCjz1/1ZuPPnJTx6VfWMYxR+4ARg8uwccAEf8TF6ZeHNGAfB55plnjiDHKgqg
K+kAKiBH+tDJHbCRj5U/wj3zyzMarsRLuPfWT5izDoy3xoCDDjpo3MrDHz3xTcR5D+BB2zt/cRIv
/HkXB3/h0T35t/GlQ8+KEJPW3sUNbe8mvx3S5hltYQCSLT1kKr2wpLFqCJDmr9898sgjB+AkvCtL
Ow54p4MYC1784hcPhx122PCxj31spHvqqaeOq+KMXerMeEKPPOqoo0aQZ/uItix/dR0+3PHlwov8
IwfP4ceELOApPj938V3xS9yEhc7xxx8/nhzP/4gjjhjlCHQzTBx44IHjeQ6ejVkmFpzvQB7anLFT
uQ844IDhpS996agDWFm1iI68kfqsDjw3Um2sEy8BHe2MvY5zIwJPYMagoKPy4cZFeV30o9IJAbVT
IANNH7GlezqhWW61wFMnAoxRdKecTijOUlj10Fpn0dDhcYsCzyjxrUUP7fUCngah1hlYHHwUt57A
M0t0YxGTR/Z91uXVybvKNn65C1OnUwAmNFtwmLSL3qcOFzIDbkmxPZuVv0WBp0HKQFxlEH7QY+2c
tbx4pcCTMsBqTDGoThlYHbNnUtiiwBOP2geQ2CoM9lxqmymbdu+9Ak955e+VtIfqVgI8DXAUR+2z
TmSEHqXDioG6HDd7k8Nf4vZ7l8B2l8BmBp624vjvY31rQIJx0+Savvbss88eAaY+wZigf7Wf/cQT
TxytYwDRoYceOoahEXDi76dOOeWU4eijjx5XlQXgWf5oFYe+Wh+Drkv/50A8KzH0sXgxXjuwTX+r
P+ZnWwwLGH+T8y9/+ctHYPjwhz98tHTJX7/NuocfugCeHQaIVzSAPJYx4IxuwgrJj8XXIYT4AZj1
/fzl6UwEfSze9OMsldLyB3blxc8Kuhvf+MajjLSLyNVZAfQw2yzwoH935gHA/MpXvnLMhx85sR6b
+MS37R4BvA6EU05lxAM67TjiHZ8mecUzzgNpaJsIZgV06OBtbnObsV4BNGMZPsUJXXfv4V9etrUA
sfxMOqhHvJlsUG51os5Cgy6h/ahXemvKja7Le65jjjlmNAigDVBqg55d2hG9PXSliR6sftBS7rRD
+sStbnWruYc1bsQ+qwPPjVgra+RJYwWC7IP0QXI6GMsDKHixjvHzFworPfVxLez5gFuLJ3o6abzl
lFp++eAWBZ4+zPwlhE5dOVlRWf10augDnuQzy60WeKJnlkoe9Y/qKa86duWOw+dDHvKQsbNVbh0w
azSeDTTcosBTHerslC/lQl8HjJe1WjwNPmTCCokuB7ibJKhLGNcTeMZ6XScQdPoGLgOo2cEMFuLg
JZvr0waq5TtAh3KhTen0DO72tpJRgKeBGC2DDqeDN5lhsJXfLDcFPMU12KJ/ySWXLCUN8FQ/Bqv2
koZTHgM90CSuejRAWZquDaMLIE25lQJPE1L6C/KVj/aIT8ubged6yNOiwBNfwBw+KXZmx32L6kUd
8g+wM5h6b4EnmRvktW88xq0EeEqjHyBHk1v2kWsDFDPfqzagP0qfKL76VO55dR5e+r1LYDtJYDMD
T98/6xdgpk81phg/9t57nxGQAJkmKPV/4jofwwTrTW960xF8GFtYTFkZ9b10K2OuvtoEI4Bpchtd
fYcxRlrjv0k0fsAYIETPsRIDENP/kasJaWlY7oA3/a9+S34BwMYqY62/l9IXs5DxMyaz8skLKMI/
IEPnA2b0dccdd9w4nhnTyQHfJv2tnDEmWp1yyCGHjOATLXqhMgJrxiLhxh9+LrJhQTSGAWFk4bLS
7ra3ve0oB/Hwgf6ll1468qJs4hkLTj/99BGIo2N8NuZKQx86/PDDdwB37Xcmrjqin9B1WQ+zfPak
k04a/RzMB4Qaw04++eQxHD9kLh98eFc37t49q0fjDvmgTdcRjncTofg1jqDD31gnjfahHfDHH1qJ
4+59v/32G8c7dejZuBge8B2DUeJbmWWM0v7wh2/pWDxN7hq3c35IK6ON+t6B50atmTXypfFq2BQo
yrROLEsYo2RR5nRswNrucmbapoCn/CmU+NHpcCsFntL4KJWzngRKqTWjpmPw4c9zZNbuN7U/1kxk
deigq9OtziyZGTxhyqKswIsPrTozhgCNwUdcl+W3OdBkUeCJpplOA41OSF0bBHXyaK4WeOpAOZ2n
QTNlsvwRXYNetRzL04xsdbFcGoirw6dBa5aTp/JoK9UZMAFscjVYkq14wIROmrM8RZi/cIlDz6Cu
bvEunU7bd+A9wDPtLftv1TFexallDd3cKQ/k0jr5UmQMfAZmLsATzakLAIwDhIEx33CNqy4oPuhP
OcBUO1iJM5NrVr7mg05kE1rqnYKwiMMfEE8xQFdbB+qylLUFnlP7TE1CqG+Df8q7UuCJV9+fOk/7
TTm1p0xapEwUB99md10CXQI7SmCzA0+WQ2M2AGjSllXMuEDxZw3VtxqbA+iAUOMFQCOONCbCgZzs
E+Xv2bhhzAjQ0HfTrbwHRJiA3nvvvceJ5zPOOGOc8JMeqGBt1M8BFfQAY6r9gPo/q9hOOOGE0d+k
tb4UIJUH2rZuALn0HmMWq5oxi9XQ+CQP/StdBHiSXt+qfOjr/8Xbd999R+AEEJIL2vaU3vrWtx7H
/OzD5G+8lBYY0jcru2f5GMfkKZ4w/qyPAC3dRhhZ26MoDvkZV9CIDPfff/9xSSqdLnRqa0TXRD1e
yYys5OMCfJ1dwBpq7FVmfqzTaLkSN3zXvOXJ0q19AO5klXJIq+7UiTTiCk99y0d+4qUs8kpcbcdk
tG/JJIQJ5fADeNIRanz5mChQV+FRG1LX6kxefY9nbRm75nmvXUN261HVSClclEfPUw741JluNaeT
oNiybGQ2bneVUd46InkDS/OccPGihM+LOy9Mx2XmLB3kvLirCVMmg5MBsV2SuRp6y6UxQFsaI9/W
mYXUWZugmGrXs9q0uOQdIGxABUDq/j8zowbFOGEGcoPLnnL4Ua9kX62Pu4If5dUe5wHtleYbuUeG
mZBY7ttYaT6LxNfXaTfaz1Q7Jl9tYrOdErhI2XucLoG1SmAzA09LbU0+Gytd+lUKu/7du0ljyyX1
C0Cd8VQfpT+g/FegYnI64Er/Zryyz1AcY5YxBqgCJNEWhz/rIUBkshj41RdJY6KLhY0lFGgEdE0e
AqPAHV4AIf0Wi63JVvtKA3JMorLCqR+08YsHNIAT+bsDasZPYJpumPLREU0KKhO+TFgLxzv+WN2U
xXJiE3X88Eg2nvXt5Cm+iXpAKe/8PBtbgDhASRrAE1jzbEIASBTXBZwCu5a5SivOlC5gqa79murj
tNNOG1fGKCuZ6cPRkpYsTOA6zAc9cVzJzzP69TJ5TdaWM4cOWp6Vj4zFV3bg10ojE+omCMg1tMWR
Lvkee+yxo+zkmaW2nsVRn4xG0sZPPiYKAM/wIV30H/E68Fxrz7Z8+g48l5dRj9ElsKklYKA1qFWL
7WoLZJYzy1dCw2BhGadZ5VlOh85iWZfKzorb/XeWgJlbg2Z1FABLxXbnKoua/3LPlEUKCiWguy6B
LoEdJbBZgadVFoAnqyQl3eUbd7dqxjNQCgwZGwAweyOBu+tf//ojUACGWEsBO9ZAKyjEBQYARv0G
+ZgkRE9aS0EDIAAQYxGLlxU46JjMBShYJq04Af5YLo1XQI+VS0AUwAl4mhRk6UKbZdbqHsArS0nt
xWSJBB7xZbks0MJKm6W2ABBZAMvkwVoIZBpr8WZZLqAJ2Oiv8YgeYA4UKx9/aYAo5QDy0JWnMlrW
asUOObj4h0fAk0wsd8ab7SXoAt9ooI0mcGwSIHTJrzrvwDCZAdPkbzWMvMhM3cpHHbmTpfLJTxlN
gPIXf8ppD3/1V381WmNTz+K6YgX3rF2gC/yqG+Bc3aCdKzJwJzMyEmY5cQA+WgGeZCCuOOqCnJSR
H16kqwYlZd1MTpmvec1r7vKJ9PWUSQee6ynNTqtLYINKwNIbyz3X6szAGijMjpphNVDbZ2jm2SA9
z+nc2wFvXvwe9gcJmJUnd8u7LL+y/8iyWwpClpT/Ifaef6IAWlLvAI7uugS6BHaWwGYFnvZyAofA
nKX0+iRn6axkAAAgAElEQVSKPgWYP3BjLDDJyN8qKdZC4w9LnBVJQBCwCXQCbIBVAAIrIJAJQAKN
AILlr4CqZzRdgAQQzLJqRY9VN2gAlvhyurgtK8YdW4YAPvs+reIxbskTgALM0JLOOAmUAIq262T7
CYBihYdwy3NDX1mlJwtWUHRZI/kDqMC3C5jhhwd74e0zBcbQ5I8+C5+4xljlC1hiLTTeKht/afSv
ltR6TjwWWHywBAO2lhwri7HZdhLxcrXjsPJbHo1PccgCePcMmMeaHL7wYjmu+pOntqwMLmlah0/y
QUd5Xalv/Fo6HH/thozRZ/kGRpOvu3jKhWfjoPYkT3VtdZFnV8LwlPQAO70lsuQPbKsz8bgOPNva
W//3DjzXX6adYpfAhpOA5SoOBloPZ8kO8EOJMDAY1NDvbtdKgMXToEnuZuPNNG9UuRvYLW1rFZxd
K6FOvUtg80hgswJPijmlH5hwd1Hg60Xx9w4kxJ9iL27C3IEj/uJ5D/hwD6iSXpykS57Jt43rvdKV
NjwIQydpQ0s4//DgXR8WgCIdPzy5AFiH5ISneg8d8aSbyh9wCs3cpatxwzNQBARneWh4qjxLl7TK
lGd1BfAlrbyEt/2yd/7CPZNfyiGf8Jhn78kztKUJb+1XmLLkLi/03eOXd3TRrHmKl7jiCQsN/PIL
HffQ8py46PJ3T1rhoRuZbGTgSS74r65bPKs0+nOXQJdAl0CXQJdAl0CXQJfAThLYrMDTElVgiHUp
d8/zLvFYGMXJvcZniWrDxJuKi9ZUvtW/pvNc49ew6i//SiNhNX54tpTWybRTYfFzzxVaubdlDd3q
L27SRz7C41/T1OfkIa10rtBJWvf2EqelE7+kr+Hznlva4oZW0lVe+CXNVNw2PO/uuVr68a904+de
/T3HT/veqM7hlJauA8dAPteB50atrc5Xl0CXQJdAl0CXQJdAl8AGkcBmBZ4bRHydjS6BbScBe1+v
drWrDde5znXGbTaWeXfgue2aQS9wl0CXQJdAl0CXQJdAl8DKJAB4XulKVxr+6I/+aOb1Z3/2Z+MJ
q05Z7VeXQW8D26cNOIir7RuuetWrjn3GXnvtNd6vda1rjYcxXf3qV++HC62s++2xuwS6BLoEugS6
BLoEugS2jwQAz2tf+9rjIS5Ofe1Xl0FvA70NzGsD/jsb+AQ8gU1/VeSvZ65xjWt04Ll9ho5e0i6B
LoEugS6BLoEugS6BlUmgL7Vdmbx67C6B7S4BS21ZOffZZ5+lk5n7Utvt3ip6+bsEugS6BLoEugS6
BLoElpFAB57LCKgHdwl0CewgAX9l5O9n/MVMXAeekUS/dwl0CXQJdAl0CXQJdAl0CUxKoAPPSbF0
zy6BLoEZEvDXL/nbl0TpwDOS6PcugS6BLoEugS6BLoEugS6BSQl04Dkplu7ZJdAlsAIJdOC5AmH1
qF0CXQJdAl0CXQJdAl0C21ECHXhux1rvZe4SWF8JdOC5vvLcENS+9a1vDX/7f/92Q/DSMvH1r399
eM973rPDdemllw6f/exnh9///vc7RP/Xf/3XHeIl3Yc+9KFB2CzHtP+lL31peMUrXjE873nPG172
spcNn/70pwf+29H95je/mSuvPS0Tfxb9zne+c0+zsWnz/8d//MfhsY997LZt3xul4r73ve8NH/zg
BzcKO52PLoF1l0AHnusu0k6wS2DbSaADzy1Y5RdddNFw73vfe0OW7LWvfe1wu9vdbrj73e++dDlu
md+97nWv4Tvf+c4S3575C0/8u971rqPf7W9/++Ed7/ibpbh5+NrXvjbc//73H+M88IEPHB7/+McP
55577vh+3nnnDd/4xjcSdUveP/KRjwxf+MIXdijbk570pFGGv/vd73bw3wgv1v4/5SlPGZ773Odu
BHbWzMMnP/nJ4TOf+cya6VQCgPnFF188/Nu//Vv1Xnp+97vfPbzwhS9cel/u4ctf/vKGnZjC+3Ll
Xa58eyr8q1/96nCnO91p+PGPf7ynWOj5dgnsUgl04LlLxduJdwlsCwl04LkFq3mjA0+gsTrgAyA8
66yzhvvc5z7D//v//t8YHODJWlkda+cznvGMEUxeccUVS0Ff+cpXhjve8Y7DOeecMwCgdUMzWg99
6ENHAPZP//RPS2m22sMjH/nI4cUvfvEOxbr88ssHgH8jWnzVu8mFH/zgBzvwvFlfnvzkJw/Petaz
1pV9qwTIaBagecQjHrHTZMM8Bl7zmtcMD3nIQ+ZF2aNhy5V3jzI3J3P9jbqwyqK7LoGtKIHtBjyd
xPmLX/xiTdcvf/nLNaVfa/41/UbipfK1p57XUx7L0Up47lNl/vWvf70Vu42dytSB504i2fweFXha
vgp0WQa2EYAHANQCz0j8Ax/4wKhgsxxws4CnMB8vOpbRcv/1X/813POe9xxYOX/1q1+Nfu2PD93A
WQFpGyfvrIPy//a3vz389re/jffSnSzl6Y6eD8kS5+U6DuDhm9/85uTSV3RCU0YAdj2Cmh/QLP2P
fvSjHcoRfii+rF+VDiDvfcqxLqH305/+dCp4TJe0//mf/znKBEicakv4/8lPfjLSQ3cR95KXvGRU
1qfi/su//MtIC82VOPWvLpIuslmk3pfLhyy///3vj/Rr3SQP1mWTImSWCZTQ1I60KbxNtSlpImvh
P//5z8d3EyqApzaW8NAUxyqAukxdObUP9UqGcWlfr3rVq4azzz57pNXSEzdtIvJL+twrn2SgPHhb
iXy1bZMObTtGe6q84T3tTvr2O5eWfF3a6iwnnv6QfGodJn79XlJn//AP/5Dg8e47Vu52FcFll102
Wj2n6O5AoL90CWxCCWw34KmP0l/oX9PHe5/lxEkfpW8Q112fUq/Qcuevf6vhs+ivxB9NeSeP9FXe
XcqUcq2E7u6I28ojstEf45lclWE1Dq3IpdbNcrTwFNlJhwe08BP+0Mh7jSNc/PCetOEj79F9l+Nl
s4d34LnZa3CC/wBP/59zv/vdb1RaKa5A2Re/+MWJFLvPax7wNKjhMxZOCmR9r1zqBCjcF1xwwegt
jbgf//jHa7QVP6NrWeM97nGPJbnJ541vfOPYuYRgeLO08uEPf/hS3Dvf+c7Dm9/85p06RfFZI4Fl
y4bdn/3sZ++gPFOWlcE+MYBanE984hNjlhRloEZ4rgc84AGjki1ClPWEudsTy7FwsQJXB1Q84QlP
WKIlPv4o09UBUU9/+tOH973vfSPfoa8tVXAJQLAoszibALjDHe4wLnOeZ8nUid/tbncbtNfqTBCw
GlZZPepRj1rWKqpz174sdwyflvGy+HoH0tbiLKHVLrL0Wz7Pf/7zxyWw3/3ud5fyTN4XXnjhmJ3B
El9ZJi5cWuXW3uK0B/x+9KMfHZede37iE5+4A10yqe5d73rX8KIXvWjJS/1Zao5+6gEdEwv/8R//
sQMtfMgzTpy2jZnIANCq882haV9ulbUl7eQwzwFk0ioH/qRnfc3y5FnlNUDj1971l7/85WP6fOtk
qH1aqu/7S/3gr8pX+yBz8VJH2qm94MLifOsPfvCDhw9/+MM79AMmSbT5yqMyVFBqYgjtj33sYyHX
710CW0YC2w140peM8frv173udYPJcX1R7VdUrndXgAmAoX8y8Se+PvSlL33p8OpXv3r44d//cAm0
CNcnShfw4Xk9XHhCl27hHA1l0L+px4Chtizrkfd60Ig88WlsouN4Jk9biuZNLs7Lv9aRcQPtRWSQ
dOLiwfjgfAXypWP88z//86i7+c9KcnbXbtB/61vfOuph8TfGS0fX1CZsl9EW9rR+Pk9u6xnWged6
SnOD0KJcAQAOHGGx0wmqaECDoud5TzkfYqs8hxcKIKUtSwoD7gJEE889y/Gyz5MCrWyU/LU4YAEP
6LKoOJjH4UcU1FhX0Q9vD3rQg4ZPfepTY74Ak/JJXw/LoZhShqXPPj1lfPSjHz0AVDogLsCTMksW
QESsOpZw8gOedHzS27NKQdYh4hNPwN/Tnva08ZlViGuBJ3/LmrPnVf6seNoLPqsiDXiSK4AFrOpw
HdzEDz9xykIhj8VXOd/whjeMskuc9h6wZkCJU3/KgF7aAes22QF9OvdZzoBK9tp/6g5Que997zv6
rwV4Ug7Ipk5AkEdkje9MLjzucY8bn8MrxeVhD3vYONirK3ENSng1ox6nDZuUAPY+97nPjQMWGbCi
ies7kEd1Jj0yWKFtQuA5z3nO0negrgEmExjCpRcOnHo2KHJkbJm7CQrfljZh0sAeaXVNWYoDPPnZ
lyu9/sXSdm1RHaE1yym3ybCf/exnYxTtSR1lj+qs8opHBr4NwNO3kW/JBAt+MpgrJyUL0Degxymv
yRr1oXz4fu973zvSlTZOHes/fXPKp760f/mrR/WAH2WWL36q097qZEAN689dAptZAtsNeDovQb9v
nAYQTPQBP8bgeulz4u/ZeKEPMa4aBzw/9alPHd70pjeN46v+RzzvdA1pK43Q5sflPXf+ea53cduw
0NXn01eU5dBDD13q54XXNDW/6p98pvJI2Kw7OqEbmu71OeGhEZnQKZxZAsjrd/Xb+l2TAImbe+Wt
0k64O//QfuUrXznqw4lb47XPSYcH9XfyyScPLJT4OfHEE8fJBROOdMj9999/eOYznzm87W1vG3U2
7cYWqAMOOGDUx4zHeDjooINGvemMM84YzyIx7m8H14HnFqxlijeli8JUHXBCcfOx7SkXYMYam4si
SFGj2AE6cRRFftJQ9lziKh8FXVmAPY6CTKlciyMfHRrA1DpAEi8BE+GN8lmdzsoAQ/n0zFFagQkd
V3UUZ/kBclyA59vf/vYabXxu65In+eHJrFvc1B7PFniSn3wDTJNW+VmDAJU49fGYxzxmqSzx16ny
j7vLXe6yA9iOf2SQ93oHOPBf+eCHt4CKxCc7IOstb3lLvHa46/y1ebPKrdPJy2ctwBMIQ6O1CLfl
m9rjKU5bfwYdbdhMaBzgyfpnUKsukywB4gkD3liMEz/gzExsdfKvfE7t8TTzSjmqS3PRwDdA+oIX
vGCJJOB5/vnn70BToMGEjN7//vcvxW0fyKd+4wmv/E2VN2XTdqvzzWh7FWAmnBzIOPLh39YDP2Cy
lg/wNDFT0wGgyqb/qU5ZlKk6fht5D23ltT93CaxEAtsReOpfAIKAFWORiTiA0eQr3cNKB+H0EeMU
HeCEE04YJ/dMLh5xxBGj7iCOfsXF/6STThqADitN9GXGMWD3kksuGUxgGs8CdAAvWyRYzfRjaJn8
1N8Alaxu/I2hQLK95saXgGU6CbAWPceEHdp0GWAUz8qBN2U04c5fXy8N/qzm0j+a4KSP4UGe+MWb
fNHkbxxwmUQ2vkhv1Y3+ncyAYOOpuNKIo9/ELx74u7NK0u3k491lTI+eIJ7xI3e08E+W+mt6Ej9j
G6CvLPQ4k8ZWc+nb0ZSGLhZdEm/8QtdzLvGBTZPmno8//vjRyCMcL6eddto4MZlvi58J/VNOOWXM
Xzw8SccabhIeCFWu7eA68NyCtUw5m3WqLYCnk9pTLsCTElcvHQu+fYxxAXc1nmfWR0sxqyKu46Yg
r8XpSNGvFr/QM6AIi1Id3qasx2a9xMWfTkkHaeaLJai9dHKxmOiYpZvqfMz6kY9yAn0GIZ2k+DrO
uEWApyWRsw7AMXAAcHEGNVfrzN4ZUOKAVcDFnQU4EwIJn7obYPBvQIljlafIt3LybtCYpdAbxNGq
1tPQ5CdsLcDT4MOiZ7LDwEv2le/kNQt4WkoKsAk3I2rgY/kzkMcBnpahtm4KiIljMqQ9SMpgqr2Z
XGL1i8W80pwCniZGDMJTjqJjCWvAYZbaTsVlrZ5qL4nrr5DUhXJ6pjiFbuJMlVe/IJ12X50y8rcU
vW0zgLmwum/GRBGFzHekL/KN+gZZgePUr7quLktoY11OmHRoVaePXWtfVOn15y6BjSKB7Qo86SdW
9ABYxnRj9M1vfvNx7BamTwRoTAQCjPrfG97whiOgYP0E1IBM4wDwZTzR9/A3HtteA4zwB2ZvdKMb
jX07cEsvML4BJibF0TFuGH/UB8AmzdFHHz2uOMKPVWX77bffuHro2GOPHSenAT36AV4PO+ywUc+x
deC2t73t2CdKl4lPJ58ffvjhI5g1gaf/VQ55AKJWrhxyyCHjHn1gFoACEPW3xiQ8m/TDK90H8DZ5
a0LZM/7pCfrVAMRb3/rWY/mOOeaYpdUrZGXsAYLJR1x39PGtHgIMc8erOOqJLmY8VDdWTenr+dOn
rHYBHo3lxiDpTGDS8cTLOQjCXOinjtwPPvjgcYWPsZOFk06IhrjLAU88oKFOjUNoGHOA5O3gOvDc
grU8D3iyGOkc95QL8NQRuHRwOiudU+sC7iyDS3x3H23rsnSxgrA2znLvscDp7KYcYEW2XHibAp6U
W2USRwfnWedn5nTqyimYs4CnDs+yWDOWBgHKr447fxNTy7wI8EQH+JhyOl786hS5WcATwKzAU52Y
QZW/QQ8N4KJaM9v8yFI85YtTJhMLU3LiN2vShEzQmpo0WA/giT+DpvZrQJKXOgXUa3ucAp7kIj7g
bDbbzDSAbQnXWoBnlu9Gdu4GPnIVJk91AdBSGuKmgCelY9ZKCIM+Wmhz84Cn8hu0ZzmDMuVL2yA/
dIFV30rcSoBngCxZzmozJpQ4+cqPFeHzn//8qLTgl5V/PYEnBYfS1V2XwFaTwHYEniZijYMAHqCj
v2dJM7kP/Okf9bcmug488MBxMk1/q+81IWZ8MxFrHAA0jLFo6E+z79O7eO76YeMDXUccYMvkNGCm
bz399NNHa6H48tG/6XMsnwXuAEy6jPxZ7VhencFg7DzzzDOHW9ziFqO+hS6gs/fee49jecAxXsU/
8sgjR39l1W+zGBqbWefwdeqpp46A2RYdq7rwQ1cTB+/y0z+LS+fU59KH8GViDmD1Ttcw7h933HFj
uY866qhxGwd6JmgBZ1ZB8SIjctLHGlPx5hKWOHQpz/gAUFmsyQ3v0gpzGYPooNK6rB4jO2Mc0GzM
D83cxVMmYBvgp5MB4XgkU7wsBzyTv7ow/pj0NRHRTmxutf4j5enAM5LYQvd5wNNeqlnK++4QAcVd
x1OdTlNnVfeRCQ+4i+JY07TPPlpKJWvFal0U0ykwCUChb78dF96m4up8xWXN0cnp3MxcLudmAc+A
KvtFqgu/KwWeBslZVimDXlWaFwWelS+dvQEawDWAznIBudVyGIvnrDSz/FMfUx33egHPmrf2wOKo
bjMZIbwFngYhVlIAtToDl/2QqwWe6lw9aV+zHKXEwC//TG6IOwU8zWJbajXlxAfslIWbBzyBSBb5
RRzeWSMt51IW7Z9bCfCMxbN+A7PyNinCIpxyiEcBMKmznsBTH6vtd9clsNUksB2BJ9BkwhCoADr0
U1ZeAGr6MBOJ+hAralgZATRjIB2gLteUlv5jkk//jw7dxynj+iHv7vpbqya8oy9fABUfxlWWQmd3
oGcCmO5kfGFJpEPpexy+Y6Ic8AWQ+NP7WGz1ddmKRYeQTnnoLfpTvMnTX9WxXgJV6t3qGcAVKBVu
iTB9iD4hf354E8fYA1ABrfgE0tH2bHKYAQTQVFZ+xg3jgPhoiMPfOAs4Aq1kQx788Ri9ij8//bo7
PhLX3ZgMHAPKSe/uMllJP5DGO0DM6ksPwp/8Qxst8bx7BkzJyDsZ5zwVfCwCPKWTB91FGgaPKf1l
q/UhytOB5xasVYqwjkXHVZ3ZJQqeWZo95aaAJ750TDowH39cwMQiwFMaIAmonbVcQedqWVz2aSaf
3AEgCjYeWwc4op0lpOFNp1WdDoQ1RyfvmTMbaBZSp9U6HVic+jJYGVyqM4jwb/c9xrJalW7KtUGr
Op17PdXWzK1Ou5WDwdJgkaW/aCwKPNu2Jq2lN5bJzHKWFylX5SMztTl8pqatsqr+noXhHSiK3BMn
h/OsZaktWlNllF8FbAa5CrzwpYxAduvWstRWHVI6WjfFo0GeshOnPbDaVoc/iko9qVi4wdC3WfNS
Zt9qWx+UG2VVh7PcFH85ZCoTTysBnujp66x4aJ12UHkkg6m+jxVhPYEncFu/t5av/t4lsFklsB2B
J3Di3AUWLUBOvwIgAZ7GdP2d/lBfqf+jP7Dm3eQmNxkBH8BGJzFxbO+48TW6AMAGtNIngBz9FSCq
PwJMcrHYWeZqWah+Uj+NhklF8eXJcmlJLhBnbNWfy5MFkaJPJ9HPG2+BOToNC5+lrcrnWXx50oWU
15gJSLLWKoe4+jflt1wXL/RN1kSyoecYA+lxlo7SXYBE5abHKR8wrqzOiHDxs+wVeEOD1RZ4RwMv
+lITtOJFHnQVwC/WSmEuMlE/0QHc5Xuzm91stKLiJXTQp5/Q4VJmIFxZTYCz+OJDmDTi544uSzId
TJ7kolzJn3zRlUZc/owj/IHy8JoyJw/f13ZwHXhuwVrWEeh07DXQEQF2OjYfOf8oeDoXM0FTh+ns
KrFMAU95xXJRLYMBd4sCTx2/8uj8Kf9myZRV5+DwEP6Ap85glsshQpR1HTSgyQ/orIA0vBl8zBTq
lHXcFFv56EjjzBACtACpZ06diGO5qk6Io0RL2wLPLHGhXCcuEMqKJX4FnurcfgHh8W+BpzCgxwCl
49aJG2TwQolPOjwtAjylz2yqZ47czGDaFzPL5cCeOsunTeKLXHXc6ejNzBrcA4zID7/5yxJ5kCd5
AN4GMJ0bCzje+Ad4uhvsA5DkATxqI5Fvy7PZTHS0xbQfeRj462FQ5AXU2W/I4s0ZqM2iGmw5eZgE
MVO9iMVT3vg3iAPkZIR/Skh12onZbkBbHI685G3yI45MtEftNUuTDYaAGd7RVY8GUn0GxcugGQd4
8lNWMhZXHaozCoZvYZbTHswm29vDUQTM5pNjeJ4qr3hkQG6tM4svTL+XvPFrtp5fHCXP5ETKQiHQ
/rX59QKeaJKBMnXXJbDVJLDdgCe9RH9l8k3foS/XF9GrjD3GbKs2jAHGBZNoLJPGKuO9/lq/70wF
fS69RJ8sLjCi/xXXeCwtP/sSrVQBRsRz18fq162S0b8AosJY3NA1fumX6Tv6d/4Arn7W6ePu9Ae8
Gjv1e5Z3elYWgBEdZVI+fPPTL+vL8GVMc5IrUAawGW/xRu8yMcmPfmUswRs+TCJ6Ns7JR1wTfcYP
+RuL0cAHPVT5AFb6lXTGSroJyyBQ7J2/uCbZyR9v8XdvL7TpSmiKK71LWucX0EO8K7dzJ4wHdCYy
DfDEoyvpPFvZYvzjZzuL8R59dMmeride8lQHxiR1KY0wdUMG3vFddaGt1nfU8nTgWaWxRZ4pWzpK
y0MoopQylw+6zqjoEFm+gLXd5Xzo7VLb5O3jxU/AWcDdosATHZ0HS5tZspTb/f9n785j9S3L/IBP
my5p0nRJmi5/NE3TadOZJtN2pk2XzB9dMt07AooiCiKLgog7su8IAqJAEAUEQRzZRGBEdiIIisMm
BFlHZQsIGPYo4ohP83k61/E+D8/7nvdsv7P8vlfynme71++9PNf3vq77OZRiSqvBPU0ojiZU+FV8
ky9M27hVNoTIZFthTVrIs3RaQVJMuMKpo6Ov34lfYsJyf0g8PbfCyFrNFQTp0GbyEb4lil5I8HVf
uQjCbA9FK0iHiV+4+imfSbiVWYin8NyNEBxpeYE5Ii3ymSTwhG1LvoT1gvOisEjipz76MStftYGX
t2dVR/Fg7sMA1ecROy8AGCtPEU8vQNeeEZO+F557Q6tyH+DP+5X9JMorXS9Z+ZdLVIXzYndfWhYA
iAUMJBwu2sFP2yGybd0nfVzIi6vtY1bTx9xs1d9+IwQSZvJzpADBtATxUg9lbNOBqfau/uO5hQx9
txUKjjRhXbgJq461qNWGb88tAtU4qPIZm+6XDOtrAcK4lscY8VRviwi1wGB8aQN4tmPDC5/i6Ln5
wc/YMJYoACUUJnNlK5QG+Q8VA4TVCn8JhU044zUSBDYbApOIZynlm62+xrv3g3ezY5EI81HVuciF
d5OfBTTh3XdtfnLuvvh+4nsmTed+ziuOMJWee1UG6SJvFbbSqvgVTxz35C2stDxz37Hit/lVGnVP
XlUP4S3qefchDcogvLTk4ah+4lZ9nfu1+QvnJ760lavCVN0qz6q/fOhfDADCIpLIuvdY1cux6lTx
6lh5Vj5VHtd+wsnDUVj5u67nFb7Sr2OFd6ywjp63YaTluvKoMI7iVjrC0Nm3Bgnx3OStrDNrZGRO
Bx8K8lmWhuGzjXxt8kM0rJJRPuGwGCncEDETxlCKeMKWUDiFXQhLJIQiP42QDfOqa5Ni1Uf9Jgkl
WblMoAuJ9pemOMsVZYK1+kl3FmEhZuEcEyunymZVeKzvWo0cw1tYBLLarfbctqSyVp0rX/W3or1Q
P6l+oY5enmOiXAjYsGzVR6pcY3En3RNHmyq3dJCxSaL+XsrK2Na5De++/grjobBWw11eY1LE0zN1
lE5L8MbiDO/BSPmM0bG+3NZ3GHfStXrrK5PqVfG0tfohoistFq0sSkzqGyudX9ILAlsSgSHxrLmG
RW/ogbEly7VaebG2WbTzQ7z82nPX5ssKY16t8zac+23cClNpVrwK536dO8qjwtaxvV9h23h1Xs+k
Yb53X/7u1zPHtrwVV3jvcteOFja9F5yL41hpVZxKp46VT5uX87ZOFVYa9auyVj50p8rDeaXnXoWt
uMOj9NtfPXdPOpV/Xddz6VY+9awNX+EcK1ydVzj1dF5YVV7COW+vWYi3BqHL/I2/8Tcm6hjrEYPf
WI+FSpm2LgSGxHPrqv3K1bb293nBL1dM2tw0W0G+fThnmlWf8sSiWP8qp42f8zci0BLPNz7deu/o
R6yo3KkiQWAzItAST4vZXOf//t//+93f+lt/q/+652asc+oUBILAyiIQ4rmyeCa1rQSBEM+Va2gu
kdx+lyv22XAT5S7KhdWePntnuJWyrk0TlrIxy9u0OFvrsxDP8Za3p5z78CRL8Xis3A0CGwcBxPPv
/Edx/hcAACAASURBVJ2/029d+Yf/8B92f/kv/+XuN37jN7q/9tf+Wu/ebntBfsEgfSB9YFofoJf9
1b/6VzfUuzIWz43zntq0JeU+YS8pF4rI8hCApa/wrYSweNqLaeO/Dx74SEPaaCWQ/XUa9j3ZSxyZ
j4CPS/hXAJEgsFkRKOLpK6Z/7+/9ve4v/IW/0BPPv/SX/lKHiP7Tf/pPl/375//8n/ck1j7t/IJB
+sDa9gFfNV6Jcd2m8Y//8T/u/uJf/Ishnpv1RZF6BYEgEASCQBAIAkFguQiUq6092iz8vEn+yl/5
K3G1XS6wiR8EtiIE4mq7FTV2qhoEgkAQCAJBIAgEgaUgUMSTl0oJLxP/emPS/8+ucDkGgSAQBCAQ
4pl+EASCQBAIAkEgCASBIDAVgTHiKYKvUC/la91TM8vDIBAENiUCIZ6bsllTqSAQBIJAEAgCQSAI
rBwCk4jnyuWQlIJAENjsCIR4bvYWTv2CQBAIAkEgCASBILBMBEI8lwlgogeBIBBX2/SBIBAEgkAQ
CAJBIAgEgekIhHhOxydPg0AQWBiBWDwXxighgkAQCAJBIAgEgSCwVSMQ4rlVN38qHwRWBIEQzxWB
MYkEgSAQBIJAEAgCQWDzIhDiuXnbNjULAlsKgRDPLYV08gkCQSAIBIEgEASCwAZFIMRzgzZcih0E
1hECIZ7rqDG2hqJ873vf6y6++OLuxhtvnFpd/5xauNtuu21quMU+/P73v99dfvnlc9Fef/317vHH
H5+7Xs6JwaTM7e+yyy7r7rjjjk4+611+8pOfdK+88sqKFdPn9X/84x+vWHorndDLL7/cnXXWWRui
bfSf22+/vfvc5z7XnXDCCd1nP/vZfmwM+9Vdd901r//pi1//4693Dz74YPerX/1qFMJ77733DXG+
+tWvdjfddFP+RcIoYr+++cILL/TYGTuRhRF46aWXugsvvLD79Kc/3X3mM5/prr/++rk+9vDDD/d9
deFUEmIhBJ599tnuiSeeWPHfFVdc0f3dv/t3O3PGaqSv3JEgEATWBwLPPPPMqoxz+v1f/+t/vaOv
rMY8shrv499YH02SUiwFAYrzm970pm677bbrKG1j8rOf/ax729ve1oejZK+kfOlLX+re8Y53zCVJ
MVceSv1y5Rvf+EaflrK//e1v73bYYYfuzW9+c39vl1126RWuIVFYbp4rFf+1117r3vrWt3b777//
kpL0z8Mpka2ceOKJ3TbbbNM9/fTT7e11c07x/ehHPzqRkK2XgloM2G+//fp+tNdee3X77rtvt+uu
u/bXjhZzShBS/Vn/qz5orLm39957d9/85jcr6Nzxi1/8Yv9cf61422+//Vw699xzz1zYnMxHwGIT
bO+///75D7byK8rEV77ylXkLWZdeemmnX5kfP/axj/X9EXYf+MAHOnO+fqyvPvLII1s5esuvvrH8
u7/7u92//bf/dkV/v/M7v9P97b/9t7vf+73fW9F0lVN5DzvssOVXPikEgSCwIgjQGVZjrP+rf/Wv
ur/5N//mqsxR5pF99tlnRerfJhLi2aKxwc6LeFI4rHyPCQuN50jLahNPlqBjjz22W4mV1iKejz76
6Fy1WJkopccff3xfJ2RskuVpLtIanCjT6aef3lnRXoocffTR3QEHHDAv6s0339xbNtbjPxZ/6qmn
+vaw8rbe5Qtf+EJf1ltuuWWuqNqLJd0Ee+65587dRzwp761Y7OAiZ1HBuLrkkkvax10Rz7adqt9a
MLFQY2Ei8kYEQjzfiIk7t956a9/XatFJ/3nve9/bnXbaaR2rZwkyqk9+7Wtf6+fFj3zkI525JLI8
BBC5d7/73f071nt2I/z+4A/+oLOwFgkCQWB9IGBufstb3rIh5o+a47bddtvuD//wD1ccwBDPRULq
Rc/FFMn65Z/9cpGxVzY44olQHnrood1uu+32BjdHCq9VFiviFN5JxJN7LHcfrgDThKunuhexHFo8
KeW/+MUv3kAGlQOBZO1BUmaRMeLZxjvvvPN6Jeuqq65qb8+dK6s6Pfnkk3P3hievvvpqd9999/Vk
tiUKw3CsyerNfW1oZVXfuvf88893fsT9tn84d4+wusl3mB6chDnyyCN7YtOmUdj2CQz+cIVQ1x/9
6EdvwF7QNm9p6rsIfJVnkFzfRtpqVrdpZO2d73znHA5teoUdUqF+s8pPf/rTHvOKV9gU1rOmMwxH
Yf/whz88vN1fy7NNf4x4VkThPvGJT/R9EJ4lY8Sznl1zzTV9+FkIerWTfjfmsj3EQ38fC1d5O4oD
T2270FiveMO+0y4EVRiEqNwF6157bPuxvqpOrHhDmUY8jWN56JPT+lE7P7dt2eZlrOv/fmPjXrwa
G9UOw7Fac+E0zGFcZW7zr/MWF67qcGGhbOsnjEUSSgvMqlzq2YaTpnvCnXHGGX0W5lALJy+++GJl
meMSEEA8eXRsJGEJD/HcSC2Wsm52BMzNvMI2kuAOIZ5r2GLcl7x8yt1TJ9p99937vVtrVawinrUi
zhLTCgVTOa+77rpR4klhNhCQV26BjkhPkadKi+Jy+OGH92lJTzjWRnv6Wldbe0g9b5ValjqWJPfr
J88ir5XH8LgQ8aQcco380Ic+NC8qYnvwwQfPqxPXyiGJQpq1JTcqL2lH1rBS7CRKkTvuuON65a3K
vueee/YWiMpUGhdddFG/X5CSx+pA1PnUU0+tYL21EuHxnBtupYcIlXsnpb7u11EbE3koZyuU+COO
OKKva4WnbOgPrZxyyil9ebjv7rzzznN5IIsU6hLtxkpilUu7qs8HP/jBfu9AhRk7ytM+s1Yo5BY6
pAFbx/e9730LpkWZtqjQYqS/2COpjoVVm9diztVHX5+2IFHpTSOewiDVsGqV0mnE8+677+7rcPXV
V1cWbziqv73MbTtZJdWGLUlCfOBxww039F4GzlltJ4k5QN+tfuJ44IEHLkhK1Ie158477+ytbM5L
EE6LXu38wXV56N75nve8px8fJ5100ry+ymrczhVjxNO+Fe3flls/GhJgiwbmpHZ+lq/5pwS2VnL1
bZj6ObcHtyVx9q1r1+985zt93Stv88pzzz03t+DgvjSUsRV1Ml8OcbEw1Ipxo4+ZR9tymyfMPWRY
d+NikrC+y/OBBx7og5gflHHS4tykdHJ/PgIhnvPxyFUQCAKLR8BcbD7fSBLiuYatheRQ0ijQrBZI
KKWTwsCi2JKVLVnMIp5FwoZ7Ori9Uqy4Zjm2Fk9EDJFxr4jmY4891u9/s0+o6kQhQ9woPJRXVkLK
l7qLL92SIfGUL0vsl7/8R72Cq5yIgzjHHHNMRRs9LkQ8RSolv6wn2gQZpSCWZZUSyDLFzbFW/lkh
TAL26KmfH1KgntIg6k8BRM58vInST5FDJk0e6kIojDvuuGNPUBH9wnKMeApLIaWAwkY59B97tRCJ
ssRQyBEkFhn3yZB46oOIhPoimtKjjJfC2xI0pEXehxxySE805cO6oh0QhxI4vf/97+/r6R5l/vzz
z5+zoFS49jim3LKSwVL5yhqIiJ599tl9OX7wpz9ok5h3Xu6CFHJpqydyhaBrs7Ze8yLOeKEtpQNz
hJE1SR5jshDxFMeYk1YRl+qTLUmstLlfy3uW+rNaGWfKZixU36l8injqn9LVVyZZ39x/17ve1X+4
x7n20WeM6XZxpMrZHtUHudKW1157bW8x9RwxsvDGJbzGn/ayUIM01zgQFgGEkToJAxtjz3yq/ysP
GRJPdTWOzjzzzD6eMac/mVMQ3BL3jRkLCuYomMlffuJX+hY01EV/cs9Pf1C2WjCSJuKpnYxz+Znz
zHfuqYvtC/JQXmPfu6GE5VKYdrFLnc2z2kqbliCe8jaPm6fkU1Zx450g8YixvFnKazxVGo7G/uc/
//medFa8eg4r74HI0hEI8Vw6dokZBILA/0eg3ikbCY8QzzVsLcpuvfiHxRhTMIdhVuu6iKf0EQRl
LKJC8WJlojCRIfFkHaD0FYGqMlKcKEO1B45FTLpjq+YU82nEU5pjSj0CQkmcJrMQT2VSNgSOILgU
wWGeSCQFjAJHKI4sGsO2K6VeGJaSNu0+4p+7K7bxEIKySlYYxzHiSSEd4q29WCkoxSVjezyHxLPq
PrSiqCuFtlWGEU8koRTwygfpQFxLxBsjIi0uFbaOZW0vK4v7dW9olfIMMbZHd0zkAyMLB8M8y3q/
XOJZ5WstScYJAsn9uZVZiKe210+qzxXxRICQGj/nxptwLdFv83Ku7ZCTdoGowlx55ZV9/LJQF/HU
l2eRKl8b9uSTT+722GOP9tYbztUHQa1FmwrAcog4DsmuPmaRwHxUok3VfygIIEyqTYfEU/ixcrMI
i1fjkKXX9dhXuyuMchqrLcGs8pSFucZmEU9zYYm2kYeP/LRin6X6lZhj4DXERdrGlzmqxPVYW7Po
tvdrPNUez4rvqFxIuHl4zOLNg2WhNm7Ty/kbEQjxfCMmuRMEgsDiEPD+iMXz/2OWPZ4z9B0KKIWw
FJMZomyRIC3xHBJNCo6OXkS0JZ6UeuSSa6l4w99BBx00p/hQIJE01q+hDPd4Di2ewnNpVE5E6JOf
/GT/xVtKq/ynySzEsz6cVKQHkba6P6yPa9atspLAhOWDwqh+SA0FrhVl9XxIgNowzicps2PEc9Le
QuWqsklzFuKJwAzdjKtsF1xwQd/2pTiXq209ryNSwRJcYq+mPsPyybpVfaeejx2574rDWl5CaaY8
j7WDD59o+zFci0yNuaKWG3KRlMprOUdWJoSOuzLyqR5t3rMQT+RNPFYnUsTTvfZnocU4GCNSVYda
4Bqro3j6mvRJYTVGNiq99gg//cA41D7yMP7bhYc2fJ3Lr3Wvrfss8kcdddRoG1u8aPu6ccRqORSk
UJ1qcWyMeJZ3hXIbFxaEyipYc5I2YGWdNj8j/9oDDsN+WfnyAiDlajssrwUiJLUV9WqJHVd1iyvD
PFxrf94kJYine0MxF7Acl0wjnmXBV4cxQfi9uyJLR2AS8eS5wJrtp3311fY41gfqeYVtw9S94XEs
TJtOeRy0NeSNpH9FgkAQWB8IeP+MEU9eLTXGJ439uj8MV9c1H7TH9tnYeZum8zFDQSyea9h3kBlE
Yr0JpYUyVIIsUTK4bCEUrXWlJZ4UPoOA0md1fuxHqSSU00nWyYWIJ8WeBZISSkHiKmYvIOvbShBP
iqg6lHWB8olAjNXHvVbpM8hY3movHesNa0gRIla34ZdlC+f2KP8xK8piiCe3Y6S5ZBbiScGtNqp4
dSwyWMRxEvE855xz5hFPijvCz02wiJh8hvtjKx/HsryWa7N7XHr1y0nt4H5Zotq0igCMWa60lz47
RsraNJZ6bvHCGNHXi0QuRDz1FaSjVfCKeJro9Us/BGkaKaoyl5V90v5T7rJlkV4M8bQoYLxpV3tl
5YPYIJ1LJZ7iWZCa1MYtJpOIp3obf1Wnan9uwwR28uHmizjac2nOc60vFPE0XlqiW3i2R/sfxYHD
pDJLnyyHeOoP03BhDS6ZRDw//vGPz0w8taexVlsEKu06GvvqG1k6ApOIp3nWXOF96+hnXrOIyfJv
zDt333XdF965+cPPuXjCVFjnbRxhpFfPHd3zG3pqqGmI59LbOzGDwGog4P0zRjx9I6DmCu+0GtvG
v/s1p7hfc4BjzRfO67rmhIpbz+q+a3OO5xazXUvfnFTvv7buIZ4tGlv4nDsVpVQjrScZEs9yR0Rk
dHIr5SUt8dTxKCNlPakwY0cWQYpNkbs2zELE03P5DOOycCyXeHI7Q45aFz7kDflejMACqaGgwaw+
0EQxp0R6Pk1Wgnga3JTNklmIJ6tKS6QrriN3wLbNZiWebRomIgsFlGPEYVLfL3fJdrWMRa0lHm26
085ZDrTBmPvoahNP5bLIIn/lIAsRz7Lwt/9SpYinyXyxUuPXh3yGUhbP+ncviyGe5i8Eb1gmXgBL
JZ4snvrpLDKJeOpjxk/NQ0PiWV4P1R6Vl4Ue7VTEU//eaaedJvZR8WoxxmLYQrIc4kmxYEGfRVaC
eFIo4FQfIxrma36ETWTpCEwjnvpgfdVbe/JAMFfyGrFAYo6gMHqPuE/h442kPzrXfu4b33XuKLyj
uH7GrnDGjEU+Fop6HuK59LZNzCCwpRDwzhojnv7vvfFtXjBXC2Oxv+YBz8wBrs0Z9TP3OKdfmxvq
J2zNLXVs45pDhHH03LlfiOeW6gkz5lMfo2EpGIoXxlrJkHh6WSFfOrg9jTpiSUs83aOQcKEbKqOe
tfFqjyeXxKFQzKVbUop4KXcsGWNuest1tUU6veSR1/YLmgYuRZa1aShtnZyP1ZuVuBR7pAuOQwsb
jNs2XwzxZOk1AbRCiUAS2z1xFHofS2lluMeTK6zy1Z6/Cit9Ck9r7Z6VeJqIhlJWuEmKLaKuHOWm
KH65BiJSQ2nbYfjMNUsxK+swnElxrD3G0ph0T9v5surYB1o8Y6nVp6pvTCOerHKs+cZZi81yiKc6
I4hjiyf+J6z6157exRDPSR4by3G1NYb1/bGvUw/bDvEc29db7q/VT4bE0wKKxaVhehWviKcxCpux
F2eNVS/nluS2fUTbt3ksh3hahFDmmgPbfNo83F8s8SwPhjbNhc4tULVW1oXC5/kbEZhEPPVDXiP/
+T//5/47A/b3mo8pccapucE40e6l3OlrLBzcdN2rZxRA5+Zv84+j+dix7tW1fbsWdUupbOfeKn0s
noVEjkFgfSDgHTVGPC1W0bP+w3/4D70eZTzbJmV8mwvMGeaAuq5z1+YQR3OHsH411ziv+22c9l6F
97w1VBVisXgWEmtw1PA+PmIyt7rsQxuUAIopJV+jUXDszan/obYlijkknvKkNOngXnitDIkn9zv1
QXDqK5uUM9YEbmvqRNSdix6FHPmkZKs7qyX31GnEs0iJF3SJ/SjSn9XiiUxy55S3snEv5crGJXJI
Cuurtsg3ZVbZDSz5+1pruaNVHSuMcL6yiQCWm6f6a0/1Q/LUmwvkpz71qb78Bi9ZDPFUZ3vVEB9Y
s2xRPuHYKvCsrUgwS09ZEofEU73USTjudtKj9CBPFN92FXwW4mnyUhbEqYi7NCmu+njVt9qxjjDV
31orpbRYcLl9f+tb3+r7kvj6g32pRfxgzKW5/Vcs9W9T5GvBx8ICUo68yKfa3BjUjyhgJRZTEG7Y
jIk4lEHtrB21NcykiZxJv/Ybim98C6v/VR+8+OKL+/EgrDIN3WKXQzzlqZ9LW94WJeCrv+pnyliy
GOKp/6tHS8zgqr2XavE0HiykSAN+xpAXHkuOfll9SHnhZK6xEAUvce3TdE9/qL41JJ7aBhbmMukT
40Sfcb+Ip/juGUfwq/lZv7fXWH8k+goc9Kfa/4wgwLWdL5dDPKWrvsZM60LFM6D9YrTywM4cPpSh
q6101NccZd6Gc4l+YLFGHxkT80P7oaKxMLk3HYFpxNP7wZ56c5l+pv31Vefem+0zY8L3E8zP2lK/
9TN+tNMf/MEf9O9v85d+rn/wajH2jSth7UH/l//yX3b/5b/8l77Pmx/aub5qYmyJHwkCQWB9IGAO
n0Q8vbf+63/9r71ube4wx+MU3onmhv/1v/5X//4yN3jGOMGz8X/8j//Re2q5zwvJe905vuI/NXhH
ev//n//zf/p5hA4mPt0CqTQfmXfoBq1+UIiFeBYSa3TUmFzWkAcdyM/EzjJGkAQviPYjMatd1PqE
fpuPjuZlWCSrnrk3VEAodvYxqouyO1KOKEmtUBR1dEqbMIgfpY6S3X64Ymjx9AJmQZQ2ZUzaiAGl
eqF9R+VmJ7/6+SAQJYtVYVi/Ki9FzIqwssrXkYLsozalvHJTgoXn9VMeJLfCSA/x4o4oTJVB/q0r
pGdjSp9wtXdNWsgVooTAcKdo0xuuWLtWV2EosMqEeFKsW4EBpZkiU+mZfCiqrSjHmFuutmkt0lbd
xJdW9XMkXj+ZJsK0H0MRVj/00RfpKJ8+ow/6GIuxREyscFfHVihZ+kvVidsa5cy1I7GAIc3Wsms8
CvPQQw+1yc07h5l2NplX+o72T7pPuSvRT9swzpWXQln/VqnC1nG5xFM6lEsEufKmRPqXKbUYJMxi
iKc6ITjaAdbayxhB1Bciniw6k8Kw6pkXtINxYKwJi5y3OGpLc5W2b8eSl6OxWDIknu4bWzCXrvnD
fGVxADZFPIVjDdLPq996jnR60ZYYR+aOantlgYkXuBdxCeLp/lDUb/hxIVZj9WvFu0CflUaLizHc
4qK/wmUo+ldrIVY375XqD/UVb/GQDve15VCqj1g4iywdgWnE87//9//e9zF9i8JojNY5JdMih2tt
aN4zl+p/7usLwhvfFoC9o/71v/7X/eKCBYZ/9I/+UR9OvzY/CY+QsmAbd7wupFt7otsahni2aOQ8
CKw9AubpScTTu5QubT5BFM0LfvQA7wPeP7/zO7/T8wzEkX7o/UIP8X0Kc4z43jEWuP79v//3vbuu
99q/+Tf/pl9YNWcog7CMTeY1hhD6vjghnmvfRyaWgLLj5WFloVUiRKBwlGvXxATW4QMvM1Yo1gid
cpKoH6V+EumbFM8qsPTls6VEGZWVxXDYTlWGshIahAb5JKlw0pqGz6T47hfxdE5Z0IempQdr5ZL3
QlJ1Hfu64UJxx55TWLXX2L9vGAtvUmSBpngNpcYLUjGGsQmvrE9tXG2mXjWeyurTkmCTNSxLLJBw
VZXmQqKslDv1tJ9iqe26UD5Lfa7+rHHqWxgsNa2KxxJoTLRkr54t51j9b9JYQ8zqq7ZVhjFX1Ell
UH/tpF8uJNXfJpVF/BZbfWa1pOo69q5YbJ5Ii/lgbEzChTIyFCQZ8Z1lDhnGzfWvEZhGPFkLLLia
T+pXSiPLtblR2/npd8LwSkE8K9xv/uZv9hYJZPG3f/u3e0uFuel//+//3c+NXPEseogvjj3ErPcV
f7hwqeQhnr9uv5wFgfWAwDTiaSybIxBH842PcdJteDf83//7f3ujw2/91m/3nnzuM0L4l4fmBHO/
ecWCrwUqRhvfJ/Eu5NX3D/7BP+gXbxHV3/3d3+3D0vVZUemZdB+/EM/10EtShiCwggi0xHMFk10X
SSERFCPuY8sVZGs4AZpUWces/ploJwkrdhGcSWFyf8sj0BLPLZ/71pkjRYLXxdATYetEY3m1nkQ8
eWZQAHk5FOmkFFIE4c/DhauthRPPizjy0kBIS2n8/d///bl/X8VCQWG0cMKNzqIB4smrQBpFPHmr
yEvacbVdXvsmdhDYEggsRDyNZ3MCzx4eTojof/pP/6mfG8wLDDfumV98X8KCV5FO8Swo/8//+T/7
H9ddYXlD/N7v/V5vVLJAaeHSffMLQmuuISGeW6IHJI8gsIUR2MzEE5RcOU2YJrDlCFdkEzQXEG6M
0kVcuFCaaKfJNCvXtHh5troIhHiuLr5jqXMxZu0c7kEeC5t70xGYRjxZGf7jf/yPPZE0x5u/KIN+
9kf5UBpvjSKmjiye3PpLabSf3TYE++S5lrPCs5L/t//233qLp69eslYgneKYE7nV2ZesfUM8p7df
ngaB9YDANOLJ64pL/dlnn92Pe7oOgmjLBt3HvHDeeef1C03mAB5m5oWaQ2p+sdj1L/7Fv+jnDfMF
7y/eD/Zy8oBhHHDfAj/iWd4wIZ7roYekDEFghRGwas19YrOKlXdfdbTytlwxKdpbyILpZ9Ldkm7a
yy1/4s9HwD6U+nLt/Ce5Wi0EKDLDvfqrlddmT3ca8aT46d/IpA+W2W9VBJGSZ++teb8UQ+F5dHB5
F859rurmOx/IQkgRT9sP7PmkfLJScJ8T3jUPE/Oi7yywYsTVdrP3wNRvMyAwiXgikMax8WwOMF8Y
58a7eYB3Ay8JHy6lZ7nvOxDmAeHcczSX2I6BYNLDhPNM2r4FYoHL1/HdR0iFE48IP/Q0cz8fF9oM
PS91CAJBIAgEgSAQBDYMApOIJ0WNEufHYrAlf/KkaDrG4rlhulIKuhUjMIl4+mCicWxRCgHckvOI
OUS+8h9+lFJThXhuxR02VQ8CQSAIBIEgEAS2PAKTiKf9UfZereWPNYNVYyj5uNAQkVwHgbVFYBLx
5O5qDjGW12IuqXztMR1KiOcQkVwHgSAQBIJAEAgCQWAVEZhEPFcxy2UnHeK5bAiTQBBYUQQmEc8V
zWSFEwvxXGFAk1wQCAJBIAgEgSAQBKYhEOI5DZ08CwJBYBYEQjx/jdJv/Po0Z0EgCASBIBAEgkAQ
CAKFQIhnIZFjEAgCS0UgxPPXyIV4/hqLnAWBIBAEgkAQCAJBYA4BxNO/NfDP1jfKL662c82XkyCw
LhBAPD/0oQ9tmDnEXPeBD3yg+8M//MMVxy/Ec8UhTYJBIAgEgSAQBILAZkDg3/27f9f9s3/2z7rf
//3f3zC/3/zN3+ze9773bQb4U4cgsCkQ2Hbbbbvf+q3f2jBziPnun/yTf9Jts802K45/iOeKQ5oE
g0AQCAJBIAgEgc2AwOWXX96deeaZG+7nf39GgkAQWB8I+D/nG3Eeueqqq1YcwBDPFYc0CQaBIBAE
gkAQCAJBIAgEgSAQBIJAi0CIZ4vGIs79D6+LL764e/LJJxcRa2WD+sezyvD8889PTPjaa6/tbrzx
xonP18sDOPontish/q/ZM888sxJJLToN//z3nHPOmdomi050HUR46aWXui9/+Y+6T33qU93X//jr
fVuN3VsHRU0RNhkCzz33XD/PvfDCC5usZqtTnRdffLE7//zzu09/+tPdySef3N1www1zc+sDDzzQ
xRK2Orgn1SAQBIJAEFgYgRDPhTEaDfHss892Ngt/+9vfHn2+JW5+7nOf68tw0EEHda+//vpolvvs
s0+3//77jz5bi5v+We1XvvKVrlUiH3roob4eZ5111qKLdP3113c33XTTvHhHHXVU9+Y3v7mjgG1p
+eY3v9m95S1vmVe/LV2G1cjvox/9aPfOd76z+/znP98deOCBff3G7q1G3klz60YAWTLX/uBPetXy
xwAAIABJREFUf7B1AzGo/WOPPdbPpRbaSixEmn922GGHzv9gs88Pdh/+8Ie7n//8591tt93Wz42P
P/54RckxCASBIBAEgsAWQyDEc4lQryfiSbG44IILRmuy3ognK63yPvroo3PlZTk77rjjurvuumvu
3qwnSBCi2Qoyesopp8yt8rfPVvOctXOPPfboTjvttNXMZoun/cQTT/RtdvPNN8/lPXZv7mFOgsAK
IhDiOQ6m8WguLY8XxHL33XfvTj/99O6VV16Zi4SMCsdTwRzlnWC+jQSBIBAEgkAQ2NIIhHjOiLhV
5e9///v9qjvr4noinocffnj/5SnlG8o04sn6eO+99y7oLuyzysI99dRTffLqzy2WEjMUSlCLU/tc
nDvuuKNXglgvyrVWOs7HrLZcZuX9wx/+cN7zKgNr7pFHHtnH/+Wf/bLPzrHSbvN3XukhvmPlb+NS
5O6///7uwQcf7CrtYXrt9T333NPXTVmHUmlJz/msop7yb+Op2yzlmTUPfRnGjzzyyBswkdfdd9/d
1+vhhx/ucR27N8yLK7p+MAm7Fmfpsd7MIvqidJVlrL9Iq+5XX0SSx0QZlE96Fj9Kqm9VOnW/+umw
31T44f3CdVLdlLXa8eWXX57JPVwcREyZW3IxLGOV3RjXFtNEWH1W/1XmWWTYfu1CUsVfaH5p6y9f
dRrbujCNeLLcKfdCFjweFtP6jTK3Y/S1116raswdq53d8Fy5zGNtuyu/fFor5FwCf37y9NNP9+Nt
Ur9scdEvpTecr4SxhQKhNKe5Jm0/rnyNGeG++MUv9rcuvfTS3uo51n8qTo5BIAgEgSAQBFYDgRDP
GVD1Naq3v/3t/cvbC3yvvfbqXWydr7WrrU8dU6p23nnnbtddd32D4jFGPCk83HPFVS9HBG6oCFGe
rIx7rq5+xx57bHfhhRf256U0g5DC45lPRldY1r92fynrZD1zlC6hxLm2H7WEInzooYfOC7/LLrt0
LKYEEWvTcn7uuef2zyhY7373uyup/kgJPvjgg+fFgc3QyvrJT36y22+//fp9UO94xzvmwst7TLlu
M2Hp1AatIuqcNVpa22+/fe8G5/ySSy6ZF65Np86/853v9OlVPZWBW/G73vWuOSWywi7lSGEdYrz3
3nv3iwOVnn5S+ddx7F6F1yd8ue2tb31r/+PyrC2uu+66CtIfhdE/uP695z3v6c/nBRhcIG8WGNq+
uNNOO/Xx26AwthfV3ra2L6pnS/jhuOOOO/ZtYgwop7bnno2oudZGrYgDA32vFRYm46/Inj2JVdYa
Xx/5yEd6stzG++AHP9iddNJJ/f5F/3dPmSeJfmQe4u5c7aCun/3sZ/vxU/H0Uc+V1f8edI6YTRJf
rIN/pelonCDC00T7iaf9tKPzEuRLGtqq6m9+GZJD/eKMM87oTjzxxHntap5AlkrGiOftt9/eu4+2
5Taeh3MYcnXCCSd022233Vwd3/ve986bt2HL/V9Za4zC+bLLLqsi9Ef4e87SaAxW3hb+lFeb1z3h
LOa0Yg7SD1tczDXDeaWslrDRDyvNfffdd26xwf9Xq/uO5pRJYr+nsVCuytpHHHs/I0EgCASBIBAE
tiQCIZ4LoI0MeUn7UANF/dVXX+0VD+TT/fVAPFUBIaPQcDttic+QeLICITAUIIoQUa+jjz76DcT1
mGOO6RU2ChhlHMGlxBQhK+Jptd0/xqWsfetb3+oVfMoNRR5Gt9xyS58PBYu7l3v2QpYCP0Y8lYfC
iHCoD4XSPiUKvvyQYvHlS3lzrh5kSDyRYoSQwnnnnXf28RFbCi7FjtWrRJndo0SyACIryCli4Nk0
0SeQ71a+9KUv9cqq+iImMKPwUUyHim0bj5JIWVY31j3lYPlw7X5ZL9o4izmnkCMMfpR4baC++oX0
5UW02ZVXXtm3mXLDeexe5W2c6B/S1G7K7d8RSLMdK4gLDPbcc8+elP7oRz+qJEaPPmqESAknXX0X
FshCSyilaX8b3PV1/QSpqD4ncf3BPrgvfOELcxZH/UzdkRyCTAz3RhsPxhhCUKIsMDz11FP7W/LT
D+x/LUKhHJ/5zGd6olt9VGDEE/mVD7xqPFba7fGiiy7q62AftPSMR7jqq3Apkae6GifCaq9JFk8k
G4FCsIXRN41V2NjLO02q/dSVa3u1nzkCoUQ8y0NCnZXRvNPuuxbOAoVyIuva0QKFsQabIvJD4um+
fM8+++w+nmv1lL4xXaI+9jnqj/quuVs+9sabSyp9Y0k5kHX3zC/KAdv2QzyIp/aXpjEpPYsO8NaP
jRPtb8+6PqgPlai3OUj5zI2Eldd8oQ3gVoJ46sf6mTDyueKKK/p8WCsJvGsB8Lvf/ZM+z4pfR3ha
mFDmilfP9A+EPxIEgkAQCAJBYEsiEOK5ANpWlq00UzBboXhQOFplun2+Jc4pUJSKEhY/ZaKQlgyJ
pzAIYqusC0vZogiWgkJBkxbr0VCQT8+KeFJWXXPJbIUSR0mDYcnYHs8x4kmBG0rrplvPKHLDPZ5D
4lkKYynCFRcGu+22W0+66x5y+f73v39OKa37LL+sgZNEWjBAckpYjSivYwQTzq2VrOLU0R5VpGro
DkcJpdQul3gqk/IOrVDagvWqVZqRUGER05Kxe9ISbmxMICqU/RLX6rGQZa3C6w/DMXjffff1+bWW
JQr7EBv9sMWsPmYlfitt+iyBxla5LmrfSru1ahfR0zeJhRVt3hIJ95XBOECWSpAr/bfNt561R22i
L7CODqXasUhuleeaa64ZBh29HhtnSD5iN020nzIN2++8887riZ5+2or5BW6tFdl8M2blvfrqq/t2
rfYZEk/pjpW79jLCmtx66619OuUl0Zan5j+E0KJISzArnPTatjaPaNuWyDvX54VtRVu184U5E17D
cptDLVxYWChBPMfaWrj2/nCPZ8V3VL9aqBur/yGHHNJ/eKiNk/MgEASCQBAIAquNQIjnFIRZFigV
Y8TBSvQkJXtKkiv6aEg8KTFIMuWo3KqGxNPKPBKlbsOfFfCy8ljxV7+h65oKUNI8K+J5/PHH9x+1
GFOgK2xZcxZDPClr3DqRIESg9lC2FspZiCdMDjjggFHsEQGKJ8WYIJ4saUNhOfCFyElSfaWIu3Bl
LUcGhlhrHxiy1IwJ5XPSB0BWwtUWHnAZE9ZCrnlFHsZI5tg9pJu1jNvhsL5FAowbgrhQpFuhLLMG
tb8iCI6Uc5Y0lkkETz+AYatYI4cIwlAQiCJ9+i1yzRLG6slddEgIEEfEkzWPUPIRJZjIo/ogN2qE
ovqP8aNPDuvvWl7GXwniOUa86nkdlU89i4jVfUcLE9qqFoiKeE5zr23js5wpgzIjnEi8eaV1nW3D
17n2GwtjjLDijdWf1ffjH/94JdHjOVwk8BCZUyf9kIwRT/1IGZSbNdViR8011RbqY2FpbF6qQphX
YKvPDctc+VpkJPqVtm9FXuKzdrbC7b6dL8zDyjnMwzX8WchLjP2xL3zz7oBhyTTiaeFB/60FiYpT
R/Oc/hwJAkEgCASBILAlEQjxnIJ2WXC84IeyHomnMnJrowhzK6VMD4knZRvRqj14w2NZpcqSMlTI
5VEKXhFPRGCMrAlbSjMrE5mFeLJY1L/qkBfSwlKrLpS8UvqlNwvxZL2hhI5Juf6WZWsS8RwqksO0
fDBE2ZS3hKLqHmV1iHNdq9uYaKfWpbMNsxLEE5ZDt+DKo5RxVm8yRjLH7nHPVN+q29ixPrw0RjzL
gimN+ukviIMFCG6prPkwQ7QQN+EWSzzVCbEsgiUNizUWF4q0CINElhurfiE8cQ+JJPopl/ASVi6k
aazu7iHAJbMST26iylikveLXES5cPsliiKe2sFBgDHGRN89xJ1bGMVJZ+TlOIp723U6bX9S5BPEZ
I56em8OqTkUAazHNWOVWi9jBBunk6qzMcKo2POyww+YR3cq3PVo4EGdSe7lf1uzlEE/lndYveFmU
TCKe5uZZiaeFQ+1Q81qlXUeLjOaYSBAIAkEgCASBLYlAiOcUtK1GU0paK1YFX6/EU/nK9RXZGhJP
JKxVlKs+w2N9MbF1r6wwQ+Ipn9YlrcI5FrFDzMgsxLO+otoSCnHtg9MeiyWerCyTiDECgXSUsrpU
4onIDPtKWTzbD6X0IMzwh2XMPtcxWQniiWy0VpY2HySf0lrWxjGSOXaPxROWXEMXkjHiqQ2GFiH3
yq3dx5ZaqTK0/WQWi2ebhnNjmXVd2bmKlhj3iAeromNZEY0N5KDmh9rDLB6yiiTPIrMSz3Ixb12K
K33EgmVL+cliiCe3TeO2+n6laX5YKvFEvCdZ6iv9Ok4invBWp7LiDomndvF86M5cex6rPsjVpHmp
ylCLLMO06nl7XA7xNA8j9bPIShBPY9A8PXTVr/wtOsEmEgSCQBAIAkFgSyIQ4rkA2hQGCnrtG6rg
5So5tp+twqz2cehq2+bHeoMIIRDlPut5fexmTNFq60ihtUJfVoc2bWRN2mXxLDfK4RdipedrnmVF
lUYRz5bQUpKkV1+1ra+H1kc4Ku9yrRwSTx8CaoUVpXUjK0V1uJ+R2yTlq7X8LZV4UnbVoSUutccT
kRsKK16L9/A5YlZuq+0z7YZcTbIUtWGnndfiQdsOwiObFN9232wRvDbs2L3yEGitvlWGYV3HiGeF
HR5rwaGspfW8SNZSiGe5EVdajvoR630J7wFtyprGkld14AWApLqvjYqgi2ehBSkac1Gv+JX+rMRT
32KdGvsYzNe+9rW+jJVfYVIkufIaO6qv8TmUsgQP77fXkyyeyCJMkPKhDOtvjLYWvApfH7OqcT4k
nsaTMTB0oa14RTzL26IslpW+eOXJUXs8i+RWGMfhGF0O8ayFjfIiaPMZ4rJY4jmWZpv+2DmX9dbK
OhYm94JAEAgCQSAIrDQCIZ4LIGqvDOWTFYBijZAhRlb23S/iSZGxZ26Se+QC2Szp8TTiSRmmWChj
SzwphNy+EGrkgXIlrHoK37pmSV985JPSTxFkJRHf/SKejupOOebihXAhKVwSKeEUwBJ7GsVlaUAs
4TYknspAsbf3qfJwj5Iqbimk0uROxzqoXvX/EofE06o/Cw6FjtXMtXLAhZLcEpqlEk9lgenQSklJ
hgGXvvoQi/yQ3faDJMpsgaPwtyfWB3HUjQskQmG/oTyGxJPFmSJZWCF+wokzSeDO+o14s9jBBK4s
obBvMR4jmWP35IUcie8rnPLQv4RlBWz/tc5iiKd0fOnUXuIiFcpbiyuLJZ7Ko97KU+mpr/47JCAW
TfQ5H3tqBWlzf9jehau+hvAgFfIwZ2iT2ussrVmJp7Dl+s6dWRoWIBAhC0utG/liiCeiJn47PvVN
Y2WpFk/lQijNj8hvzS8Wlcwvw6/aalfzjA9/6fvKpH/7KJm4ZEg8aw6xoFRheFQYz9qk2hT27nFF
Nr9J35xjHoF9ET77KY1Re4j1K2JhUdvKo2Q5xLO+ass9mEdH4WK+hEu7EDgr8fQ1W/Wt+aHqrbwW
IqRrHA5F3vp6+6GiYZhcB4EgEASCQBBYDQRCPGdAlVXBi9pL3s/XKWs1vYgnd0oK96QPtsyQzaKD
UEIpTJMEEaPEDT+sQ8k74ogj+rjKLA0feqHcliInTYoZ4kRxU29hKWmlBBfREZbC5l9pCFM4UbIK
nyojkoncVBjK+ZB4Ciuer++yNFGgkLLaj9WSIvEpz9Iry+o555zzBjcy7pSseOpaeUsTCWmFm2BL
1OsZ5ZgyPU0Q9NYyJiw8fckTWZc3fPy43bUkBDFjYW6/vKue2q7Kq99Rwn0Nt7V4IgkU+LLi1YIB
18NpwlJicUC+lQcL2NBaNkYyx+7JS5+Av/FS9dUH9Y1WuWY1X4jctGXXzuqtTyBw2rq+YtoSTy6x
CMJQfGSmMLPQIn9lVHeLD/qQxaXCsOKX+6Z/w9MKwgCz+vhQ+8wiiIUFafrBQftzRS6yI/xiiKfw
SARSV21lYcJ4bAnHYoinsrDaKqMFDv1bf0Dw7RGfJpMsnuLo14h5tb8jMtUSReHURTr6aztvmJva
vjIknuJqe/1Ku5ofzCkW/WDT4uFDRRawtHHhJrz+VGKMIp36V5VZebRh++9v9Cv9qxV5SRdhbmVs
vpCWOUifk37hYn5o591ZiadFDuO16tXOi7VdQd2HUn2kXQgahsl1EAgCQSAIBIHVQCDEc0ZUKav2
mtX/lRyLhnxSBjaKUJB99Ici0io+w/JTroRFEAl3UorcmLAqSHMaTrBkWWmJ11ha8oX5QuWj0LFQ
zIK9elDQWoI3lvdS7pUlxnEolHxfEFWfsny2YZR90sdjkHq4aiPYUVpbUumZepXIy79LYGWbRSj5
2mzo2jxL3Elh9BVtor6ztMukdNr7SO0s/aGNM+1c/9IP9Yf2X2RMi7OYZzUWWP9bwrmYNIZh2340
JMnDsLNeV/u3fWjWuNPCVbqTxi/iWYsBFXbSGBjLR7/SdgvNI+IaQwv1Hf1Lf5g0RsfKsJR7VVe4
LLdf6APGWUuQq0zmOH18KEXaV2pcDtPPdRAIAkEgCASBSQiEeE5CJvf7L10O90VSmrgpzvoBka0J
RsSQ++rYvrXF4oBgshANFdOy8tWevrF0WeP864XWIj0WLveCwFoi0BLPtSzH1pS3+YR1mwdCJAgE
gSAQBILAlkYgxHNLI76B8qv9etxCufQhVNwTubethsVwA0Ezsag+tMR1cTGWm7HEWF64zyKy3Pbg
78u83Orq/xuOxXOP5Z21LRIE1jMCIZ5bvnXsB+WiXF8Z3/IlSI5BIAgEgSCwNSMQ4rk1t/4CdWfB
sxfKXlIWTsTTnrbVcEtcoCgb6jFL5Zg77WIrwfXR/i8LAPC3d5IbYCQIbAYEfGBsuMd6M9RrPdeB
e2/2dq7nFkrZgkAQCAKbG4EQz83dvqldEAgCQSAIBIEgEASCQBAIAkFgzREI8VzzJkgBgkAQCAJB
IAgEgSAQBIJAEAgCmxuBEM/N3b6pXRAIAkEgCASBIBAEgkAQCAJBYM0RCPFc8yZIAYJAEAgCQSAI
BIEgEASCQBAIApsbgRDPzd2+qV0QCAJBIAgEgSAQBIJAEAgCQWDNEQjxXPMmSAGCQBAIAkEgCASB
IBAEgkAQCAKbG4EQz83dvqldEAgCQSAIBIEgEASCQBAIAkFgzREI8VzzJkgBgkAQCAJBIAgEgSAQ
BIJAEAgCmxuBEM/N3b6pXRAIAkEgCASBIBAEgkAQCAJBYM0RCPFc8yZIAYJAEAgCQSAIBIEgEASC
QBAIApsbgRDPzd2+qV0QCAJBIAgEgSAQBIJAEAgCQWDNEQjxXPMmSAGCQBAIAkEgCASBIBAEgkAQ
CAKbG4EQz83dvqldEAgCQSAIBIEgEASCQBAIAkFgzREI8VzzJkgBgkAQCAJBIAgEgSAQBIJAEAgC
mxuBEM/N3b6pXRAIAkEgCASBIBAEgkAQCAJBYM0RCPFc8yZIAYJAEAgCQSAIBIEgEASCQBAIApsb
gRDPzd2+qV0QCAJBIAgEgSAQBIJAEAgCQWDNEQjxXPMmSAGCQBAIAkEgCASBIBAEgkAQCAKbG4EQ
z83dvqldEAgCQSAIBIEgEASCQBAIAkFgzREI8VzzJkgBgkAQCAJBIAgEgSAQBIJAEAgCmxuBEM/N
3b6pXRAIAkEgCASBIBAEgkAQCAJBYM0RCPFc8yZIAYJAEAgCQSAIBIEgEASCQBAIApsbgRDPzd2+
qV0QCAJBIAgEgSAQBIJAEAgCQWDNEQjxXPMmSAGCQBAIAkEgCASBIBAEgkAQCAKbG4EQz83dvqld
EAgCQSAIBIEgEASCQBAIAkFgzREI8VzzJkgBgkAQCAJBIAgEgSAQBIJAEAgCmxuBEM/N3b6pXRAI
AkEgCASBIBAEgkAQCAJBYM0RCPFc8yZIAYJAEAgCQSAIBIEgEASCQBAIApsbgRDPzd2+qV0QCAJB
IAgEgSAQBIJAEAgCQWDNEQjxXPMmSAGCQBAIAkEgCASBIBAEgkAQCAKbG4EQz83dvqldEAgCQSAI
BIEgEASCQBAIAkFgzREI8VzzJkgBgkAQCAJBIAgEgSAQBIJAEAgCmxuBEM/N3b6pXRAIAkEgCASB
IBAEgkAQCAJBYM0RCPFc8yZIAYJAEAgCQSAIBIEgEASCQBAIApsbgRDPzd2+qV0QCAJBIAgEgSAQ
BIJAEAgCQWDNEQjxXPMmSAGCQBAIAkEgCASBIBAEgkAQCAKbG4EQz83dvqldEAgCQSAIBIEgEASC
QBAIAkFgzREI8VzzJkgBgkAQCAJBIAgEgSAQBIJAEAgCmxuBEM/N3b6pXRAIAkEgCASBIBAEgkAQ
CAJBYM0RCPFc8yZIAYJAEAgCQSAIBIEgEASCQBAIApsbgRDPzd2+qV0QCAJBIAgEgSAQBIJAEAgC
QWDNEQjxXPMmSAGCQBAIAkEgCASBIBAEgkAQCAKbG4EQz83dvqldEAgCQSAIBIEgEASCQBAIAkFg
zREI8VzzJkgBgkAQCAJBIAgEgSAQBIJAEAgCmxuBFSeeDz/8cLfTTjt1d9xxR4/ciy++2O28887d
DTfc8AYkX3vtte7II4/sw1999dVveD5245hjjunDv/TSS2OPc+/PEdhvv/26XXfddYvgoW0vvvji
7vXXX5/L75prrunb6brrrpu7N8vJGWec0cf7wZ/+YJbgiwrz4x//uE/7M5/5zLx4t9xyS3f++ed3
v/jFL+bd32gXn/rUp/r6GX+PP/741OJfcsklc2GFb3/vfve7u6OOOqr7zne+0/3qV7+al472FPbM
M8+cd38jX3z729/u63TppZeu22qcffbZfRkffPDBdVvG5RTsrrvu6s4999zuZz/72XKSWZdxr7ji
ir7tbrrppnVZvhQqCASBIBAEgsCWQmDFiedZZ53Vbb/99t3Pf/7zvg5XXnllt80223TPP//8vDpR
8pHON73pTf3vsssum/d80sWBBx7Yh18J4kmxPvbYY7vvf//7k7LbsPf32muv7s1vfvOql/+FF16Y
a8M777xzLr+v//HX+/vf+MY35u7NcnLSSSf18VZDwX7yySf7tD/xiU/MFUU/1D/1wxtvvHHu/pY8
efTRR/t+iKwvVZ577rlu22237euhLqeffvrUpL785T/qw77tbW/rEM367bLLLv34rXF56qmnziOf
2tOzk08+eWr6G+mhdlenCy64YN0W+7Of/Wxfxs04VwH9ne98Z1+/9Uz+p3UO7zfvEgs6Q3FP/1rs
ItwwnYWuLawpg7k3EgSCQBAIAkFgPSKwosSTdWSPPfboX35V2YMPPrjbf//967I//vLPftlR/r2M
kSPHtSCeF110UZ/3mDV2XoE34MWWIp7akhX64x//eMe6XbJRiKc+ywL6kY98pHvmmWeq+Fv0eM89
9/T98HOf+9yS82WxNY6MNccdd9xxbvFnLNEinqxMQ0HGKck1NltCviWJ5znnnNN997t/Mizeil+H
eK44pItO0ILlPvvs0z3yyCOLjrseIowtalW5thTx5CVi7J944omVdY5BIAgEgSAQBNYVAitKPH/4
wx/2L75vfetbfSVZJVlh2hVY7pjHH398H47Fk9If4rnyfWJLEc9JJd8oxHNS+bfk/eUST2Nqt912
68cRi9gBBxzQn19//fUTqzGNeFakCy+8sE+nXTjaksST9fVLX/pSFWfVjiGeqwbtVpNwiOdW09Sp
aBAIAkEgCCwDgWUTz6effrqzWu1XbrCnnXZaf3300Uf3iity6bm9VNyBWGOEtcfzlFNO6cOshMWT
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
CGBBLK1/AAAAAElFTkSuQmCC
--00000000000021a21005b3fe5b10--


From nobody Sat Nov 14 19:45:26 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D8F403A105B for <webtransport@ietfa.amsl.com>; Sat, 14 Nov 2020 19:45:24 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level: 
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 8w_35sdKQ7vB for <webtransport@ietfa.amsl.com>; Sat, 14 Nov 2020 19:45:23 -0800 (PST)
Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) (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 D8CEF3A105A for <webtransport@ietf.org>; Sat, 14 Nov 2020 19:45:23 -0800 (PST)
Received: by mail-pl1-x633.google.com with SMTP id g11so6439988pll.13 for <webtransport@ietf.org>; Sat, 14 Nov 2020 19:45:23 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=from:content-transfer-encoding:mime-version:date:subject:message-id :to; bh=udI7nvyjdKG6DYmBS8HkUWEnlWqGbSOAlEQA3U0RAIo=; b=Vtodolev/mln5tZ4eKj6l4TvMR/MCQKe3ajAiKVuirwBSxYGx7s89C0q3RckOHRu4U PyE4y067KMjzZuJCHv1CafBNtkq1K4ot1XK+IDj+5BPdK/Kb87e64YavBbLtZCn7MkaT GrdXdZOnvAnw1Y3IFuIZv58wTs/XQGFQzAaQPOBhx23tg0rndldzyFwh2AYRvFwTlJGe TgQ6tufJyPE05CgkdvQ8culOye2A3csIlhJpsqJj/xxzgdRye56AQvC4Dh17oWA/NwIo hXlVkfSQpQwYPYFf4apMq9NAG4O0q+9L4bc7nfv1v2aJpBxuIscQ3gFF39mfyVn7IiMA fsuQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:content-transfer-encoding:mime-version:date :subject:message-id:to; bh=udI7nvyjdKG6DYmBS8HkUWEnlWqGbSOAlEQA3U0RAIo=; b=HOjj+MzksaHK86W+TcbTMpRUNSLZoyzSklNdEeqMh+1LjFBpgEMsoe+D97dhmf5JHy cURjgiXF6xkIE/Wqo5ALIM//Ta65Knmre2S00AKtzq0gTzkeDAZPTCj3JoHCg6MlIU7p 7Dq26kE+q65sHswssRj65V9y2YmQnGVlZOWmvMue9JJ8lgeHJacnTcFW9cXvqSt7rJgq XZF9N7dnmTYayiJp9zbBOfLaI14xrJR77tWNZvdrqh7Cn6gf35T/tRtagFT+64X3t1mf /woZPhGzhT/QZLlMXj2ScoSSR8yme04CEjSUetzuszDymRCmdzU5FgkOI85Q5o/jRN5I dFGw==
X-Gm-Message-State: AOAM532DDovJlLO8NLdyI6vtXI1taeIhDk0kt0G73ZZXKpiUpJkGmhsl jVlJDIDLfgCP10dw4Q2AE2O1snM+KqqDXQ==
X-Google-Smtp-Source: ABdhPJxR2B6Ak+dv0bbHhsDPBJPXDNhJ/74dX3XN1CdofQ2Iw2tH8Vy1cOTxwa5qT7OALfF7cK1pSg==
X-Received: by 2002:a17:90a:f314:: with SMTP id ca20mr10583920pjb.191.1605411922768;  Sat, 14 Nov 2020 19:45:22 -0800 (PST)
Received: from [192.168.1.152] (c-71-227-236-207.hsd1.wa.comcast.net. [71.227.236.207]) by smtp.gmail.com with ESMTPSA id t9sm16466230pje.1.2020.11.14.19.45.21 for <webtransport@ietf.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 14 Nov 2020 19:45:22 -0800 (PST)
From: Bernard Aboba <bernard.aboba@gmail.com>
X-Google-Original-From: Bernard Aboba <Bernard.Aboba@gmail.com>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (1.0)
Date: Sat, 14 Nov 2020 19:45:21 -0800
Message-Id: <B9C058D7-F780-4CC8-ACDB-F5CB636B181C@gmail.com>
To: WebTransport <webtransport@ietf.org>
X-Mailer: iPad Mail (18B92)
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/hTYIGrblFT6HuCXzPArCP3uZXfU>
Subject: [Webtransport] Volunteers?
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 15 Nov 2020 03:45:25 -0000

For the IETF 109 WEBTRANS WG meeting we will need volunteers for note taking=
 and Jabber Scribe. Any volunteers?=


From nobody Mon Nov 16 01:47:02 2020
Return-Path: <mnot@mnot.net>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 26FC63A16A1 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 01:47:00 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=mnot.net header.b=FFyNiuHu; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=p62EVByj
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 NMyZdlqVyD2V for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 01:46:58 -0800 (PST)
Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5B3143A16BD for <webtransport@ietf.org>; Mon, 16 Nov 2020 01:46:58 -0800 (PST)
Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.nyi.internal (Postfix) with ESMTP id 3C8485C003B for <webtransport@ietf.org>; Mon, 16 Nov 2020 04:46:56 -0500 (EST)
Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Mon, 16 Nov 2020 04:46:56 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mnot.net; h=from :content-type:content-transfer-encoding:mime-version:subject :message-id:date:to; s=fm1; bh=hB9nPglccJaX/hPj3UQ1mHcq9d9P2nzRd jSJSzrw8dU=; b=FFyNiuHu/ApdvULtjGZ+0ZrvepWVYPqCdMgNCncMki4WilORu CbFGYECHibqpJxkDfyq4TUGiz8cqd5VaMdUO4FILVmAPiPuz+423dfbOnVJeHjoY 2GWHTMVA7IvT5pC/zmlXXm7Rg2w6/EziGotfOf4RBa5kYxEjj2vJ+UT46ksa9qM9 sP/tCskmCkO5+Mee6KUBgUScsEvlQK61FXklczHRrVHLrL2y3Kz29MEaBgRHzKuh lztASIHvJJCzSp9TM52U9HuNWDZsbGzx+33F1hkdtWolLN4fHTRtPCQVJYHfdUiH NV/DePVP2O6EP/fuCOtbJ12Uo1Rm+JC2dJ1kA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:message-id:mime-version:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=hB9nPg lccJaX/hPj3UQ1mHcq9d9P2nzRdjSJSzrw8dU=; b=p62EVByjUJ3z828gsoxJRy gwNJAJz/JnaS4jh+/aBKmeoWm2CyU+05DPmFHdcNt5OZ5W9VvHM/eKwxvTZX+yYh BcVzT9Ci8Ei6oVVBZEnL8jY1Drp01m0sU/ZV3NzBjoJPKkm0iCcbbD0VHO22JIIf dF+u+41Ar5ewKqPTsBa7qU2Rl+3xyJgwwgESAIVZ8tGzgZJpdB0IQNcmyLp8cW0q QK3jQQb60qtzWJYP2S71Oo9pHlA+WC3UsE1AFDMHk12PAAx7+wS2eJrtuCJxXYu5 7RdxzWaklCIQ/ZuVOlCIn3GPxswhW0vpT47/xmYHnnTQtI1gLi3GjFljZCnbuyXw ==
X-ME-Sender: <xms:j0qyXxSS0BHzyoAxTufiYdSsV-DGKBLZW_3c7E2t20zI0DWD1HkUKQ> <xme:j0qyX6xGckN2qOtv0X5p3V7lmKDq6r5anddgDPWgtwhOeUU5HYgAfZhuTAwFr8zBs ZUDMMd1o5ktoCMv3g>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrudefuddgtdelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhtgfgggfukfffvffosehtqhhmtd hhtddvnecuhfhrohhmpeforghrkhcupfhothhtihhnghhhrghmuceomhhnohhtsehmnhho thdrnhgvtheqnecuggftrfgrthhtvghrnhepgfevkeeiieegleejkeefvdffuefflefhud dutdetfeduleefffejuddtvdegfeffnecuffhomhgrihhnpehmnhhothdrnhgvthenucfk phepudduledrudejrdduheekrddvhedunecuvehluhhsthgvrhfuihiivgeptdenucfrrg hrrghmpehmrghilhhfrhhomhepmhhnohhtsehmnhhothdrnhgvth
X-ME-Proxy: <xmx:j0qyX233FqlQ_Z24rPJH7l23nH1jgQl93S5jNuBtfPXMj3uzayWkcg> <xmx:j0qyX5CzcoSx9Llgqp2UIKs7R_kvmzgaUuofvEuh-pamL5PzCWNkXg> <xmx:j0qyX6iYLRcM9uPobk_E3Nuz01v5jiCotnCvely80uR_7VI1qw0xxA> <xmx:kEqyX-agds86JWfZwlxtEcviF8C9cali6RInocE66EflgQE2GFubvA>
Received: from [192.168.7.30] (119-17-158-251.77119e.mel.static.aussiebb.net [119.17.158.251]) by mail.messagingengine.com (Postfix) with ESMTPA id 443573280064 for <webtransport@ietf.org>; Mon, 16 Nov 2020 04:46:55 -0500 (EST)
From: Mark Nottingham <mnot@mnot.net>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.4\))
Message-Id: <0E2D3F5B-4F1D-494A-8660-02201C7B9F28@mnot.net>
Date: Mon, 16 Nov 2020 20:46:52 +1100
To: webtransport@ietf.org
X-Mailer: Apple Mail (2.3608.120.23.2.4)
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/ydizmwRowLOw__HOpdqPc8DINdk>
Subject: [Webtransport] CDN support
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2020 09:47:00 -0000

[ Since meetecho seemed to be having problems (I can't get back into the =
meeting, and jabber seems to be perma-segmented), I'll say what I queued =
for here ]

I see that there are questions as to whether CDNs will support =
WebTransport.

It's important to understand that from a CDN's perspective, WebTransport =
is very similar to WebSockets. If by 'support' you mean 'proxy =
connections 1:1, and maybe do some access control and routing on them' =
-- yes, CDNs can support WebTransport (whether they will is of course a =
different question).

However, if you want something more sophisticated, like caching or =
fanout of messages, WebTransport doesn't provide anything for a CDN to =
"grab onto", in terms of message delimitation or semantics.

When WebSockets was created, the assumption was that a 'thousand flowers =
would bloom' and eventually the market would choose a few winners, and =
infrastructure could focus on optimising that. That hasn't happened in =
the intervening decade+. I have a few suspicions as to why, but that's =
probably a separate discussion.

So it would be very good if folks who are asking for CDN support to be =
super-specific about what they want, and also to be realistic about what =
they're likely to get. The bargain of WebTransport is that it's a =
protocol construction toolkit -- just like WebSockets -- where you build =
everything yourself. You can't have it both ways, unless someone does =
the work to build the semantic 'handles' on top of it in a way that =
infrastructure can use -- and once you start doing that, you might find =
yourself re-inventing HTTP.

Cheers,

--
Mark Nottingham   https://www.mnot.net/


From nobody Mon Nov 16 02:06:07 2020
Return-Path: <lucaspardue.24.7@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 25FAB3A16C1 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 02:06:06 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.848
X-Spam-Level: 
X-Spam-Status: No, score=-1.848 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 vNu9SA09oXOZ for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 02:06:05 -0800 (PST)
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com [IPv6:2a00:1450:4864:20::62b]) (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 F03293A16BD for <webtransport@ietf.org>; Mon, 16 Nov 2020 02:06:04 -0800 (PST)
Received: by mail-ej1-x62b.google.com with SMTP id oq3so23555699ejb.7 for <webtransport@ietf.org>; Mon, 16 Nov 2020 02:06:04 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=u88al560IQNsC5Vj/4Q3sxMY0x99YAudf+bBhsAXPao=; b=kDWNorKgHhzCZLSprVN4GGGQwmo77QIzG9Dty1SRgTA8fVdVnHtsCgfCRbwbZ77J9B ocegtGz3OkjQfG7IMZxBeytZ2PeiSDiRJkJbRwVhTiDMFyxQ7CInXu28zBwBqicudREK LCHwiBQcDK90h19cVq4+sqEKESrwSF6uB1zl6D//Kbq0pyxD4StKP7A/ta0TGOZznnBY ZJ/PyZSAc/RzsEIH6DRs1Tij51IYuuZeoMRHVIhuhBvtiSzBia9r5zJ2zcrj0unVXA+3 QhIE3qo2dwa77Pa5a0EegsIO6xVqyC+cRnGdZcJ2f1uiTQDhbxaQmgGTuzvV4F1/JPGM 03lQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=u88al560IQNsC5Vj/4Q3sxMY0x99YAudf+bBhsAXPao=; b=GLT/GHRyrFIqtRzaw/fGlf7NvwE5h2B3C9jTN/vlk3Z2dHt8e5bNfdGBGoxcYOBRQ0 yqv7/PlJGeH0pgclGMnvS5aPf0u9kbHXfWPziARQG+BZCUXw2blyTcJgKKmYAB51EYdj KghWssUuQNwU3zCjOxRCk3OVgmEhr0cCRpPBKrZ1WXM6cBFdECKPLZWcsEcRV+RuXFyS 3+34cYyhJTnqPMKJFR+WZ5FUd6AaMP1wSq+pdHXT7njn3SXAFH12xOizWMIkRjbMnBfC 3Tr93ccNbpw3bmGaFGMth3W4oscIXfFx3TBmW/mlpzG7r98sk8wRth2Vbq2D6rSJTHuq Ovbg==
X-Gm-Message-State: AOAM533UwRH6ig8aqZUHF+mdE6njfBUknVi8KMCjteT0zkGHdNojw6Cg zRXomjfy532NLjSlxCAm0Cu4mhTnFypkPEbkwuU=
X-Google-Smtp-Source: ABdhPJwyKO15maLpt/zt8YaYmzMJKP4O6IfphSLDpMdYFn/O9JTZt6l+VykHR5tATXTEWPJ30mYTvpwsGkU76gJmKk8=
X-Received: by 2002:a17:906:5e45:: with SMTP id b5mr13768715eju.46.1605521163115;  Mon, 16 Nov 2020 02:06:03 -0800 (PST)
MIME-Version: 1.0
References: <0E2D3F5B-4F1D-494A-8660-02201C7B9F28@mnot.net>
In-Reply-To: <0E2D3F5B-4F1D-494A-8660-02201C7B9F28@mnot.net>
From: Lucas Pardue <lucaspardue.24.7@gmail.com>
Date: Mon, 16 Nov 2020 10:05:53 +0000
Message-ID: <CALGR9obpcjjCLFq1t=NBX2XAmFYcFuAeFHnRY0xubrRd5AR6gg@mail.gmail.com>
To: Mark Nottingham <mnot@mnot.net>
Cc: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000009b60e605b4368649"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/-vBfucO4xa0w-s6bL-uqMDaeS6g>
Subject: Re: [Webtransport] CDN support
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2020 10:06:06 -0000

--0000000000009b60e605b4368649
Content-Type: text/plain; charset="UTF-8"

+1

--0000000000009b60e605b4368649
Content-Type: text/html; charset="UTF-8"

<div dir="auto">+1</div>

--0000000000009b60e605b4368649--


From nobody Mon Nov 16 02:10:41 2020
Return-Path: <kixelated@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A9E9D3A16C2 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 02:10:39 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 JVwOF5LLH7q8 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 02:10:38 -0800 (PST)
Received: from mail-oi1-x22d.google.com (mail-oi1-x22d.google.com [IPv6:2607:f8b0:4864:20::22d]) (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 58E193A16CF for <webtransport@ietf.org>; Mon, 16 Nov 2020 02:10:38 -0800 (PST)
Received: by mail-oi1-x22d.google.com with SMTP id k26so18247186oiw.0 for <webtransport@ietf.org>; Mon, 16 Nov 2020 02:10:38 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=f2mpnegUmOijmYuRlaDd0TiS9JYNd1BzbqPsr4lb6kA=; b=reuFoR3UP5L6JsdgjjynbirZR2zCnJYZPILWDzIod2fOR9Z7F5zmebWH+A1y9frvAm +/z9ZLQiJ7ewN4sQ/il09G2sjMnDQ6VzPYDGBZZFO25sY5E2yi7jEV4ovbHqATsGsBIw hw1ycwWBnIbZNSWzK2aAM/cJ03wLsbmMerKnBKuk3Ye66zkHhMtqSLT8Ul6YlZIU0Xg/ mBAjwORBrG7xMOQ5euvJbD4Rh/PLyCwijwXZLWU3kJFSoxzLYfdtcRvd/2iwMDfifjr2 nYzVNIuTSXu16z8gCa4hvrOqXHcc9Qz239lt/WC4vI5ejZUbwhTLtJvebF1kBpa8fGwc 4hAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=f2mpnegUmOijmYuRlaDd0TiS9JYNd1BzbqPsr4lb6kA=; b=dhB4QAMyUQyRl+hWVNCV91Xuibbtj9L9Ok1f/mMbzW3Gv67HfuzZ5vsz4atyvwHD5z XHzyM4jT72pe0GC780X2FcdD2TEdPo9ArJST5O9oGSLR+MpK1AV+Ov4svHP7+i79t8cF PUshqGfVOL9EBVUsW91Jb3x1IBKMFZYuJLZejhwDyQbQ3z39NR2kn2gaC04SYeupZ890 IksVfiGhU8yuXzk4Dh9WxP0k/ksNSkinj79cIvYzNPTV8msX9yfLsy+XkmQ7rc3Q3RPK GzKtp5U3s2Y2n1aSQJymEzTlEyOGuzlmWyE66RYyR/630PySnXd8MngE1zF873pd1fYg ucqg==
X-Gm-Message-State: AOAM532dZIaubbrbusMRrozME9CSVORmMUyScYP86HTFEf1R+RcWyuzo kEk9VxjKkhMREcQLUhhYAWbBK3Ms/8tPqaB9kbo=
X-Google-Smtp-Source: ABdhPJxyBOkdTrYKEX4WKqkWJZ+r/s4bA+DYoWQifVz0uwN0oHzbdRNhBh0KQV/Bq5HCAtdOJTHZOfbsmeG5p/qnTdg=
X-Received: by 2002:a05:6808:d0:: with SMTP id t16mr8674032oic.79.1605521437587;  Mon, 16 Nov 2020 02:10:37 -0800 (PST)
MIME-Version: 1.0
References: <0E2D3F5B-4F1D-494A-8660-02201C7B9F28@mnot.net> <CALGR9obpcjjCLFq1t=NBX2XAmFYcFuAeFHnRY0xubrRd5AR6gg@mail.gmail.com>
In-Reply-To: <CALGR9obpcjjCLFq1t=NBX2XAmFYcFuAeFHnRY0xubrRd5AR6gg@mail.gmail.com>
From: Luke Curley <kixelated@gmail.com>
Date: Mon, 16 Nov 2020 02:10:27 -0800
Message-ID: <CAHVo=ZndafETg7u_duhKCw1Bh8=L3bbizV_YEJwhTVWQGeAqGw@mail.gmail.com>
To: Lucas Pardue <lucaspardue.24.7@gmail.com>
Cc: Mark Nottingham <mnot@mnot.net>, WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000f77e9805b4369652"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/086Hz1DRpf-F86KY3yVHQdNxQC4>
Subject: Re: [Webtransport] CDN support
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2020 10:10:40 -0000

--000000000000f77e9805b4369652
Content-Type: text/plain; charset="UTF-8"

Yeah, there might be a misconception that HTTP == CDN support. All of the
WebTransport protocols are equally difficult for CDNs to support as they
are designed for 1:1 sessions and have no caching/fanout semantics like
HTTP.

On Mon, Nov 16, 2020 at 2:06 AM Lucas Pardue <lucaspardue.24.7@gmail.com>
wrote:

> +1
> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--000000000000f77e9805b4369652
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Yeah, there might be a misconception that HTTP =3D=3D CDN =
support. All of the WebTransport protocols are equally difficult for CDNs t=
o support as they are designed for 1:1 sessions and have no caching/fanout =
semantics like HTTP.</div><br><div class=3D"gmail_quote"><div dir=3D"ltr" c=
lass=3D"gmail_attr">On Mon, Nov 16, 2020 at 2:06 AM Lucas Pardue &lt;<a hre=
f=3D"mailto:lucaspardue.24.7@gmail.com">lucaspardue.24.7@gmail.com</a>&gt; =
wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0=
px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=
=3D"auto">+1</div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>

--000000000000f77e9805b4369652--


From nobody Mon Nov 16 03:16:24 2020
Return-Path: <lucaspardue.24.7@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4027C3A0A16 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 03:16:23 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.848
X-Spam-Level: 
X-Spam-Status: No, score=-1.848 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 Vngc9k-ZCL25 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 03:16:22 -0800 (PST)
Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) (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 CF5A63A0A10 for <webtransport@ietf.org>; Mon, 16 Nov 2020 03:16:21 -0800 (PST)
Received: by mail-ej1-x630.google.com with SMTP id f20so23858024ejz.4 for <webtransport@ietf.org>; Mon, 16 Nov 2020 03:16:21 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=p8yKhUk8GaskbJFGfTyzvsD92wCHY8F8CYz88ZXRnK4=; b=iDfLk9LRb94fYMlTAtdXYrUNSK3jX8TEOE2jrtHLFXO0tW71nyhYUn9sUpDGZ6STIw knwej2JGuyS60JQXs+SkSENy+uUyKGG0VNuM/jn9ZNcCNrwFchswU62RKX32F8asBVsE LcSEaNmNXLbSmzFZZOZH9XIi93YQIdoO4vpRCqBfdkXifY4TXvZRqo/vFceQ3UYcH8Ql ueqesxsS0b8xUQ/dvISyHPlH1YjzN9jnA1neExIRjufHe/Whv4eQ8MX1RJU9pHWz3lgD tZr/s58Nsq1oxUycY4cWqdyr3BecFlcJq6XQzhc7r4eJmsY1G2Vke6/cs/jSgGbpxFDV NEJA==
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; bh=p8yKhUk8GaskbJFGfTyzvsD92wCHY8F8CYz88ZXRnK4=; b=LsMg9cpdlhezPPqXPZwQzfiFloSeDCSkvIli48mcrsmGRbUoUB5ndzgv2y8dc27Kch 8fwQh5qXhUpIPr20OxzBmCaZ20P1RnqIKLcX4FTvTvM5AiDeVNIhtPx/04alPAS2fhru Xtp28zDJLuopzIk6mc1PZUq9kJLkC72U4W16iXT40DXnXJbZglQuCt+o6Lj+VD16eEe4 kQ77mwC1U++iMYUeYwtcC0vq9yraZ/zF9ShOXehdGWc4gXPbXVODgmMOlA+qxz629tX5 dquW/ItRxNHZQauaSPihxovC92fvAyU4ijd/HjVviaKKmwAHcX4O31aI69u5OyRS2PgS kf2A==
X-Gm-Message-State: AOAM530b+DHOSWQbouyiuGsDyxdsKCo+0cfaCgAeHe/0LTqr9rWpU5I8 YaZJFNBLeykCwtZTOPm7SGkEejOqkPmDMeXNo2YuCn5LQe8=
X-Google-Smtp-Source: ABdhPJzGRNndMNrJ7h7C29ukIAnve2sZ5n6moPpreUYh4+xdv1kUUOxhvnOW9YCYKRfrVsaycSL0jI/TO/KqY/674tQ=
X-Received: by 2002:a17:906:5e45:: with SMTP id b5mr13987692eju.46.1605525379554;  Mon, 16 Nov 2020 03:16:19 -0800 (PST)
MIME-Version: 1.0
From: Lucas Pardue <lucaspardue.24.7@gmail.com>
Date: Mon, 16 Nov 2020 11:16:08 +0000
Message-ID: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com>
To: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000ed236e05b43781f5"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/w5Zhp6sbk1D31Q7x3KswQ9_Ikac>
Subject: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2020 11:16:23 -0000

--000000000000ed236e05b43781f5
Content-Type: text/plain; charset="UTF-8"

Hi folks,

To follow up on one thread of discussion during IETF 109. To over simplify
what we've heard a few folks say, they prefer QuicTransport because it
simpler and they don't need pooling.

I'd like to push more on this, what is the measurable complexity of HTTP/3
over QUIC plus a new application mapping that needs to be defined? Let's
isolate pooling as a variable and ignore it.

Victor mentioned his proposal for a unified header semantic across all
transports, this is
https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
Taking a closer look at it, I have some concerns that I added as comments.
HTTP has semantics for a reason. If QuicTransport is going to start
borrowing HTTP piecemeal, I really wonder how simple people might feel it
is. I think it's important to avoid something that looks like HTTP but
behaves differently. Is it really much of a stretch to just do HTTP/3 but
give it a different ALPN so that we avoid problems related to
cross-protocol pooling?

Cheers,
Lucas

--000000000000ed236e05b43781f5
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hi folks,</div><div><br></div><div>To follow up on on=
e thread of discussion during IETF 109. To over simplify what we&#39;ve hea=
rd a few folks say, they prefer QuicTransport because it simpler and they d=
on&#39;t need pooling.</div><div><br></div><div>I&#39;d like to push more o=
n this, what is the measurable complexity of HTTP/3 over QUIC plus a new ap=
plication mapping that needs to be defined? Let&#39;s isolate pooling as a =
variable and ignore it.</div><div><br></div><div>Victor mentioned his propo=
sal for a unified header semantic across all transports, this is <a href=3D=
"https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/fi=
les">https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/=
4/files</a>. Taking a closer look at it, I have some concerns that I added =
as comments.  HTTP has semantics for a reason. If QuicTransport is going to=
 start borrowing HTTP piecemeal, I really wonder how simple people might fe=
el it is. I think it&#39;s important to avoid something that looks like HTT=
P but behaves differently. Is it really much of a stretch to just do HTTP/3=
 but give it a different ALPN so that we avoid problems related to cross-pr=
otocol pooling?</div><div><br></div><div>Cheers,</div><div>Lucas<br></div><=
/div>

--000000000000ed236e05b43781f5--


From nobody Mon Nov 16 04:26:17 2020
Return-Path: <kixelated@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id ADAEF3A0E08 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 04:26:15 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 K0cqaPlqHHSC for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 04:26:14 -0800 (PST)
Received: from mail-oi1-x22e.google.com (mail-oi1-x22e.google.com [IPv6:2607:f8b0:4864:20::22e]) (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 2308A3A0E07 for <webtransport@ietf.org>; Mon, 16 Nov 2020 04:26:14 -0800 (PST)
Received: by mail-oi1-x22e.google.com with SMTP id t16so18514756oie.11 for <webtransport@ietf.org>; Mon, 16 Nov 2020 04:26:14 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=YJ2LEXCkBA/hFOR+VQXKxrrEqzuRc2JeSf/0OS8R2Vs=; b=JH6GUJ3YDUM97sLB/NbkOUXDG2qJSfdJ1RNKVelycWBfGsOGFzA5TUbX6IxRpYt78i bvTUTAh+PlNc+fVtVblCmSvsQQx+QKvFg1jQmKURCQPhIYdsT029uf7RAJqeUQAMY9pV drS9BYvqTuXMyNQuTSLhO+MyDv5nlD8x00FeYN1Z5t10fP58+FSKFuDbA5EyfiOxIpGO 9EalCEuO0sUN4/hKqBU2kOjxpxy+gN0y/xepObbZKlhY7rQI8l7v5NET5JWG0xSYKbzR sdsnkjWn+9PdFaG+gobTev+OtscUJd6RYtVXP9lY5IfrGYFrUG9KU5c9IOowVPq3ZCM8 N3cA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=YJ2LEXCkBA/hFOR+VQXKxrrEqzuRc2JeSf/0OS8R2Vs=; b=JyhtG4kRy/fj6vcw8/0cCz3xJA15zoGssAMvJ03KEySO3VioIPeF6xrzMar290Gpbq Be6PqeQBLHTRCgDvoS3hk5JFH6HPeh2VvTc2ry5/oa8KRwhYbn6ec6c8XBoX/3I1grkc AmMlEYA15ZJYEF4AKhqrmmKMd5U/wKnQL7Pjdd2HOzUmlCIBkUartsW3OX5z2/B+uNl8 f14YUZwafnwkpES872FxhWYz3+dC7tEsH8GSUZJ2CS/JNg7iFATL8kIxXDBvdVoYsCow gGBSyZRxgczZE7qbLmkXtOA407+jxWOWXJ5dNTjO2rpcK2nHgE3bAlOCl8JLHMRU5G+G OGZg==
X-Gm-Message-State: AOAM532S8WX/hMZdPEa3TqGm9nHHPOkb9Ay0KJRg1XcOYG4eFiUcl7rw /Hk1/7JnVxbdUw/haKLDLcIaykvNwkqvR1a8ltkx92VVzNrCQg==
X-Google-Smtp-Source: ABdhPJykgADNvo4dzag0ZOCjTmXnBPm6aAtlJ8Bnxz62MKjnKNohbOvBToESjfK+vROUMt6CUfbPx01HQhystRDs+d0=
X-Received: by 2002:aca:c787:: with SMTP id x129mr9228834oif.168.1605529573438;  Mon, 16 Nov 2020 04:26:13 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com>
In-Reply-To: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com>
From: Luke Curley <kixelated@gmail.com>
Date: Mon, 16 Nov 2020 04:26:03 -0800
Message-ID: <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com>
To: Lucas Pardue <lucaspardue.24.7@gmail.com>
Cc: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000e6b76705b4387b2b"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/T5K4iPkOUbyj0lIjZV3Abt3GcuI>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2020 12:26:16 -0000

--000000000000e6b76705b4387b2b
Content-Type: text/plain; charset="UTF-8"

Just to clarify, when I say "QuicTransport is simpler" I really mean
"QuicTransport has greater interoperability". You can take any QUIC
implementation (+ datagram extension) and add a thin layer to support
QuicTransport. It's a nice layering of protocols and it's something that I
want to see in general as QUIC replaces TCP.

On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <lucaspardue.24.7@gmail.com>
wrote:

> Hi folks,
>
> To follow up on one thread of discussion during IETF 109. To over simplify
> what we've heard a few folks say, they prefer QuicTransport because it
> simpler and they don't need pooling.
>
> I'd like to push more on this, what is the measurable complexity of HTTP/3
> over QUIC plus a new application mapping that needs to be defined? Let's
> isolate pooling as a variable and ignore it.
>
> Victor mentioned his proposal for a unified header semantic across all
> transports, this is
> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
> Taking a closer look at it, I have some concerns that I added as comments.
> HTTP has semantics for a reason. If QuicTransport is going to start
> borrowing HTTP piecemeal, I really wonder how simple people might feel it
> is. I think it's important to avoid something that looks like HTTP but
> behaves differently. Is it really much of a stretch to just do HTTP/3 but
> give it a different ALPN so that we avoid problems related to
> cross-protocol pooling?
>
> Cheers,
> Lucas
> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--000000000000e6b76705b4387b2b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Just to clarify, when I say &quot;QuicTransport is si=
mpler&quot; I really mean &quot;QuicTransport has greater interoperability&=
quot;. You can take any QUIC implementation (+ datagram extension) and add =
a thin layer to support QuicTransport. It&#39;s a nice layering of protocol=
s and it&#39;s something that I want to see in general as QUIC replaces TCP=
.</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail=
_attr">On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue &lt;<a href=3D"mailto:l=
ucaspardue.24.7@gmail.com" target=3D"_blank">lucaspardue.24.7@gmail.com</a>=
&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div=
 dir=3D"ltr"><div>Hi folks,</div><div><br></div><div>To follow up on one th=
read of discussion during IETF 109. To over simplify what we&#39;ve heard a=
 few folks say, they prefer QuicTransport because it simpler and they don&#=
39;t need pooling.</div><div><br></div><div>I&#39;d like to push more on th=
is, what is the measurable complexity of HTTP/3 over QUIC plus a new applic=
ation mapping that needs to be defined? Let&#39;s isolate pooling as a vari=
able and ignore it.</div><div><br></div><div>Victor mentioned his proposal =
for a unified header semantic across all transports, this is <a href=3D"htt=
ps://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files"=
 target=3D"_blank">https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-=
overview/pull/4/files</a>. Taking a closer look at it, I have some concerns=
 that I added as comments.  HTTP has semantics for a reason. If QuicTranspo=
rt is going to start borrowing HTTP piecemeal, I really wonder how simple p=
eople might feel it is. I think it&#39;s important to avoid something that =
looks like HTTP but behaves differently. Is it really much of a stretch to =
just do HTTP/3 but give it a different ALPN so that we avoid problems relat=
ed to cross-protocol pooling?</div><div><br></div><div>Cheers,</div><div>Lu=
cas<br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>

--000000000000e6b76705b4387b2b--


From nobody Mon Nov 16 04:49:18 2020
Return-Path: <lucaspardue.24.7@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2AA2F3A0E61 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 04:49:17 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.847
X-Spam-Level: 
X-Spam-Status: No, score=-1.847 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 l0Jk_KR8RD4M for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 04:49:15 -0800 (PST)
Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) (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 397E63A0E5F for <webtransport@ietf.org>; Mon, 16 Nov 2020 04:49:15 -0800 (PST)
Received: by mail-ed1-x534.google.com with SMTP id e18so18586264edy.6 for <webtransport@ietf.org>; Mon, 16 Nov 2020 04:49:15 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ZWNKS+LYB5cf5P/lZh1Gje4OUWaxbptiSACS6LmOnDc=; b=stjpMLn6ShVX1ao5rpxwwLUaQjC3R6jGTdVErqvlI1wKGgJ7z7fJiOUMm1fEt4g93s Sx3nGH7fMpH8LhxF3jMil1B5SBq7mj7mtjqKxhYP6PwHH2tpdhQ7MgAn0LK89eaoApc2 d2+1cfXYVdQjxEpfm34NDbcgIQYCc+2rCIY7paPoioIaXRuL0z1E0vKdmIEZ/5i0HJq+ 1Rph8lkhqEgyKNvcGSaoC5QWq5d+Hmy2MkGAoXRX3Eu0s/zMGtq4QvCb52GYQbGD78Uq CzkoBanow1nMT1sNtgNCkj+cnXZCnA3i7cXUvhLjB01HHq2soizmwEs1w9mbgZFbGzBf rtRA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ZWNKS+LYB5cf5P/lZh1Gje4OUWaxbptiSACS6LmOnDc=; b=O01uu+34RAfVAvChCrqMXQyPZEQAN4ffWzu1sF7kM3I6wJgHa+noyGpXK2L5dvlaGf jU5PaPKyqtw32LyEOMUcn04c4dnUqLHGCov7KmTeugsHGONvlnxTrGEI1hOfJjyD2fem gRB4S2iop2RV+k+RxDt9PUqZ75fdT2QRHRcmqMWB5+liy6JLAnOa61OHqZcRzk8q8/0k nFkNUxWXWMtka19P197pLbVyG8Qk2Bi4w4WLJwRuznvFyAbt5vSFeSowJdaTbpTEmWHT W078Y657SJjq64VHKQBuGVDC/mNdyqdZNAovzqhFg6EGiSWRfic2Zm5yA1wFuICtaHqH J56Q==
X-Gm-Message-State: AOAM531/lE6HDqa1X9F9bMC4ZtqyumqkjDc1n+Fo/CRBPxHoP0gy6EYG h1Mpi+qnDop2DdDGifijPLYbO7ksxqGYYQHh+Fw=
X-Google-Smtp-Source: ABdhPJzV3PGh91EZPka11xMiObFIMEtj8OpNc05nUFDF4YoZG06dOIVG5Lq9NrWDxYG0XCvMuQs2gzsEbHdkFMInbuU=
X-Received: by 2002:a05:6402:1c8e:: with SMTP id cy14mr16017366edb.39.1605530953828;  Mon, 16 Nov 2020 04:49:13 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com>
In-Reply-To: <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com>
From: Lucas Pardue <lucaspardue.24.7@gmail.com>
Date: Mon, 16 Nov 2020 12:49:03 +0000
Message-ID: <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com>
To: Luke Curley <kixelated@gmail.com>
Cc: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000002dcf3d05b438ce1b"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/r6pGs7_dHRBR7fnVkprb8Fga0jo>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2020 12:49:17 -0000

--0000000000002dcf3d05b438ce1b
Content-Type: text/plain; charset="UTF-8"

Hi Luke,

On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com> wrote:

> Just to clarify, when I say "QuicTransport is simpler" I really mean
> "QuicTransport has greater interoperability". You can take any QUIC
> implementation (+ datagram extension) and add a thin layer to support
> QuicTransport. It's a nice layering of protocols and it's something that I
> want to see in general as QUIC replaces TCP.
>

Thanks for the clarification. I appreciate the sentiment. But given the
development of QUIC its kind of surprising that people would find it easier
to identify an implementation that supports QUIC and datagram but does not
support HTTP/3.

Thr situation for a more clean-room implementation is different, I agree.
However, by the time you've done all the hard stuff with QUIC, a very
focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
compression, server push and extensibility points.

I also see the current design being the thin end of the wedge. The proposal
I linked talks about HTTP-like header parsing. So its "just" a thin layer
to do some parsing. Then folks will probably want some want to tweak
parameter, acontrol channel, a way to do graceful close, a sprinkle of
GREASE. To extrapolate forward, what would be the delta be between some
final product QuicTransport and HTTP/3. Too small a delta and we've wasted
years of effort.

Cheers
Lucas



> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <lucaspardue.24.7@gmail.com>
> wrote:
>
>> Hi folks,
>>
>> To follow up on one thread of discussion during IETF 109. To over
>> simplify what we've heard a few folks say, they prefer QuicTransport
>> because it simpler and they don't need pooling.
>>
>> I'd like to push more on this, what is the measurable complexity of
>> HTTP/3 over QUIC plus a new application mapping that needs to be defined?
>> Let's isolate pooling as a variable and ignore it.
>>
>> Victor mentioned his proposal for a unified header semantic across all
>> transports, this is
>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>> Taking a closer look at it, I have some concerns that I added as comments.
>> HTTP has semantics for a reason. If QuicTransport is going to start
>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>> is. I think it's important to avoid something that looks like HTTP but
>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>> give it a different ALPN so that we avoid problems related to
>> cross-protocol pooling?
>>
>> Cheers,
>> Lucas
>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
>

--0000000000002dcf3d05b438ce1b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto"><div>Hi Luke,</div><div dir=3D"auto"><br><div class=3D"gm=
ail_quote" dir=3D"auto"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, 16 No=
v 2020, 12:26 Luke Curley, &lt;<a href=3D"mailto:kixelated@gmail.com">kixel=
ated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div =
dir=3D"ltr"><div>Just to clarify, when I say &quot;QuicTransport is simpler=
&quot; I really mean &quot;QuicTransport has greater interoperability&quot;=
. You can take any QUIC implementation (+ datagram extension) and add a thi=
n layer to support QuicTransport. It&#39;s a nice layering of protocols and=
 it&#39;s something that I want to see in general as QUIC replaces TCP.</di=
v></div></blockquote></div></div><div dir=3D"auto"><br></div><div dir=3D"au=
to">Thanks for the clarification. I appreciate the sentiment. But given the=
 development of QUIC its kind of surprising that people would find it easie=
r to identify an implementation that supports QUIC and datagram but does no=
t support HTTP/3.</div><div dir=3D"auto"><br></div><div dir=3D"auto">Thr si=
tuation for a more clean-room implementation is different, I agree. However=
, by the time you&#39;ve done all the hard stuff with QUIC, a very focused =
HTTP/3 layer ends up quite thin too. You can ignore dynamic compression, se=
rver push and extensibility points.</div><div dir=3D"auto"><br></div><div d=
ir=3D"auto">I also see the current design being the thin end of the wedge. =
The proposal I linked talks about HTTP-like header parsing. So its &quot;ju=
st&quot; a thin layer to do some parsing. Then folks will probably want som=
e want to tweak parameter, acontrol channel, a way to do graceful close, a =
sprinkle of GREASE. To extrapolate forward, what would be the delta be betw=
een some final product QuicTransport and HTTP/3. Too small a delta and we&#=
39;ve wasted years of effort.</div><div dir=3D"auto"><br></div><div dir=3D"=
auto">Cheers</div><div dir=3D"auto">Lucas</div><div dir=3D"auto"><br></div>=
<div dir=3D"auto"><br></div><div dir=3D"auto"><div class=3D"gmail_quote" di=
r=3D"auto"><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bor=
der-left:1px #ccc solid;padding-left:1ex"><br><div class=3D"gmail_quote"><d=
iv dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 3:16 AM Lucas P=
ardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" target=3D"_blank" r=
el=3D"noreferrer">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br></div><block=
quote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1=
px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Hi folks,=
</div><div><br></div><div>To follow up on one thread of discussion during I=
ETF 109. To over simplify what we&#39;ve heard a few folks say, they prefer=
 QuicTransport because it simpler and they don&#39;t need pooling.</div><di=
v><br></div><div>I&#39;d like to push more on this, what is the measurable =
complexity of HTTP/3 over QUIC plus a new application mapping that needs to=
 be defined? Let&#39;s isolate pooling as a variable and ignore it.</div><d=
iv><br></div><div>Victor mentioned his proposal for a unified header semant=
ic across all transports, this is <a href=3D"https://github.com/ietf-wg-web=
trans/draft-ietf-webtrans-overview/pull/4/files" target=3D"_blank" rel=3D"n=
oreferrer">https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview=
/pull/4/files</a>. Taking a closer look at it, I have some concerns that I =
added as comments.  HTTP has semantics for a reason. If QuicTransport is go=
ing to start borrowing HTTP piecemeal, I really wonder how simple people mi=
ght feel it is. I think it&#39;s important to avoid something that looks li=
ke HTTP but behaves differently. Is it really much of a stretch to just do =
HTTP/3 but give it a different ALPN so that we avoid problems related to cr=
oss-protocol pooling?</div><div><br></div><div>Cheers,</div><div>Lucas<br><=
/div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank" rel=3D"noreferre=
r">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>

--0000000000002dcf3d05b438ce1b--


From nobody Mon Nov 16 11:33:03 2020
Return-Path: <kixelated@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 883B83A0DD2 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 11:32:55 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 gSGFdZxcflbf for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 11:32:53 -0800 (PST)
Received: from mail-ot1-x335.google.com (mail-ot1-x335.google.com [IPv6:2607:f8b0:4864:20::335]) (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 2DDB33A083F for <webtransport@ietf.org>; Mon, 16 Nov 2020 11:32:51 -0800 (PST)
Received: by mail-ot1-x335.google.com with SMTP id f16so17104989otl.11 for <webtransport@ietf.org>; Mon, 16 Nov 2020 11:32:51 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=KQgW9fjd7wavUBlr0B72GwpDK0+IOZp4bWiXDZGaCb4=; b=I+upKgA+QulhgkVr+sr3bCi2jBZ3HJcG/jBrgdxRKs0F5fXVQRCxZXaj7FGmIgMr8x jCLpKzEqd6nOmh5DQ8mw/RKY5mIB29SBvZWKnX8/EbvueUIDjid6UbS7BkhUebuy6PQy c0/xAxatbevjgD17cMiIHI2NFjkY0mR/3QlpYhYqqxMy3nJ7O5vLksgkyvgFJkjCu0/R +66XDiS+oCtk5KdCs/lFOk8bn6+3VTWaxgRpx9P7kWh0b41UIkx//+ITVEYXQNg3BkGU v0jg3r/0cuxQkdePHHYthIbG7m77HD1bHMEKBEATqTAjAOMpAsxHHfSKAGxEHGf2NcMk 1wfA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=KQgW9fjd7wavUBlr0B72GwpDK0+IOZp4bWiXDZGaCb4=; b=mvum0WAkdJoDoEAtpKC6lN8ZBiACAARBPfUA8D4U8+ZMR6hb4+sgO6zz+nvcs9IMS2 eGhzKhjpnCnwcOxmBIVLBw+ew/bIa4Hf0MsaFoH5yWFZhMRhKzkf6D+00oQelU12Mpvi 1g6+D/khCChf+0yG4BGxdQdgg9IUjTflicV91oXlTEwzVIGZCPY2fgTpNPAwPBeL5BWV PpR/Y/qLpcPlkdI9rohQB5tcpTgfKp+onjGqD+xhiBvLBj5xynUMMF+fESS8c2cME/F4 0cUhYPpN/nIg+hQN6PH9Xplwj88UH5Uat7I2MaYPCvtpbS05yT/j2dLWc2dYhSGdPZEH 86CQ==
X-Gm-Message-State: AOAM531VCmWQDiED+0OBzADBaNbLX8JtuKNdMsHT8TNm+3MR+Nw7OtgR T77zQcjQ9qieV6a7lReBrHSpKpy1M6Xl7YkxA3k=
X-Google-Smtp-Source: ABdhPJzdOdULTk0XGmF7MJ1iXWVAiPDulHDR/4voKxMEBAxePqAQ9j5Yt339CUKug6TTk4IUYT+6E4N91qzjVNGtOzM=
X-Received: by 2002:a9d:5e14:: with SMTP id d20mr576440oti.107.1605555170433;  Mon, 16 Nov 2020 11:32:50 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com>
In-Reply-To: <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com>
From: Luke Curley <kixelated@gmail.com>
Date: Mon, 16 Nov 2020 11:32:41 -0800
Message-ID: <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com>
To: Lucas Pardue <lucaspardue.24.7@gmail.com>
Cc: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000099dc5105b43e7110"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/0YgsRqmCXBykvrOCw8awMXmaa8g>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2020 19:33:02 -0000

--00000000000099dc5105b43e7110
Content-Type: text/plain; charset="UTF-8"

We're on the same page that there's code in HTTP/3 that could be leveraged
for QuicTransport in the form of the header parsing. I think there's a path
to merge QuicTransport and Http3Transport by leveraging HTTP/3 for the
handshake and QUIC for stream delivery.

My primary concern is that Http3Transport requires non-generic
modifications to the HTTP/3 layer mostly to support connection pooling. I'm
worried that this will limit support for Http3Transport and complicates any
HTTP/3 implementation that does support it.

On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <lucaspardue.24.7@gmail.com>
wrote:

> Hi Luke,
>
> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com> wrote:
>
>> Just to clarify, when I say "QuicTransport is simpler" I really mean
>> "QuicTransport has greater interoperability". You can take any QUIC
>> implementation (+ datagram extension) and add a thin layer to support
>> QuicTransport. It's a nice layering of protocols and it's something that I
>> want to see in general as QUIC replaces TCP.
>>
>
> Thanks for the clarification. I appreciate the sentiment. But given the
> development of QUIC its kind of surprising that people would find it easier
> to identify an implementation that supports QUIC and datagram but does not
> support HTTP/3.
>
> Thr situation for a more clean-room implementation is different, I agree.
> However, by the time you've done all the hard stuff with QUIC, a very
> focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
> compression, server push and extensibility points.
>
> I also see the current design being the thin end of the wedge. The
> proposal I linked talks about HTTP-like header parsing. So its "just" a
> thin layer to do some parsing. Then folks will probably want some want to
> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
> of GREASE. To extrapolate forward, what would be the delta be between some
> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
> years of effort.
>
> Cheers
> Lucas
>
>
>
>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <lucaspardue.24.7@gmail.com>
>> wrote:
>>
>>> Hi folks,
>>>
>>> To follow up on one thread of discussion during IETF 109. To over
>>> simplify what we've heard a few folks say, they prefer QuicTransport
>>> because it simpler and they don't need pooling.
>>>
>>> I'd like to push more on this, what is the measurable complexity of
>>> HTTP/3 over QUIC plus a new application mapping that needs to be defined?
>>> Let's isolate pooling as a variable and ignore it.
>>>
>>> Victor mentioned his proposal for a unified header semantic across all
>>> transports, this is
>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>> Taking a closer look at it, I have some concerns that I added as comments.
>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>> is. I think it's important to avoid something that looks like HTTP but
>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>> give it a different ALPN so that we avoid problems related to
>>> cross-protocol pooling?
>>>
>>> Cheers,
>>> Lucas
>>> --
>>> Webtransport mailing list
>>> Webtransport@ietf.org
>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>
>>

--00000000000099dc5105b43e7110
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">We&#39;re on the same page that there&#39;s code in HTTP/3=
 that could be leveraged for QuicTransport in the form of the header parsin=
g. I think there&#39;s a path to merge QuicTransport and Http3Transport by =
leveraging HTTP/3 for the handshake and QUIC for stream delivery.<div><br><=
/div><div>My primary concern is that Http3Transport requires non-generic mo=
difications to the HTTP/3 layer mostly to support connection pooling. I&#39=
;m worried that this will limit support for Http3Transport and complicates =
any HTTP/3 implementation that does support it.</div></div><br><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020=
 at 4:49 AM Lucas Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com">=
lucaspardue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gma=
il_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,2=
04,204);padding-left:1ex"><div dir=3D"auto"><div>Hi Luke,</div><div dir=3D"=
auto"><br><div class=3D"gmail_quote" dir=3D"auto"><div dir=3D"ltr" class=3D=
"gmail_attr">On Mon, 16 Nov 2020, 12:26 Luke Curley, &lt;<a href=3D"mailto:=
kixelated@gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<b=
r></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex=
;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">=
<div>Just to clarify, when I say &quot;QuicTransport is simpler&quot; I rea=
lly mean &quot;QuicTransport has greater interoperability&quot;. You can ta=
ke any QUIC implementation (+ datagram extension) and add a thin layer to s=
upport QuicTransport. It&#39;s a nice layering of protocols and it&#39;s so=
mething that I want to see in general as QUIC replaces TCP.</div></div></bl=
ockquote></div></div><div dir=3D"auto"><br></div><div dir=3D"auto">Thanks f=
or the clarification. I appreciate the sentiment. But given the development=
 of QUIC its kind of surprising that people would find it easier to identif=
y an implementation that supports QUIC and datagram but does not support HT=
TP/3.</div><div dir=3D"auto"><br></div><div dir=3D"auto">Thr situation for =
a more clean-room implementation is different, I agree. However, by the tim=
e you&#39;ve done all the hard stuff with QUIC, a very focused HTTP/3 layer=
 ends up quite thin too. You can ignore dynamic compression, server push an=
d extensibility points.</div><div dir=3D"auto"><br></div><div dir=3D"auto">=
I also see the current design being the thin end of the wedge. The proposal=
 I linked talks about HTTP-like header parsing. So its &quot;just&quot; a t=
hin layer to do some parsing. Then folks will probably want some want to tw=
eak parameter, acontrol channel, a way to do graceful close, a sprinkle of =
GREASE. To extrapolate forward, what would be the delta be between some fin=
al product QuicTransport and HTTP/3. Too small a delta and we&#39;ve wasted=
 years of effort.</div><div dir=3D"auto"><br></div><div dir=3D"auto">Cheers=
</div><div dir=3D"auto">Lucas</div><div dir=3D"auto"><br></div><div dir=3D"=
auto"><br></div><div dir=3D"auto"><div class=3D"gmail_quote" dir=3D"auto"><=
blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l=
eft:1px solid rgb(204,204,204);padding-left:1ex"><br><div class=3D"gmail_qu=
ote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 3:16 AM =
Lucas Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" rel=3D"noref=
errer" target=3D"_blank">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br></div=
><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border=
-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Hi=
 folks,</div><div><br></div><div>To follow up on one thread of discussion d=
uring IETF 109. To over simplify what we&#39;ve heard a few folks say, they=
 prefer QuicTransport because it simpler and they don&#39;t need pooling.</=
div><div><br></div><div>I&#39;d like to push more on this, what is the meas=
urable complexity of HTTP/3 over QUIC plus a new application mapping that n=
eeds to be defined? Let&#39;s isolate pooling as a variable and ignore it.<=
/div><div><br></div><div>Victor mentioned his proposal for a unified header=
 semantic across all transports, this is <a href=3D"https://github.com/ietf=
-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files" rel=3D"noreferrer" =
target=3D"_blank">https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-o=
verview/pull/4/files</a>. Taking a closer look at it, I have some concerns =
that I added as comments.  HTTP has semantics for a reason. If QuicTranspor=
t is going to start borrowing HTTP piecemeal, I really wonder how simple pe=
ople might feel it is. I think it&#39;s important to avoid something that l=
ooks like HTTP but behaves differently. Is it really much of a stretch to j=
ust do HTTP/3 but give it a different ALPN so that we avoid problems relate=
d to cross-protocol pooling?</div><div><br></div><div>Cheers,</div><div>Luc=
as<br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>

--00000000000099dc5105b43e7110--


From nobody Mon Nov 16 11:37:51 2020
Return-Path: <dschinazi.ietf@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 222803A07F0 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 11:37:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 k5CPNuaXNs-L for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 11:37:48 -0800 (PST)
Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) (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 2285B3A07D3 for <webtransport@ietf.org>; Mon, 16 Nov 2020 11:37:48 -0800 (PST)
Received: by mail-lf1-x12d.google.com with SMTP id d17so26762743lfq.10 for <webtransport@ietf.org>; Mon, 16 Nov 2020 11:37:48 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=X9MV3CFXN8nNK9lcuLRJbrsJz3zqpHXPCBH2bniorsA=; b=QeRgUwsBst6GY6V43+W5BJi7VatgV5A3OcQ00N3DtqolXzYec8PfabTDWCrHLmOF09 Ut/L07BX58NPckif9BL/YwAMtmly9ol++wE1nkbqbmTJfHSAh0u5I7nDuHvgQcdV6EB2 vCCOM+gtXHfGju4xCvwl6Af4q/G/JKnGEA+9mb6iOHIZkv0G/Y+c0RLl7BAcBF3SiqDB OrIk/jGDkNPwdzhBl/nQwbp0mUX+VkM4XUBWUcOSfZCG+T1bGPHqt2qQvc0900mUIS/Q p9upxunQqaKc9brjlqkDJkDefUOdyGdVYqnrS38uuj+AiBjJV3qFVJSoYKEJZ7m3jblH PmIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=X9MV3CFXN8nNK9lcuLRJbrsJz3zqpHXPCBH2bniorsA=; b=GJYS5nFmC/0Ml6+/GOtHFNChROuTQ/wYa/5pVnqHixrD4KRgRbhDGPvHPH60+sclmG m/2DHcCw4EOVDz4S4hr6i2EFqjERhJNcnL47u7bpenD1p84FvbPLenAwcdGya5Dc4kgo lHhNN1jhYYJDzH451zlks2pf9Qd+U0X78W8hlA684ntik3VhHIbfTn2dKau+hwuDbzFF oeKBYtjj86rFHYkUdNT5pH48iirhyqZ5fYa61r7aX1SyzhajJAlCURpA750EXez0WpJV 9ELQbWhr7MfNMuBB7gw+UYqbDN9tm8ajmuYM6b7dZnssaE6sOy6P3EE70JseEe/J71dh o+kQ==
X-Gm-Message-State: AOAM530hxnIT241czcyvjJn615uPpo7WG9TrqsNklJRhsnJaHcw8eWUn hOlrK1+zId7U4GPZUgvGFUTvCtfbtRQzGwecGas=
X-Google-Smtp-Source: ABdhPJyG3CaraNgsxMxjTuqkwA5gkudhsMPmGnTYy6wq5Sg4uccfLcgWFNfgP+blaVh2Bw4b7SSJ5pdYqlHAmBtQHPU=
X-Received: by 2002:a19:ec09:: with SMTP id b9mr383894lfa.178.1605555466213; Mon, 16 Nov 2020 11:37:46 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com>
In-Reply-To: <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com>
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Mon, 16 Nov 2020 11:37:35 -0800
Message-ID: <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com>
To: Luke Curley <kixelated@gmail.com>
Cc: Lucas Pardue <lucaspardue.24.7@gmail.com>, WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000003b1f5405b43e8391"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/xSrsUHTdgIyV0324McrZ5XrL32k>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2020 19:37:50 -0000

--0000000000003b1f5405b43e8391
Content-Type: text/plain; charset="UTF-8"

On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com> wrote:

> We're on the same page that there's code in HTTP/3 that could be leveraged
> for QuicTransport in the form of the header parsing. I think there's a path
> to merge QuicTransport and Http3Transport by leveraging HTTP/3 for the
> handshake and QUIC for stream delivery.
>
> My primary concern is that Http3Transport requires non-generic
> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
> worried that this will limit support for Http3Transport and complicates any
> HTTP/3 implementation that does support it.
>

Hi Luke,

I'm curious, could you elaborate on what these "non-generic modifications
to the HTTP/3 layer" are please?

Thanks,
David


> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <lucaspardue.24.7@gmail.com>
> wrote:
>
>> Hi Luke,
>>
>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com> wrote:
>>
>>> Just to clarify, when I say "QuicTransport is simpler" I really mean
>>> "QuicTransport has greater interoperability". You can take any QUIC
>>> implementation (+ datagram extension) and add a thin layer to support
>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>> want to see in general as QUIC replaces TCP.
>>>
>>
>> Thanks for the clarification. I appreciate the sentiment. But given the
>> development of QUIC its kind of surprising that people would find it easier
>> to identify an implementation that supports QUIC and datagram but does not
>> support HTTP/3.
>>
>> Thr situation for a more clean-room implementation is different, I agree.
>> However, by the time you've done all the hard stuff with QUIC, a very
>> focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
>> compression, server push and extensibility points.
>>
>> I also see the current design being the thin end of the wedge. The
>> proposal I linked talks about HTTP-like header parsing. So its "just" a
>> thin layer to do some parsing. Then folks will probably want some want to
>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>> of GREASE. To extrapolate forward, what would be the delta be between some
>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>> years of effort.
>>
>> Cheers
>> Lucas
>>
>>
>>
>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <lucaspardue.24.7@gmail.com>
>>> wrote:
>>>
>>>> Hi folks,
>>>>
>>>> To follow up on one thread of discussion during IETF 109. To over
>>>> simplify what we've heard a few folks say, they prefer QuicTransport
>>>> because it simpler and they don't need pooling.
>>>>
>>>> I'd like to push more on this, what is the measurable complexity of
>>>> HTTP/3 over QUIC plus a new application mapping that needs to be defined?
>>>> Let's isolate pooling as a variable and ignore it.
>>>>
>>>> Victor mentioned his proposal for a unified header semantic across all
>>>> transports, this is
>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>> is. I think it's important to avoid something that looks like HTTP but
>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>> give it a different ALPN so that we avoid problems related to
>>>> cross-protocol pooling?
>>>>
>>>> Cheers,
>>>> Lucas
>>>> --
>>>> Webtransport mailing list
>>>> Webtransport@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>
>>> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--0000000000003b1f5405b43e8391
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:34 AM Luke=
 Curley &lt;<a href=3D"mailto:kixelated@gmail.com">kixelated@gmail.com</a>&=
gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0=
px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div =
dir=3D"ltr">We&#39;re on the same page that there&#39;s code in HTTP/3 that=
 could be leveraged for QuicTransport in the form of the header parsing. I =
think there&#39;s a path to merge QuicTransport and Http3Transport by lever=
aging HTTP/3 for the handshake and QUIC for stream delivery.<div><br></div>=
<div>My primary concern is that Http3Transport requires non-generic modific=
ations to the HTTP/3 layer mostly to support connection pooling. I&#39;m wo=
rried that this will limit support for Http3Transport and complicates any H=
TTP/3 implementation that does support it.</div></div></blockquote><div><br=
></div><div>Hi Luke,</div><div><br></div><div>I&#39;m curious, could you el=
aborate on what these &quot;non-generic modifications to the HTTP/3 layer&q=
uot; are please?</div><div><br></div><div>Thanks,</div><div>David</div><div=
>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020=
 at 4:49 AM Lucas Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" =
target=3D"_blank">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br></div><block=
quote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1=
px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"auto"><div>Hi Luke,=
</div><div dir=3D"auto"><br><div class=3D"gmail_quote" dir=3D"auto"><div di=
r=3D"ltr" class=3D"gmail_attr">On Mon, 16 Nov 2020, 12:26 Luke Curley, &lt;=
<a href=3D"mailto:kixelated@gmail.com" target=3D"_blank">kixelated@gmail.co=
m</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin=
:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"=
><div dir=3D"ltr"><div>Just to clarify, when I say &quot;QuicTransport is s=
impler&quot; I really mean &quot;QuicTransport has greater interoperability=
&quot;. You can take any QUIC implementation (+ datagram extension) and add=
 a thin layer to support QuicTransport. It&#39;s a nice layering of protoco=
ls and it&#39;s something that I want to see in general as QUIC replaces TC=
P.</div></div></blockquote></div></div><div dir=3D"auto"><br></div><div dir=
=3D"auto">Thanks for the clarification. I appreciate the sentiment. But giv=
en the development of QUIC its kind of surprising that people would find it=
 easier to identify an implementation that supports QUIC and datagram but d=
oes not support HTTP/3.</div><div dir=3D"auto"><br></div><div dir=3D"auto">=
Thr situation for a more clean-room implementation is different, I agree. H=
owever, by the time you&#39;ve done all the hard stuff with QUIC, a very fo=
cused HTTP/3 layer ends up quite thin too. You can ignore dynamic compressi=
on, server push and extensibility points.</div><div dir=3D"auto"><br></div>=
<div dir=3D"auto">I also see the current design being the thin end of the w=
edge. The proposal I linked talks about HTTP-like header parsing. So its &q=
uot;just&quot; a thin layer to do some parsing. Then folks will probably wa=
nt some want to tweak parameter, acontrol channel, a way to do graceful clo=
se, a sprinkle of GREASE. To extrapolate forward, what would be the delta b=
e between some final product QuicTransport and HTTP/3. Too small a delta an=
d we&#39;ve wasted years of effort.</div><div dir=3D"auto"><br></div><div d=
ir=3D"auto">Cheers</div><div dir=3D"auto">Lucas</div><div dir=3D"auto"><br>=
</div><div dir=3D"auto"><br></div><div dir=3D"auto"><div class=3D"gmail_quo=
te" dir=3D"auto"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px =
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br><div=
 class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16=
, 2020 at 3:16 AM Lucas Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail=
.com" rel=3D"noreferrer" target=3D"_blank">lucaspardue.24.7@gmail.com</a>&g=
t; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p=
x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div d=
ir=3D"ltr"><div>Hi folks,</div><div><br></div><div>To follow up on one thre=
ad of discussion during IETF 109. To over simplify what we&#39;ve heard a f=
ew folks say, they prefer QuicTransport because it simpler and they don&#39=
;t need pooling.</div><div><br></div><div>I&#39;d like to push more on this=
, what is the measurable complexity of HTTP/3 over QUIC plus a new applicat=
ion mapping that needs to be defined? Let&#39;s isolate pooling as a variab=
le and ignore it.</div><div><br></div><div>Victor mentioned his proposal fo=
r a unified header semantic across all transports, this is <a href=3D"https=
://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files" r=
el=3D"noreferrer" target=3D"_blank">https://github.com/ietf-wg-webtrans/dra=
ft-ietf-webtrans-overview/pull/4/files</a>. Taking a closer look at it, I h=
ave some concerns that I added as comments.  HTTP has semantics for a reaso=
n. If QuicTransport is going to start borrowing HTTP piecemeal, I really wo=
nder how simple people might feel it is. I think it&#39;s important to avoi=
d something that looks like HTTP but behaves differently. Is it really much=
 of a stretch to just do HTTP/3 but give it a different ALPN so that we avo=
id problems related to cross-protocol pooling?</div><div><br></div><div>Che=
ers,</div><div>Lucas<br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>

--0000000000003b1f5405b43e8391--


From nobody Mon Nov 16 12:06:14 2020
Return-Path: <lucaspardue.24.7@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6AC513A0138 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 12:06:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.848
X-Spam-Level: 
X-Spam-Status: No, score=-1.848 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 2V9aacknqgBf for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 12:06:10 -0800 (PST)
Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [IPv6:2a00:1450:4864:20::52d]) (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 F23073A163A for <webtransport@ietf.org>; Mon, 16 Nov 2020 12:05:33 -0800 (PST)
Received: by mail-ed1-x52d.google.com with SMTP id d18so7129680edt.7 for <webtransport@ietf.org>; Mon, 16 Nov 2020 12:05:33 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=pEi0h0PxZ+3WgWzzF8cUhdz3H8U3iJsgH00I48FoNKA=; b=EYzBGEXO3bCXpt5Uz69ESVUZr+KIYHkwcC7JXo40RLMaBHcQYvGPPfZZdDl3qtgIGx sTaZ0Xdp8o4LKniM4dErqdU620Kb+LPn1FEghxEVYLyhPmjEgPU2Rkq8PZbrtooVWqs0 oz1LVi/+5o81ZJ9KTU+4uJ/vpUpnCIYWnQxper1//SlZjjYP03LLG4WB69tn2VfQNHUW D/DQYNOtYBMx5JdDicsu4jTgDDNzL2UIwATgA5hDD5UlQtBxluqynZ86KmvU4sZ77I3E t9kK1kwR8tuWCtbg0ySzOC1kiOGdd4l8u2ty+oR61zLehVxKbN50cHfQzKZ6qMBtOQHn /BKw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pEi0h0PxZ+3WgWzzF8cUhdz3H8U3iJsgH00I48FoNKA=; b=nvle7oEa3NyzRr0xYKbWTbqw4vLwmkQdwF2L+9L44r4TXpmX/D5WAgNNB9I0u+mzG1 tgynfWj9Gd7Ff2bGJGL6dYVX+CD+w8qE+iQZQzl5XLKiUcYw/Hi5mHBbin1AI6EAfaU4 hT4U+uewRnRS4OoDlTEnyzV2MYFbNvbK84QQsuR5KHgUobYd5kBPHf/rDgyy1JJo0ajE UtL01H2yiu2moZJZRO+kjB1xCwEnqxSZp/H8x3CE8nt7RM9xZHJjqEIi2ydb8KAEBgZv vJJlX15cDJoZyPafmvghETsMT6pf6FPdTb3F8FgwP6YHUiKLDZiU/OkFIvfZDz14A+x/ WyKg==
X-Gm-Message-State: AOAM533b8ef7NVQwc/4JcbUP9++BlAbH8QZ7y2306UCUEAih+QupAUb8 cPhHtDvSS0po13gvsjU8iSknmqQ6Cjb9KKvPYGZq5/tN
X-Google-Smtp-Source: ABdhPJxSrelaSyIxBFnqav6jtutk6h2KYMla0Q+aXCyjcY/zB7926Ri4nvjfSot+84/9M3xVFTIbHMnUOSdHYi4/ta4=
X-Received: by 2002:a50:f40a:: with SMTP id r10mr17341273edm.229.1605557132195;  Mon, 16 Nov 2020 12:05:32 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com>
In-Reply-To: <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com>
From: Lucas Pardue <lucaspardue.24.7@gmail.com>
Date: Mon, 16 Nov 2020 20:05:22 +0000
Message-ID: <CALGR9oYogj62GTx_+nVtEPYJ+ZBz2Lucj-UfD2U4PnmbtQ1L6g@mail.gmail.com>
To: David Schinazi <dschinazi.ietf@gmail.com>
Cc: Luke Curley <kixelated@gmail.com>, WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000087fc8e05b43ee6e8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/AFCHg0U_VKFRNcoVMs3mRZ8v_IA>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2020 20:06:12 -0000

--00000000000087fc8e05b43ee6e8
Content-Type: text/plain; charset="UTF-8"

On Mon, 16 Nov 2020, 19:37 David Schinazi, <dschinazi.ietf@gmail.com> wrote:

>
> Hi Luke,
>
> I'm curious, could you elaborate on what these "non-generic modifications
> to the HTTP/3 layer" are please?
>

Yeah this is what I'm trying to figure out. If we just declare pooling as
nice to have but too hard to deploy, then does Http3Transport become a bit
more straightforward to implement?

I'll note that some of the HTTP/3 implementation in familiar with punt the
problem of HTTP semantics to a different part of the code. So the
application-mapping layer is really quite minimal.

Cheers
Lucas

--00000000000087fc8e05b43ee6e8
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto"><br><br><div class=3D"gmail_quote" dir=3D"auto"><div dir=
=3D"ltr" class=3D"gmail_attr">On Mon, 16 Nov 2020, 19:37 David Schinazi, &l=
t;<a href=3D"mailto:dschinazi.ietf@gmail.com">dschinazi.ietf@gmail.com</a>&=
gt; wrote:</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8e=
x;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div class=
=3D"gmail_quote"><div><br></div><div>Hi Luke,</div><div><br></div><div>I&#3=
9;m curious, could you elaborate on what these &quot;non-generic modificati=
ons to the HTTP/3 layer&quot; are please?</div><div></div></div></div></blo=
ckquote></div><div dir=3D"auto"><br></div><div dir=3D"auto">Yeah this is wh=
at I&#39;m trying to figure out. If we just declare pooling as nice to have=
 but too hard to deploy, then does Http3Transport become a bit more straigh=
tforward to implement?</div><div dir=3D"auto"><br></div><div dir=3D"auto">I=
&#39;ll note that some of the HTTP/3 implementation in familiar with punt t=
he problem of HTTP semantics to a different part of the code. So the applic=
ation-mapping layer is really quite minimal.</div><div dir=3D"auto"><br></d=
iv><div dir=3D"auto">Cheers=C2=A0</div><div dir=3D"auto">Lucas</div></div>

--00000000000087fc8e05b43ee6e8--


From nobody Mon Nov 16 12:33:46 2020
Return-Path: <kixelated@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 053823A13D1 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 12:33:45 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 pwSPGsbTlXpD for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 12:33:42 -0800 (PST)
Received: from mail-ot1-x335.google.com (mail-ot1-x335.google.com [IPv6:2607:f8b0:4864:20::335]) (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 6AA973A09C0 for <webtransport@ietf.org>; Mon, 16 Nov 2020 12:33:42 -0800 (PST)
Received: by mail-ot1-x335.google.com with SMTP id i18so17339158ots.0 for <webtransport@ietf.org>; Mon, 16 Nov 2020 12:33:42 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=+o5HV/hDq2YlPBj7IaK63Of+lXSd6G6RtKjFtRokrPc=; b=EadYUn3z6JALhxKXZFOXx+qLSYUpA+Q4z2t6e1Vz6+ulZR9NJWZS1svxHn7Vk7Yk1a GKa4eer4q/QelijV08pxH7boNf/rSKKn4PGANv+Yshzf3uCuWeK5f4ea3Mc2bEC6Vb0O ACDvlRhb8oC3+lu9K4vvXCj1qBDvYHqQcG5rwwUx1AOybiTLjGoTufOz7tS2ZO+Vho7q 7sv/iW2M1/R+WtuHJt0vvhJTiE22FY0VpbTR30TxI8lgh2XOG8JK0sJPwl9DvIVmB5Bg HuaFyggnUQvbLehxgbVzRJE/f4aJYeOkko3Ps8BpXMwSRx114ebr/JAKIvXJ9JmbgZQv BcVA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=+o5HV/hDq2YlPBj7IaK63Of+lXSd6G6RtKjFtRokrPc=; b=mRDPr0FWdPVzSXD4mdpbqHrn4L5BSaDzD0pql1hP1631ha9FL5W1IYv9pxLGCStJyd Hc2Xdlc4MvkJl4gkewAQl3oy9HK9E/eudBEpWRZIaSymbtxsZOfRfiXuHDUu0gaqMB4K qIS0DyBBUIHN9/JonLQXVOHXbwMlP21xsbKSz2A1Kl3mIe6wJk2AvFkFOkZzDzM+TnBT VSXVfLlKDUhbPJ095pdfRpQVTfJpTtxvmkKshaBi9nbhTrnASQEdSOy7gaJyVp+KNOV7 Symr6s79giVd+vkVahE2Fafr7tty0YQ6fUC4BLYhUs99X0hFRDfc36smgg75Aw72171W ZUHQ==
X-Gm-Message-State: AOAM5318D/T8O46lk2izvP4RLVmQrzQMPMCI1Ra7MJ5uAouef1impTNy XTAoPmpOyV96tBaJOWoMegKAwTlmAamfs+zXmKE=
X-Google-Smtp-Source: ABdhPJwc59NsCfwMYdN3jxqs2zfzimBiDcV+sKI3Mw8Tj5NFZmE6vaFmVzUOPbHQhYZrtRas8jdIO+agIrqLA+R38Os=
X-Received: by 2002:a9d:6f90:: with SMTP id h16mr843360otq.35.1605558821559; Mon, 16 Nov 2020 12:33:41 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com>
In-Reply-To: <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com>
From: Luke Curley <kixelated@gmail.com>
Date: Mon, 16 Nov 2020 12:33:32 -0800
Message-ID: <CAHVo=Z=qwyNJhGWF=ZQNcjMkSavNDSm+PCCbxy8MiCAGZ2pajg@mail.gmail.com>
To: David Schinazi <dschinazi.ietf@gmail.com>
Cc: Lucas Pardue <lucaspardue.24.7@gmail.com>, WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000039a22705b43f4ba7"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/hP9buHcQ4AaPL-bRlSsdTuKGKB8>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2020 20:33:45 -0000

--00000000000039a22705b43f4ba7
Content-Type: text/plain; charset="UTF-8"

I'll concede that "non-generic" is not a fair description and what I should
have said is "web transport specific". That being said, the current
Http3Transport draft is fairly easy to implement and I don't think that it
poses a significant barrier for adoption.

I think my problem is that I'm extrapolating the Http3Transport design in
my head to deal with other issues. Let me file those issues to see if they
make sense and how they could be resolved instead of jumping to conclusions.

On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <dschinazi.ietf@gmail.com>
wrote:

>
>
> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com> wrote:
>
>> We're on the same page that there's code in HTTP/3 that could be
>> leveraged for QuicTransport in the form of the header parsing. I think
>> there's a path to merge QuicTransport and Http3Transport by leveraging
>> HTTP/3 for the handshake and QUIC for stream delivery.
>>
>> My primary concern is that Http3Transport requires non-generic
>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>> worried that this will limit support for Http3Transport and complicates any
>> HTTP/3 implementation that does support it.
>>
>
> Hi Luke,
>
> I'm curious, could you elaborate on what these "non-generic modifications
> to the HTTP/3 layer" are please?
>
> Thanks,
> David
>
>
>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <lucaspardue.24.7@gmail.com>
>> wrote:
>>
>>> Hi Luke,
>>>
>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com> wrote:
>>>
>>>> Just to clarify, when I say "QuicTransport is simpler" I really mean
>>>> "QuicTransport has greater interoperability". You can take any QUIC
>>>> implementation (+ datagram extension) and add a thin layer to support
>>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>>> want to see in general as QUIC replaces TCP.
>>>>
>>>
>>> Thanks for the clarification. I appreciate the sentiment. But given the
>>> development of QUIC its kind of surprising that people would find it easier
>>> to identify an implementation that supports QUIC and datagram but does not
>>> support HTTP/3.
>>>
>>> Thr situation for a more clean-room implementation is different, I
>>> agree. However, by the time you've done all the hard stuff with QUIC, a
>>> very focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
>>> compression, server push and extensibility points.
>>>
>>> I also see the current design being the thin end of the wedge. The
>>> proposal I linked talks about HTTP-like header parsing. So its "just" a
>>> thin layer to do some parsing. Then folks will probably want some want to
>>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>>> of GREASE. To extrapolate forward, what would be the delta be between some
>>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>>> years of effort.
>>>
>>> Cheers
>>> Lucas
>>>
>>>
>>>
>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>
>>>>> Hi folks,
>>>>>
>>>>> To follow up on one thread of discussion during IETF 109. To over
>>>>> simplify what we've heard a few folks say, they prefer QuicTransport
>>>>> because it simpler and they don't need pooling.
>>>>>
>>>>> I'd like to push more on this, what is the measurable complexity of
>>>>> HTTP/3 over QUIC plus a new application mapping that needs to be defined?
>>>>> Let's isolate pooling as a variable and ignore it.
>>>>>
>>>>> Victor mentioned his proposal for a unified header semantic across all
>>>>> transports, this is
>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>>> is. I think it's important to avoid something that looks like HTTP but
>>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>>> give it a different ALPN so that we avoid problems related to
>>>>> cross-protocol pooling?
>>>>>
>>>>> Cheers,
>>>>> Lucas
>>>>> --
>>>>> Webtransport mailing list
>>>>> Webtransport@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>
>>>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
>

--00000000000039a22705b43f4ba7
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>I&#39;ll concede that &quot;non-generic&quot; is not =
a fair description and what I should have said is &quot;web transport speci=
fic&quot;. That being said, the current Http3Transport draft is fairly easy=
 to implement and I don&#39;t think that it poses a significant barrier for=
 adoption.</div><div><br></div><div>I think my problem is that I&#39;m extr=
apolating the Http3Transport design in my head to deal with other issues. L=
et me file those issues to see if they make sense and how they could be res=
olved instead of jumping to conclusions.</div><div><div></div></div></div><=
br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon,=
 Nov 16, 2020 at 11:37 AM David Schinazi &lt;<a href=3D"mailto:dschinazi.ie=
tf@gmail.com">dschinazi.ietf@gmail.com</a>&gt; wrote:<br></div><blockquote =
class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px sol=
id rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br=
></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr"=
>On Mon, Nov 16, 2020 at 11:34 AM Luke Curley &lt;<a href=3D"mailto:kixelat=
ed@gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div=
><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border=
-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">We&#39;=
re on the same page that there&#39;s code in HTTP/3 that could be leveraged=
 for QuicTransport in the form of the header parsing. I think there&#39;s a=
 path to merge QuicTransport and Http3Transport by leveraging HTTP/3 for th=
e handshake and QUIC for stream delivery.<div><br></div><div>My primary con=
cern is that Http3Transport requires non-generic modifications to the HTTP/=
3 layer mostly to support connection pooling. I&#39;m worried that this wil=
l limit support for Http3Transport and complicates any HTTP/3 implementatio=
n that does support it.</div></div></blockquote><div><br></div><div>Hi Luke=
,</div><div><br></div><div>I&#39;m curious, could you elaborate on what the=
se &quot;non-generic modifications to the HTTP/3 layer&quot; are please?</d=
iv><div><br></div><div>Thanks,</div><div>David</div><div>=C2=A0</div><block=
quote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1=
px solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"><div=
 dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 4:49 AM Lucas Par=
due &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" target=3D"_blank">luc=
aspardue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_=
quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,=
204);padding-left:1ex"><div dir=3D"auto"><div>Hi Luke,</div><div dir=3D"aut=
o"><br><div class=3D"gmail_quote" dir=3D"auto"><div dir=3D"ltr" class=3D"gm=
ail_attr">On Mon, 16 Nov 2020, 12:26 Luke Curley, &lt;<a href=3D"mailto:kix=
elated@gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br><=
/div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><di=
v>Just to clarify, when I say &quot;QuicTransport is simpler&quot; I really=
 mean &quot;QuicTransport has greater interoperability&quot;. You can take =
any QUIC implementation (+ datagram extension) and add a thin layer to supp=
ort QuicTransport. It&#39;s a nice layering of protocols and it&#39;s somet=
hing that I want to see in general as QUIC replaces TCP.</div></div></block=
quote></div></div><div dir=3D"auto"><br></div><div dir=3D"auto">Thanks for =
the clarification. I appreciate the sentiment. But given the development of=
 QUIC its kind of surprising that people would find it easier to identify a=
n implementation that supports QUIC and datagram but does not support HTTP/=
3.</div><div dir=3D"auto"><br></div><div dir=3D"auto">Thr situation for a m=
ore clean-room implementation is different, I agree. However, by the time y=
ou&#39;ve done all the hard stuff with QUIC, a very focused HTTP/3 layer en=
ds up quite thin too. You can ignore dynamic compression, server push and e=
xtensibility points.</div><div dir=3D"auto"><br></div><div dir=3D"auto">I a=
lso see the current design being the thin end of the wedge. The proposal I =
linked talks about HTTP-like header parsing. So its &quot;just&quot; a thin=
 layer to do some parsing. Then folks will probably want some want to tweak=
 parameter, acontrol channel, a way to do graceful close, a sprinkle of GRE=
ASE. To extrapolate forward, what would be the delta be between some final =
product QuicTransport and HTTP/3. Too small a delta and we&#39;ve wasted ye=
ars of effort.</div><div dir=3D"auto"><br></div><div dir=3D"auto">Cheers</d=
iv><div dir=3D"auto">Lucas</div><div dir=3D"auto"><br></div><div dir=3D"aut=
o"><br></div><div dir=3D"auto"><div class=3D"gmail_quote" dir=3D"auto"><blo=
ckquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left=
:1px solid rgb(204,204,204);padding-left:1ex"><br><div class=3D"gmail_quote=
"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 3:16 AM Luc=
as Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" rel=3D"noreferr=
er" target=3D"_blank">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br></div><b=
lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le=
ft:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Hi fo=
lks,</div><div><br></div><div>To follow up on one thread of discussion duri=
ng IETF 109. To over simplify what we&#39;ve heard a few folks say, they pr=
efer QuicTransport because it simpler and they don&#39;t need pooling.</div=
><div><br></div><div>I&#39;d like to push more on this, what is the measura=
ble complexity of HTTP/3 over QUIC plus a new application mapping that need=
s to be defined? Let&#39;s isolate pooling as a variable and ignore it.</di=
v><div><br></div><div>Victor mentioned his proposal for a unified header se=
mantic across all transports, this is <a href=3D"https://github.com/ietf-wg=
-webtrans/draft-ietf-webtrans-overview/pull/4/files" rel=3D"noreferrer" tar=
get=3D"_blank">https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-over=
view/pull/4/files</a>. Taking a closer look at it, I have some concerns tha=
t I added as comments.  HTTP has semantics for a reason. If QuicTransport i=
s going to start borrowing HTTP piecemeal, I really wonder how simple peopl=
e might feel it is. I think it&#39;s important to avoid something that look=
s like HTTP but behaves differently. Is it really much of a stretch to just=
 do HTTP/3 but give it a different ALPN so that we avoid problems related t=
o cross-protocol pooling?</div><div><br></div><div>Cheers,</div><div>Lucas<=
br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
</blockquote></div>

--00000000000039a22705b43f4ba7--


From nobody Mon Nov 16 12:40:38 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 057B73A13F7 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 12:40:37 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 5UeJqUKJaYNl for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 12:40:34 -0800 (PST)
Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com [IPv6:2a00:1450:4864:20::12e]) (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 796A23A13F3 for <webtransport@ietf.org>; Mon, 16 Nov 2020 12:40:34 -0800 (PST)
Received: by mail-lf1-x12e.google.com with SMTP id z21so26989887lfe.12 for <webtransport@ietf.org>; Mon, 16 Nov 2020 12:40:34 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=qV8kUCaBXsUw27/d6EcsHVZlqt8lbJ+z9NdgdBcNYRI=; b=ollvX+XAHQi5/7QRk21iBBKY9BpAvSMN4cU7f29pDru7k9bVm+gdnvxDzg6lYdL1Yl jl+084olxfA5bvqCA5eIB4w3RIrjXJku+T/3D0gvVpVzUFI11C4aiQq5hW4LXwTaxIIT 1ki3Frx7PVkpKETuJ4ZHf1gCGIAhuo9XSp2pJwxg/Ep+E/3G/JsU3ChIWBkN5Uflqc0r WMDzbovbzUMhziMFzMiy5XciskclZc/dKSo1S3gU510mpXkNcVI/WlRYFDhcKEXs/rgn YLTlbujaqFjGLe/LAT+8qBtwBS/1yNrQpTqFIlmF8U78XBz7C1aWExNXRhPLP5YUX206 PwFQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=qV8kUCaBXsUw27/d6EcsHVZlqt8lbJ+z9NdgdBcNYRI=; b=j9710Q25JZ771bPMpWzhCdnb1+gJ4SNZE4j+bX3jmGB61ipYT7kGKBS20NXjJ8N7Bx zf9yvzLc/QWWlgvFPMMS2xGH/trNgn//lkLFJcrQFxEwRSbemOiaN44bYrMvnMIDecqA VtcOMqDWqWoSdtoIf6Rx9pB5BuoWIDGmsvlGERVRNY+7kK4PDVDSJEoSGwhh+CwVPpJv IriMbbBmo31jVPIhT8wpyoMBeMvrGV0/bpzVHEZKoQW++Iu1DuHHgR4Z4v0mwkqFIvnN BM9fCQ8qgZexyl4+fgf6NY5jFTbsClE6Upucqu6m4Sv/n7EluaRc/2zVTAZek8iKMOST Clhg==
X-Gm-Message-State: AOAM531YInQEnQLdim3CULkNK5s/MZqOwrluOfqrYhd/egSQkPvzHzss iRgAupnFAtEF/5C6eN7ok3TYZ462NOAq0eAXkjuDOoF+3zc=
X-Google-Smtp-Source: ABdhPJwx6beqMX3zLO/IQI0wQ5iPKrHLmVFvPsrjW57ktwmcg70C8JyVHf3KfB0aBon4cT6y9iCZNIO1KddoiVRBNUQ=
X-Received: by 2002:a19:6005:: with SMTP id u5mr385433lfb.367.1605559232394; Mon, 16 Nov 2020 12:40:32 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com>
In-Reply-To: <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com>
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Mon, 16 Nov 2020 12:40:22 -0800
Message-ID: <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com>
To: David Schinazi <dschinazi.ietf@gmail.com>
Cc: Luke Curley <kixelated@gmail.com>, WebTransport <webtransport@ietf.org>,  Lucas Pardue <lucaspardue.24.7@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000b6785405b43f63a8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/Xxf4NNkTJOF0MifaBb-ZhEY5HwA>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2020 20:40:37 -0000

--000000000000b6785405b43f63a8
Content-Type: text/plain; charset="UTF-8"

Luke said:

"My primary concern is that Http3Transport requires non-generic
modifications to the HTTP/3 layer mostly to support connection pooling. I'm
worried that this will limit support for Http3Transport and complicates any
HTTP/3 implementation that does support it."

[BA] I have also heard this concern from developers. The concerns primarily
arise from the pooling of HTTP/3 Request/Responses with WebTransport. This
does enable some interesting use cases, such as a Request/Response (e.g.
gRPC) that can result in a server sending datagrams or initiating
bi-directional or uni-directional streams.  So there is perceived value,
but the question is whether that value will be widely supported across the
HTTP/3 ecosystem.

At this point, most generic HTTP/3 servers are not expected to support
HTTP/3 datagrams (not part of the HTTP/3 protocol) or Http3Transport
(perceived as a niche protocol), so that pooling would only be possible
when using a framework.  node.js will not have QUIC support for 12-18
months (held up by OpenSSL) so even framework support is expected to be
limited.

On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <dschinazi.ietf@gmail.com>
wrote:

>
>
> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com> wrote:
>
>> We're on the same page that there's code in HTTP/3 that could be
>> leveraged for QuicTransport in the form of the header parsing. I think
>> there's a path to merge QuicTransport and Http3Transport by leveraging
>> HTTP/3 for the handshake and QUIC for stream delivery.
>>
>> My primary concern is that Http3Transport requires non-generic
>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>> worried that this will limit support for Http3Transport and complicates any
>> HTTP/3 implementation that does support it.
>>
>
> Hi Luke,
>
> I'm curious, could you elaborate on what these "non-generic modifications
> to the HTTP/3 layer" are please?
>
> Thanks,
> David
>
>
>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <lucaspardue.24.7@gmail.com>
>> wrote:
>>
>>> Hi Luke,
>>>
>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com> wrote:
>>>
>>>> Just to clarify, when I say "QuicTransport is simpler" I really mean
>>>> "QuicTransport has greater interoperability". You can take any QUIC
>>>> implementation (+ datagram extension) and add a thin layer to support
>>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>>> want to see in general as QUIC replaces TCP.
>>>>
>>>
>>> Thanks for the clarification. I appreciate the sentiment. But given the
>>> development of QUIC its kind of surprising that people would find it easier
>>> to identify an implementation that supports QUIC and datagram but does not
>>> support HTTP/3.
>>>
>>> Thr situation for a more clean-room implementation is different, I
>>> agree. However, by the time you've done all the hard stuff with QUIC, a
>>> very focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
>>> compression, server push and extensibility points.
>>>
>>> I also see the current design being the thin end of the wedge. The
>>> proposal I linked talks about HTTP-like header parsing. So its "just" a
>>> thin layer to do some parsing. Then folks will probably want some want to
>>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>>> of GREASE. To extrapolate forward, what would be the delta be between some
>>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>>> years of effort.
>>>
>>> Cheers
>>> Lucas
>>>
>>>
>>>
>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>
>>>>> Hi folks,
>>>>>
>>>>> To follow up on one thread of discussion during IETF 109. To over
>>>>> simplify what we've heard a few folks say, they prefer QuicTransport
>>>>> because it simpler and they don't need pooling.
>>>>>
>>>>> I'd like to push more on this, what is the measurable complexity of
>>>>> HTTP/3 over QUIC plus a new application mapping that needs to be defined?
>>>>> Let's isolate pooling as a variable and ignore it.
>>>>>
>>>>> Victor mentioned his proposal for a unified header semantic across all
>>>>> transports, this is
>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>>> is. I think it's important to avoid something that looks like HTTP but
>>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>>> give it a different ALPN so that we avoid problems related to
>>>>> cross-protocol pooling?
>>>>>
>>>>> Cheers,
>>>>> Lucas
>>>>> --
>>>>> Webtransport mailing list
>>>>> Webtransport@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>
>>>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--000000000000b6785405b43f63a8
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Luke said:=C2=A0<div><br></div><div>&quot;<span style=3D"c=
olor:rgb(80,0,80)">My primary concern is that Http3Transport requires non-g=
eneric modifications to the HTTP/3 layer mostly to support connection pooli=
ng. I&#39;m worried that this will limit support for Http3Transport and com=
plicates any HTTP/3 implementation that does support it.</span>&quot;</div>=
<div><br></div><div>[BA] I have also heard this concern from developers. Th=
e concerns primarily arise from the pooling of HTTP/3 Request/Responses wit=
h WebTransport. This does enable some interesting use cases, such as a Requ=
est/Response (e.g. gRPC) that can result in a server sending datagrams or i=
nitiating bi-directional or uni-directional streams.=C2=A0 So there is perc=
eived value, but the question is whether that value will be widely supporte=
d across the HTTP/3 ecosystem.=C2=A0</div><div><br></div><div>At this point=
, most generic HTTP/3 servers are not expected to support HTTP/3 datagrams =
(not part of the HTTP/3 protocol) or Http3Transport (perceived as a niche p=
rotocol), so that pooling would only be possible when using a framework.=C2=
=A0 node.js will not have=C2=A0QUIC support for 12-18 months (held up by Op=
enSSL) so even framework support is expected to be limited.</div></div><br>=
<div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, No=
v 16, 2020 at 11:37 AM David Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@=
gmail.com">dschinazi.ietf@gmail.com</a>&gt; wrote:<br></div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></=
div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On=
 Mon, Nov 16, 2020 at 11:34 AM Luke Curley &lt;<a href=3D"mailto:kixelated@=
gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div><b=
lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le=
ft:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">We&#39;re =
on the same page that there&#39;s code in HTTP/3 that could be leveraged fo=
r QuicTransport in the form of the header parsing. I think there&#39;s a pa=
th to merge QuicTransport and Http3Transport by leveraging HTTP/3 for the h=
andshake and QUIC for stream delivery.<div><br></div><div>My primary concer=
n is that Http3Transport requires non-generic modifications to the HTTP/3 l=
ayer mostly to support connection pooling. I&#39;m worried that this will l=
imit support for Http3Transport and complicates any HTTP/3 implementation t=
hat does support it.</div></div></blockquote><div><br></div><div>Hi Luke,</=
div><div><br></div><div>I&#39;m curious, could you elaborate on what these =
&quot;non-generic modifications to the HTTP/3 layer&quot; are please?</div>=
<div><br></div><div>Thanks,</div><div>David</div><div>=C2=A0</div><blockquo=
te class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px =
solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"><div di=
r=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue=
 &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" target=3D"_blank">lucasp=
ardue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex"><div dir=3D"auto"><div>Hi Luke,</div><div dir=3D"auto">=
<br><div class=3D"gmail_quote" dir=3D"auto"><div dir=3D"ltr" class=3D"gmail=
_attr">On Mon, 16 Nov 2020, 12:26 Luke Curley, &lt;<a href=3D"mailto:kixela=
ted@gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></di=
v><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;borde=
r-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>J=
ust to clarify, when I say &quot;QuicTransport is simpler&quot; I really me=
an &quot;QuicTransport has greater interoperability&quot;. You can take any=
 QUIC implementation (+ datagram extension) and add a thin layer to support=
 QuicTransport. It&#39;s a nice layering of protocols and it&#39;s somethin=
g that I want to see in general as QUIC replaces TCP.</div></div></blockquo=
te></div></div><div dir=3D"auto"><br></div><div dir=3D"auto">Thanks for the=
 clarification. I appreciate the sentiment. But given the development of QU=
IC its kind of surprising that people would find it easier to identify an i=
mplementation that supports QUIC and datagram but does not support HTTP/3.<=
/div><div dir=3D"auto"><br></div><div dir=3D"auto">Thr situation for a more=
 clean-room implementation is different, I agree. However, by the time you&=
#39;ve done all the hard stuff with QUIC, a very focused HTTP/3 layer ends =
up quite thin too. You can ignore dynamic compression, server push and exte=
nsibility points.</div><div dir=3D"auto"><br></div><div dir=3D"auto">I also=
 see the current design being the thin end of the wedge. The proposal I lin=
ked talks about HTTP-like header parsing. So its &quot;just&quot; a thin la=
yer to do some parsing. Then folks will probably want some want to tweak pa=
rameter, acontrol channel, a way to do graceful close, a sprinkle of GREASE=
. To extrapolate forward, what would be the delta be between some final pro=
duct QuicTransport and HTTP/3. Too small a delta and we&#39;ve wasted years=
 of effort.</div><div dir=3D"auto"><br></div><div dir=3D"auto">Cheers</div>=
<div dir=3D"auto">Lucas</div><div dir=3D"auto"><br></div><div dir=3D"auto">=
<br></div><div dir=3D"auto"><div class=3D"gmail_quote" dir=3D"auto"><blockq=
uote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1p=
x solid rgb(204,204,204);padding-left:1ex"><br><div class=3D"gmail_quote"><=
div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 3:16 AM Lucas =
Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" rel=3D"noreferrer"=
 target=3D"_blank">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br></div><bloc=
kquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:=
1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Hi folks=
,</div><div><br></div><div>To follow up on one thread of discussion during =
IETF 109. To over simplify what we&#39;ve heard a few folks say, they prefe=
r QuicTransport because it simpler and they don&#39;t need pooling.</div><d=
iv><br></div><div>I&#39;d like to push more on this, what is the measurable=
 complexity of HTTP/3 over QUIC plus a new application mapping that needs t=
o be defined? Let&#39;s isolate pooling as a variable and ignore it.</div><=
div><br></div><div>Victor mentioned his proposal for a unified header seman=
tic across all transports, this is <a href=3D"https://github.com/ietf-wg-we=
btrans/draft-ietf-webtrans-overview/pull/4/files" rel=3D"noreferrer" target=
=3D"_blank">https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overvie=
w/pull/4/files</a>. Taking a closer look at it, I have some concerns that I=
 added as comments.  HTTP has semantics for a reason. If QuicTransport is g=
oing to start borrowing HTTP piecemeal, I really wonder how simple people m=
ight feel it is. I think it&#39;s important to avoid something that looks l=
ike HTTP but behaves differently. Is it really much of a stretch to just do=
 HTTP/3 but give it a different ALPN so that we avoid problems related to c=
ross-protocol pooling?</div><div><br></div><div>Cheers,</div><div>Lucas<br>=
</div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>

--000000000000b6785405b43f63a8--


From nobody Mon Nov 16 13:00:33 2020
Return-Path: <dschinazi.ietf@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BF1373A143B for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 13:00:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 aT6rZ-yPW8QY for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 13:00:30 -0800 (PST)
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) (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 C18AF3A1439 for <webtransport@ietf.org>; Mon, 16 Nov 2020 13:00:29 -0800 (PST)
Received: by mail-lj1-x22d.google.com with SMTP id b17so21693070ljf.12 for <webtransport@ietf.org>; Mon, 16 Nov 2020 13:00:29 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ILSlM2ka85uDajYJZUFP4xcxUwPTVI3eld+aMkQg3QI=; b=HJZDFpe6xL896EpD4axs5RgDN+maOW3Y/suK1XOvUmxIM36vweVx+yy7WCt2snNZ1D KkIjJxYYkrSarh3od2gXA/qGtgAFKZ2beh9ApHAcZC6ffvT/JVci2WUeys/kKIlkGuNe z71e9mY9RL2LmijK622hXscZrf28+n03tk8mJ4/LqPQ0Lr+VDWgsXN4sKWdd7DTxsGjl JbWpp8xXBy+PpSlrsdrYrelXuz/VArY/BbcWSRv60Wg2RyV0taAkSOD7d7q7rSDzlTW0 cZIj4fZEJpSb4b1rF3vvKyeu6K2xdY2sZUqkS+0vTK2G2zShddrYukFYuMGsVVKzuDiw w6Ug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ILSlM2ka85uDajYJZUFP4xcxUwPTVI3eld+aMkQg3QI=; b=UKD7K9yp4YrdXRU4dc4/hhnPIf+4YcjKQTG1k3x8Mh6bOSsNYFOkItNNxjDluGOTgx unKCXBxsyGGx+qjUpncGrOWrLUm24byCWbvPSEUvIn5bNk90IHBxr62tNbJXxG51D+2o kGWzFIRalt1P6rAXrwGSSjpkAyqYqttAUwGBprt53LcDHPlRhFCIU90zkQgkjQwagQ23 oY+TCNOkKVU4h6uWUsJ9ljepP+adCtrtCRjnIW6d0Qv2zywPzkw6SptFgl9RByHdsakF rislYXvHL5ftM+VJ+sEqUZnYFoAMcPunGJ5ndNz8bRil+mfWcxP9ivnJKsyCNpzd+Eii zmQg==
X-Gm-Message-State: AOAM533LEwcBgOCqnxYZpvg/cp5cEkxA94WzllwH1SD7VSt0xhjCSntH oP+tsveY/ehLzIrz/8zWMgnf7vETUrwLhyFlcqQ=
X-Google-Smtp-Source: ABdhPJyuTpar/a/K4KdfOQUCmBiC35WJFyYb0GacOzxbd+m2kuXVYubcmzzhXIKTbWvn1GaipFdju9qxNo+Bk8uRJaY=
X-Received: by 2002:a05:651c:319:: with SMTP id a25mr477487ljp.333.1605560427664;  Mon, 16 Nov 2020 13:00:27 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com> <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com>
In-Reply-To: <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com>
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Mon, 16 Nov 2020 13:00:16 -0800
Message-ID: <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com>
To: Bernard Aboba <bernard.aboba@gmail.com>
Cc: Luke Curley <kixelated@gmail.com>, WebTransport <webtransport@ietf.org>,  Lucas Pardue <lucaspardue.24.7@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000f4dbb205b43faa31"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/hqp1-SR8v2tVRbzZAkONXF-qaFc>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2020 21:00:32 -0000

--000000000000f4dbb205b43faa31
Content-Type: text/plain; charset="UTF-8"

On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba <bernard.aboba@gmail.com>
wrote:

> Luke said:
>
> "My primary concern is that Http3Transport requires non-generic
> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
> worried that this will limit support for Http3Transport and complicates any
> HTTP/3 implementation that does support it."
>
> [BA] I have also heard this concern from developers. The concerns
> primarily arise from the pooling of HTTP/3 Request/Responses with
> WebTransport. This does enable some interesting use cases, such as a
> Request/Response (e.g. gRPC) that can result in a server sending datagrams
> or initiating bi-directional or uni-directional streams.  So there is
> perceived value, but the question is whether that value will be widely
> supported across the HTTP/3 ecosystem.
>
> At this point, most generic HTTP/3 servers are not expected to support
> HTTP/3 datagrams (not part of the HTTP/3 protocol) or Http3Transport
> (perceived as a niche protocol), so that pooling would only be possible
> when using a framework.  node.js will not have QUIC support for 12-18
> months (held up by OpenSSL) so even framework support is expected to be
> limited.
>

Where does this come from? A lot of QUIC servers are implementing QUIC
datagrams, and once you have those the delta with h3 datagrams is
negligible. Additionally, multiple h3 server implementers have indicated
they want to support WebTransport. It's starting to feel like the pushback
on HTTP3Transport is purely based on a perception of complexity from folks
who haven't tried to implement it? If that's the case, then we should get
some implementation experience to confirm or debunk that theory.


> On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <dschinazi.ietf@gmail.com>
> wrote:
>
>>
>>
>> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com> wrote:
>>
>>> We're on the same page that there's code in HTTP/3 that could be
>>> leveraged for QuicTransport in the form of the header parsing. I think
>>> there's a path to merge QuicTransport and Http3Transport by leveraging
>>> HTTP/3 for the handshake and QUIC for stream delivery.
>>>
>>> My primary concern is that Http3Transport requires non-generic
>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>> worried that this will limit support for Http3Transport and complicates any
>>> HTTP/3 implementation that does support it.
>>>
>>
>> Hi Luke,
>>
>> I'm curious, could you elaborate on what these "non-generic modifications
>> to the HTTP/3 layer" are please?
>>
>> Thanks,
>> David
>>
>>
>>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <lucaspardue.24.7@gmail.com>
>>> wrote:
>>>
>>>> Hi Luke,
>>>>
>>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com> wrote:
>>>>
>>>>> Just to clarify, when I say "QuicTransport is simpler" I really mean
>>>>> "QuicTransport has greater interoperability". You can take any QUIC
>>>>> implementation (+ datagram extension) and add a thin layer to support
>>>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>>>> want to see in general as QUIC replaces TCP.
>>>>>
>>>>
>>>> Thanks for the clarification. I appreciate the sentiment. But given the
>>>> development of QUIC its kind of surprising that people would find it easier
>>>> to identify an implementation that supports QUIC and datagram but does not
>>>> support HTTP/3.
>>>>
>>>> Thr situation for a more clean-room implementation is different, I
>>>> agree. However, by the time you've done all the hard stuff with QUIC, a
>>>> very focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
>>>> compression, server push and extensibility points.
>>>>
>>>> I also see the current design being the thin end of the wedge. The
>>>> proposal I linked talks about HTTP-like header parsing. So its "just" a
>>>> thin layer to do some parsing. Then folks will probably want some want to
>>>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>>>> of GREASE. To extrapolate forward, what would be the delta be between some
>>>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>>>> years of effort.
>>>>
>>>> Cheers
>>>> Lucas
>>>>
>>>>
>>>>
>>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>
>>>>>> Hi folks,
>>>>>>
>>>>>> To follow up on one thread of discussion during IETF 109. To over
>>>>>> simplify what we've heard a few folks say, they prefer QuicTransport
>>>>>> because it simpler and they don't need pooling.
>>>>>>
>>>>>> I'd like to push more on this, what is the measurable complexity of
>>>>>> HTTP/3 over QUIC plus a new application mapping that needs to be defined?
>>>>>> Let's isolate pooling as a variable and ignore it.
>>>>>>
>>>>>> Victor mentioned his proposal for a unified header semantic across
>>>>>> all transports, this is
>>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>>>> is. I think it's important to avoid something that looks like HTTP but
>>>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>>>> give it a different ALPN so that we avoid problems related to
>>>>>> cross-protocol pooling?
>>>>>>
>>>>>> Cheers,
>>>>>> Lucas
>>>>>> --
>>>>>> Webtransport mailing list
>>>>>> Webtransport@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>
>>>>> --
>>> Webtransport mailing list
>>> Webtransport@ietf.org
>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>
>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
>

--000000000000f4dbb205b43faa31
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 12:40 PM Bern=
ard Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com">bernard.aboba@gmai=
l.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex"><div dir=3D"ltr">Luke said:=C2=A0<div><br></div><div>&quot;<span style=
=3D"color:rgb(80,0,80)">My primary concern is that Http3Transport requires =
non-generic modifications to the HTTP/3 layer mostly to support connection =
pooling. I&#39;m worried that this will limit support for Http3Transport an=
d complicates any HTTP/3 implementation that does support it.</span>&quot;<=
/div><div><br></div><div>[BA] I have also heard this concern from developer=
s. The concerns primarily arise from the pooling of HTTP/3 Request/Response=
s with WebTransport. This does enable some interesting use cases, such as a=
 Request/Response (e.g. gRPC) that can result in a server sending datagrams=
 or initiating bi-directional or uni-directional streams.=C2=A0 So there is=
 perceived value, but the question is whether that value will be widely sup=
ported across the HTTP/3 ecosystem.=C2=A0</div><div><br></div><div>At this =
point, most generic HTTP/3 servers are not expected to support HTTP/3 datag=
rams (not part of the HTTP/3 protocol) or Http3Transport (perceived as a ni=
che protocol), so that pooling would only be possible when using a framewor=
k.=C2=A0 node.js will not have=C2=A0QUIC support for 12-18 months (held up =
by OpenSSL) so even framework support is expected to be limited.</div></div=
></blockquote><div><br></div><div>Where does this come from? A lot of QUIC =
servers are implementing QUIC datagrams, and once you have those the delta =
with h3 datagrams is negligible. Additionally, multiple h3 server implement=
ers=C2=A0have indicated they want to support WebTransport. It&#39;s startin=
g to feel like the pushback on HTTP3Transport=C2=A0is purely based on a per=
ception of complexity from folks who haven&#39;t tried to implement it? If =
that&#39;s the case, then we should get some implementation experience to c=
onfirm or debunk that theory.</div><div>=C2=A0</div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,=
204,204);padding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" clas=
s=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:37 AM David Schinazi &lt;<a hre=
f=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmai=
l.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_qu=
ote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:34 AM=
 Luke Curley &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D"_blank">k=
ixelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote=
" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);=
padding-left:1ex"><div dir=3D"ltr">We&#39;re on the same page that there&#3=
9;s code in HTTP/3 that could be leveraged for QuicTransport in the form of=
 the header parsing. I think there&#39;s a path to merge QuicTransport and =
Http3Transport by leveraging HTTP/3 for the handshake and QUIC for stream d=
elivery.<div><br></div><div>My primary concern is that Http3Transport requi=
res non-generic modifications to the HTTP/3 layer mostly to support connect=
ion pooling. I&#39;m worried that this will limit support for Http3Transpor=
t and complicates any HTTP/3 implementation that does support it.</div></di=
v></blockquote><div><br></div><div>Hi Luke,</div><div><br></div><div>I&#39;=
m curious, could you elaborate on what these &quot;non-generic modification=
s to the HTTP/3 layer&quot; are please?</div><div><br></div><div>Thanks,</d=
iv><div>David</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr"=
>On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue &lt;<a href=3D"mailto:lucaspa=
rdue.24.7@gmail.com" target=3D"_blank">lucaspardue.24.7@gmail.com</a>&gt; w=
rote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p=
x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=
=3D"auto"><div>Hi Luke,</div><div dir=3D"auto"><br><div class=3D"gmail_quot=
e" dir=3D"auto"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, 16 Nov 2020, =
12:26 Luke Curley, &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D"_bl=
ank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex"><div dir=3D"ltr"><div>Just to clarify, when I say &=
quot;QuicTransport is simpler&quot; I really mean &quot;QuicTransport has g=
reater interoperability&quot;. You can take any QUIC implementation (+ data=
gram extension) and add a thin layer to support QuicTransport. It&#39;s a n=
ice layering of protocols and it&#39;s something that I want to see in gene=
ral as QUIC replaces TCP.</div></div></blockquote></div></div><div dir=3D"a=
uto"><br></div><div dir=3D"auto">Thanks for the clarification. I appreciate=
 the sentiment. But given the development of QUIC its kind of surprising th=
at people would find it easier to identify an implementation that supports =
QUIC and datagram but does not support HTTP/3.</div><div dir=3D"auto"><br><=
/div><div dir=3D"auto">Thr situation for a more clean-room implementation i=
s different, I agree. However, by the time you&#39;ve done all the hard stu=
ff with QUIC, a very focused HTTP/3 layer ends up quite thin too. You can i=
gnore dynamic compression, server push and extensibility points.</div><div =
dir=3D"auto"><br></div><div dir=3D"auto">I also see the current design bein=
g the thin end of the wedge. The proposal I linked talks about HTTP-like he=
ader parsing. So its &quot;just&quot; a thin layer to do some parsing. Then=
 folks will probably want some want to tweak parameter, acontrol channel, a=
 way to do graceful close, a sprinkle of GREASE. To extrapolate forward, wh=
at would be the delta be between some final product QuicTransport and HTTP/=
3. Too small a delta and we&#39;ve wasted years of effort.</div><div dir=3D=
"auto"><br></div><div dir=3D"auto">Cheers</div><div dir=3D"auto">Lucas</div=
><div dir=3D"auto"><br></div><div dir=3D"auto"><br></div><div dir=3D"auto">=
<div class=3D"gmail_quote" dir=3D"auto"><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad=
ding-left:1ex"><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gma=
il_attr">On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue &lt;<a href=3D"mailto=
:lucaspardue.24.7@gmail.com" rel=3D"noreferrer" target=3D"_blank">lucaspard=
ue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex"><div dir=3D"ltr"><div>Hi folks,</div><div><br></div><div>T=
o follow up on one thread of discussion during IETF 109. To over simplify w=
hat we&#39;ve heard a few folks say, they prefer QuicTransport because it s=
impler and they don&#39;t need pooling.</div><div><br></div><div>I&#39;d li=
ke to push more on this, what is the measurable complexity of HTTP/3 over Q=
UIC plus a new application mapping that needs to be defined? Let&#39;s isol=
ate pooling as a variable and ignore it.</div><div><br></div><div>Victor me=
ntioned his proposal for a unified header semantic across all transports, t=
his is <a href=3D"https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-o=
verview/pull/4/files" rel=3D"noreferrer" target=3D"_blank">https://github.c=
om/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files</a>. Taking a=
 closer look at it, I have some concerns that I added as comments.  HTTP ha=
s semantics for a reason. If QuicTransport is going to start borrowing HTTP=
 piecemeal, I really wonder how simple people might feel it is. I think it&=
#39;s important to avoid something that looks like HTTP but behaves differe=
ntly. Is it really much of a stretch to just do HTTP/3 but give it a differ=
ent ALPN so that we avoid problems related to cross-protocol pooling?</div>=
<div><br></div><div>Cheers,</div><div>Lucas<br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div></div>

--000000000000f4dbb205b43faa31--


From nobody Mon Nov 16 15:36:35 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0AED13A16A0 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 15:36:34 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 lILKbuc7lMon for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 15:36:31 -0800 (PST)
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com [IPv6:2a00:1450:4864:20::233]) (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 5B0B43A169C for <webtransport@ietf.org>; Mon, 16 Nov 2020 15:36:31 -0800 (PST)
Received: by mail-lj1-x233.google.com with SMTP id h23so22116000ljg.13 for <webtransport@ietf.org>; Mon, 16 Nov 2020 15:36:31 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=quY8mF/TTuPsO4mnS+AXDdWO7zfGbPSjJT6uhvIksy4=; b=Mgzd1583mXgmd3KvV/gCNf7fwfcaYXrRvdp5SsHFAC17/TPEFHgL/cMciYeygJW8le jEj2jYsJA1U7orwNxUB6RdcsTXU6yjM9fjVhQzDS+xWgQdwVKOIG7BxyNI4/1QT2r25Z qLo5/cWiI4UAWor197N4UVvQ+rl9E7YlqWwyZtQNAszQI7PLU4cInq1DUb5+TD670ij3 9qRcFyLjW+KDQe4dJqJ1VHWhFgPO19iGnXRnXSFeMYea04Pv+id65c/+gMBVcfgYKGOE AhJ0kFzl6JUnNotE8S1OqkCpKljATGlCEnP2Mfs2+3PBELVDF30LFalmmHe0qSHuCj5g eYjg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=quY8mF/TTuPsO4mnS+AXDdWO7zfGbPSjJT6uhvIksy4=; b=df0Ig2ct6dupvqZRQyye/g9lV9NpQE9EY5GWull4uCMiduhbEtpIcYTgCZ88910i85 LnH7iM55pLLH/s+1yODOhi1uKYQMQJGDFULrkCy8XTA3JnHtAas1ENJSOGUk36gs1nvK Uqjg75JQeTKE4Q3FoPLoVJxBhNlLxJEvChgVTv1SIiWhr217SovGUhiVFOJjmH9ACP+u fLdSMQyrLP7UQDpgmiS2Yi4ewxrscMKAatuhhnkPU8eLrNnXnjyT3mPDVVI8n8d+2wnn JbcOXAr6mj1WxCpRRCveBUKgSjueHi54Tc3pH+GLojysAcAqUL5EHQjykeh6WbGFEIN4 XfVA==
X-Gm-Message-State: AOAM5306N9lIxOi80CCrc+qVLlXe2RxaobviyfZixbLuHCUIya2Z0cHf gYlO+HJ4lGW4zqwqLVmW3V0N2CTE2ywugSRALF4=
X-Google-Smtp-Source: ABdhPJyPgId6Of1dvqSBYsb9STr6OwZWsruonZ4UfUbKBjpth1uZmClvpDRfhNHz3qIhnYIRXQgidStop2xRdVIJtXw=
X-Received: by 2002:a2e:96c4:: with SMTP id d4mr760000ljj.37.1605569789116; Mon, 16 Nov 2020 15:36:29 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com> <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com> <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com>
In-Reply-To: <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com>
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Mon, 16 Nov 2020 15:36:19 -0800
Message-ID: <CAOW+2dsVSTcvYsKB7XB7GJy6eo4sTr70LJcKWtoQ1KLhVKpmOA@mail.gmail.com>
To: David Schinazi <dschinazi.ietf@gmail.com>
Cc: Luke Curley <kixelated@gmail.com>, WebTransport <webtransport@ietf.org>,  Lucas Pardue <lucaspardue.24.7@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000f1448105b441d8f2"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/z6PZfMIJKXk87F0U0kpDeUeWo4k>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2020 23:36:34 -0000

--000000000000f1448105b441d8f2
Content-Type: text/plain; charset="UTF-8"

David said:

"Where does this come from? A lot of QUIC servers are implementing QUIC
datagrams, and once you have those the delta with h3 datagrams is
negligible. Additionally, multiple h3 server implementers have indicated
they want to support WebTransport. It's starting to feel like the pushback
on HTTP3Transport is purely based on a perception of complexity from folks
who haven't tried to implement it? If that's the case, then we should get
some implementation experience to confirm or debunk that theory."

[BA] The pooling use cases often involve an interaction between an HTTP/3
request/response and WebTransport.  so the HTTP/3 Request doesn't just
elicit an HTTP/3 Response.  It also causes something else to happen,
something that isn't specified in the HTTP/3 protocol, such as eliciting a
datagram flow or bi/unidirectional stream from the server.  This is what is
contemplated in several of the "Live Event" use cases, where the HTTP/3
Request/Response would be requesting the desired Event. The major advantage
over HLS is avoiding Head-of-Line blocking, reducing video freezes and
stalls.  So developers understand the value that support for datagrams and
server-initiated streams can provide - the question is whether they'll have
all the interoperable pieces in place to deploy it.

Just because a generic HTTP/3 server supports QUIC and WebTransport,
doesn't mean that it will support these use cases.  I've been asked whether
better interoperability and wider ecosystem support could be achieved by
extending HTTP/3 in a way more in keeping with the existing protocol design
- such as by allowing an HTTP/3 Request to specify a resource to be
returned in a flow of datagrams.

The situation might be more tenable if the node.js framework had HTTP/3 and
QUIC modules on the horizon.

On Mon, Nov 16, 2020 at 1:00 PM David Schinazi <dschinazi.ietf@gmail.com>
wrote:

>
>
> On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba <bernard.aboba@gmail.com>
> wrote:
>
>> Luke said:
>>
>> "My primary concern is that Http3Transport requires non-generic
>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>> worried that this will limit support for Http3Transport and complicates any
>> HTTP/3 implementation that does support it."
>>
>> [BA] I have also heard this concern from developers. The concerns
>> primarily arise from the pooling of HTTP/3 Request/Responses with
>> WebTransport. This does enable some interesting use cases, such as a
>> Request/Response (e.g. gRPC) that can result in a server sending datagrams
>> or initiating bi-directional or uni-directional streams.  So there is
>> perceived value, but the question is whether that value will be widely
>> supported across the HTTP/3 ecosystem.
>>
>> At this point, most generic HTTP/3 servers are not expected to support
>> HTTP/3 datagrams (not part of the HTTP/3 protocol) or Http3Transport
>> (perceived as a niche protocol), so that pooling would only be possible
>> when using a framework.  node.js will not have QUIC support for 12-18
>> months (held up by OpenSSL) so even framework support is expected to be
>> limited.
>>
>
> Where does this come from? A lot of QUIC servers are implementing QUIC
> datagrams, and once you have those the delta with h3 datagrams is
> negligible. Additionally, multiple h3 server implementers have indicated
> they want to support WebTransport. It's starting to feel like the pushback
> on HTTP3Transport is purely based on a perception of complexity from folks
> who haven't tried to implement it? If that's the case, then we should get
> some implementation experience to confirm or debunk that theory.
>
>
>> On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <dschinazi.ietf@gmail.com>
>> wrote:
>>
>>>
>>>
>>> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com>
>>> wrote:
>>>
>>>> We're on the same page that there's code in HTTP/3 that could be
>>>> leveraged for QuicTransport in the form of the header parsing. I think
>>>> there's a path to merge QuicTransport and Http3Transport by leveraging
>>>> HTTP/3 for the handshake and QUIC for stream delivery.
>>>>
>>>> My primary concern is that Http3Transport requires non-generic
>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>> worried that this will limit support for Http3Transport and complicates any
>>>> HTTP/3 implementation that does support it.
>>>>
>>>
>>> Hi Luke,
>>>
>>> I'm curious, could you elaborate on what these "non-generic
>>> modifications to the HTTP/3 layer" are please?
>>>
>>> Thanks,
>>> David
>>>
>>>
>>>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <
>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>
>>>>> Hi Luke,
>>>>>
>>>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com> wrote:
>>>>>
>>>>>> Just to clarify, when I say "QuicTransport is simpler" I really mean
>>>>>> "QuicTransport has greater interoperability". You can take any QUIC
>>>>>> implementation (+ datagram extension) and add a thin layer to support
>>>>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>>>>> want to see in general as QUIC replaces TCP.
>>>>>>
>>>>>
>>>>> Thanks for the clarification. I appreciate the sentiment. But given
>>>>> the development of QUIC its kind of surprising that people would find it
>>>>> easier to identify an implementation that supports QUIC and datagram but
>>>>> does not support HTTP/3.
>>>>>
>>>>> Thr situation for a more clean-room implementation is different, I
>>>>> agree. However, by the time you've done all the hard stuff with QUIC, a
>>>>> very focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
>>>>> compression, server push and extensibility points.
>>>>>
>>>>> I also see the current design being the thin end of the wedge. The
>>>>> proposal I linked talks about HTTP-like header parsing. So its "just" a
>>>>> thin layer to do some parsing. Then folks will probably want some want to
>>>>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>>>>> of GREASE. To extrapolate forward, what would be the delta be between some
>>>>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>>>>> years of effort.
>>>>>
>>>>> Cheers
>>>>> Lucas
>>>>>
>>>>>
>>>>>
>>>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>
>>>>>>> Hi folks,
>>>>>>>
>>>>>>> To follow up on one thread of discussion during IETF 109. To over
>>>>>>> simplify what we've heard a few folks say, they prefer QuicTransport
>>>>>>> because it simpler and they don't need pooling.
>>>>>>>
>>>>>>> I'd like to push more on this, what is the measurable complexity of
>>>>>>> HTTP/3 over QUIC plus a new application mapping that needs to be defined?
>>>>>>> Let's isolate pooling as a variable and ignore it.
>>>>>>>
>>>>>>> Victor mentioned his proposal for a unified header semantic across
>>>>>>> all transports, this is
>>>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>>>>> is. I think it's important to avoid something that looks like HTTP but
>>>>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>>>>> give it a different ALPN so that we avoid problems related to
>>>>>>> cross-protocol pooling?
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Lucas
>>>>>>> --
>>>>>>> Webtransport mailing list
>>>>>>> Webtransport@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>
>>>>>> --
>>>> Webtransport mailing list
>>>> Webtransport@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>
>>> --
>>> Webtransport mailing list
>>> Webtransport@ietf.org
>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>
>>

--000000000000f1448105b441d8f2
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">David said:=C2=A0<div><b=
r></div><div>&quot;Where does this come from? A lot of QUIC servers are imp=
lementing QUIC datagrams, and once you have those the delta with h3 datagra=
ms is negligible. Additionally, multiple h3 server implementers=C2=A0have i=
ndicated they want to support WebTransport. It&#39;s starting to feel like =
the pushback on HTTP3Transport=C2=A0is purely based on a perception of comp=
lexity from folks who haven&#39;t tried to implement it? If that&#39;s the =
case, then we should get some implementation experience to confirm or debun=
k that theory.&quot;</div><div><br></div><div>[BA] The pooling use cases of=
ten involve an interaction between an HTTP/3 request/response and WebTransp=
ort.=C2=A0 so the HTTP/3 Request doesn&#39;t just elicit an HTTP/3 Response=
.=C2=A0 It also causes something else to happen, something that isn&#39;t s=
pecified in the HTTP/3 protocol, such as eliciting a datagram flow or bi/un=
idirectional stream from the server.=C2=A0 This is what is contemplated in =
several of the &quot;Live Event&quot; use cases, where the HTTP/3 Request/R=
esponse would be requesting the desired Event. The major advantage over HLS=
 is avoiding Head-of-Line blocking, reducing video freezes and stalls.=C2=
=A0 So developers understand the value that support for datagrams and serve=
r-initiated streams can provide - the question is whether they&#39;ll have =
all the interoperable pieces in place to deploy it.=C2=A0 </div><div><br></=
div><div>Just because a generic HTTP/3 server supports QUIC and WebTranspor=
t, doesn&#39;t mean that it will support these use cases.=C2=A0 I&#39;ve be=
en asked whether better interoperability and wider ecosystem support could =
be achieved by extending HTTP/3 in a way more in keeping with the existing =
protocol design - such as by allowing an HTTP/3 Request to specify a resour=
ce to be returned in a flow of datagrams.=C2=A0</div><div><br></div><div>Th=
e situation might be more tenable if the node.js framework had HTTP/3 and Q=
UIC modules on the horizon.<br></div></div></div></div><br><div class=3D"gm=
ail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 1:=
00 PM David Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com">dschin=
azi.ietf@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote=
" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);=
padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div clas=
s=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 202=
0 at 12:40 PM Bernard Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com" =
target=3D"_blank">bernard.aboba@gmail.com</a>&gt; wrote:<br></div><blockquo=
te class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px =
solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">Luke said:=C2=A0<=
div><br></div><div>&quot;<span style=3D"color:rgb(80,0,80)">My primary conc=
ern is that Http3Transport requires non-generic modifications to the HTTP/3=
 layer mostly to support connection pooling. I&#39;m worried that this will=
 limit support for Http3Transport and complicates any HTTP/3 implementation=
 that does support it.</span>&quot;</div><div><br></div><div>[BA] I have al=
so heard this concern from developers. The concerns primarily arise from th=
e pooling of HTTP/3 Request/Responses with WebTransport. This does enable s=
ome interesting use cases, such as a Request/Response (e.g. gRPC) that can =
result in a server sending datagrams or initiating bi-directional or uni-di=
rectional streams.=C2=A0 So there is perceived value, but the question is w=
hether that value will be widely supported across the HTTP/3 ecosystem.=C2=
=A0</div><div><br></div><div>At this point, most generic HTTP/3 servers are=
 not expected to support HTTP/3 datagrams (not part of the HTTP/3 protocol)=
 or Http3Transport (perceived as a niche protocol), so that pooling would o=
nly be possible when using a framework.=C2=A0 node.js will not have=C2=A0QU=
IC support for 12-18 months (held up by OpenSSL) so even framework support =
is expected to be limited.</div></div></blockquote><div><br></div><div>Wher=
e does this come from? A lot of QUIC servers are implementing QUIC datagram=
s, and once you have those the delta with h3 datagrams is negligible. Addit=
ionally, multiple h3 server implementers=C2=A0have indicated they want to s=
upport WebTransport. It&#39;s starting to feel like the pushback on HTTP3Tr=
ansport=C2=A0is purely based on a perception of complexity from folks who h=
aven&#39;t tried to implement it? If that&#39;s the case, then we should ge=
t some implementation experience to confirm or debunk that theory.</div><di=
v>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px=
 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020=
 at 11:37 AM David Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com"=
 target=3D"_blank">dschinazi.ietf@gmail.com</a>&gt; wrote:<br></div><blockq=
uote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1p=
x solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr=
"><br></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_=
attr">On Mon, Nov 16, 2020 at 11:34 AM Luke Curley &lt;<a href=3D"mailto:ki=
xelated@gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br>=
</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;b=
order-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">We=
&#39;re on the same page that there&#39;s code in HTTP/3 that could be leve=
raged for QuicTransport in the form of the header parsing. I think there&#3=
9;s a path to merge QuicTransport and Http3Transport by leveraging HTTP/3 f=
or the handshake and QUIC for stream delivery.<div><br></div><div>My primar=
y concern is that Http3Transport requires non-generic modifications to the =
HTTP/3 layer mostly to support connection pooling. I&#39;m worried that thi=
s will limit support for Http3Transport and complicates any HTTP/3 implemen=
tation that does support it.</div></div></blockquote><div><br></div><div>Hi=
 Luke,</div><div><br></div><div>I&#39;m curious, could you elaborate on wha=
t these &quot;non-generic modifications to the HTTP/3 layer&quot; are pleas=
e?</div><div><br></div><div>Thanks,</div><div>David</div><div>=C2=A0</div><=
blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l=
eft:1px solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"=
><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 4:49 AM Luca=
s Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" target=3D"_blank=
">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"g=
mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204=
,204,204);padding-left:1ex"><div dir=3D"auto"><div>Hi Luke,</div><div dir=
=3D"auto"><br><div class=3D"gmail_quote" dir=3D"auto"><div dir=3D"ltr" clas=
s=3D"gmail_attr">On Mon, 16 Nov 2020, 12:26 Luke Curley, &lt;<a href=3D"mai=
lto:kixelated@gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrot=
e:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0=
.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"l=
tr"><div>Just to clarify, when I say &quot;QuicTransport is simpler&quot; I=
 really mean &quot;QuicTransport has greater interoperability&quot;. You ca=
n take any QUIC implementation (+ datagram extension) and add a thin layer =
to support QuicTransport. It&#39;s a nice layering of protocols and it&#39;=
s something that I want to see in general as QUIC replaces TCP.</div></div>=
</blockquote></div></div><div dir=3D"auto"><br></div><div dir=3D"auto">Than=
ks for the clarification. I appreciate the sentiment. But given the develop=
ment of QUIC its kind of surprising that people would find it easier to ide=
ntify an implementation that supports QUIC and datagram but does not suppor=
t HTTP/3.</div><div dir=3D"auto"><br></div><div dir=3D"auto">Thr situation =
for a more clean-room implementation is different, I agree. However, by the=
 time you&#39;ve done all the hard stuff with QUIC, a very focused HTTP/3 l=
ayer ends up quite thin too. You can ignore dynamic compression, server pus=
h and extensibility points.</div><div dir=3D"auto"><br></div><div dir=3D"au=
to">I also see the current design being the thin end of the wedge. The prop=
osal I linked talks about HTTP-like header parsing. So its &quot;just&quot;=
 a thin layer to do some parsing. Then folks will probably want some want t=
o tweak parameter, acontrol channel, a way to do graceful close, a sprinkle=
 of GREASE. To extrapolate forward, what would be the delta be between some=
 final product QuicTransport and HTTP/3. Too small a delta and we&#39;ve wa=
sted years of effort.</div><div dir=3D"auto"><br></div><div dir=3D"auto">Ch=
eers</div><div dir=3D"auto">Lucas</div><div dir=3D"auto"><br></div><div dir=
=3D"auto"><br></div><div dir=3D"auto"><div class=3D"gmail_quote" dir=3D"aut=
o"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord=
er-left:1px solid rgb(204,204,204);padding-left:1ex"><br><div class=3D"gmai=
l_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 3:16=
 AM Lucas Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" rel=3D"n=
oreferrer" target=3D"_blank">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br><=
/div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><di=
v>Hi folks,</div><div><br></div><div>To follow up on one thread of discussi=
on during IETF 109. To over simplify what we&#39;ve heard a few folks say, =
they prefer QuicTransport because it simpler and they don&#39;t need poolin=
g.</div><div><br></div><div>I&#39;d like to push more on this, what is the =
measurable complexity of HTTP/3 over QUIC plus a new application mapping th=
at needs to be defined? Let&#39;s isolate pooling as a variable and ignore =
it.</div><div><br></div><div>Victor mentioned his proposal for a unified he=
ader semantic across all transports, this is <a href=3D"https://github.com/=
ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files" rel=3D"noreferr=
er" target=3D"_blank">https://github.com/ietf-wg-webtrans/draft-ietf-webtra=
ns-overview/pull/4/files</a>. Taking a closer look at it, I have some conce=
rns that I added as comments.  HTTP has semantics for a reason. If QuicTran=
sport is going to start borrowing HTTP piecemeal, I really wonder how simpl=
e people might feel it is. I think it&#39;s important to avoid something th=
at looks like HTTP but behaves differently. Is it really much of a stretch =
to just do HTTP/3 but give it a different ALPN so that we avoid problems re=
lated to cross-protocol pooling?</div><div><br></div><div>Cheers,</div><div=
>Lucas<br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>

--000000000000f1448105b441d8f2--


From nobody Mon Nov 16 16:46:08 2020
Return-Path: <ianswett@google.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9C8793A1799 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 16:46:06 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.599
X-Spam-Level: 
X-Spam-Status: No, score=-17.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, 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 jV00b71ulQMq for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 16:46:04 -0800 (PST)
Received: from mail-yb1-xb2b.google.com (mail-yb1-xb2b.google.com [IPv6:2607:f8b0:4864:20::b2b]) (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 3E5FA3A1797 for <webtransport@ietf.org>; Mon, 16 Nov 2020 16:45:50 -0800 (PST)
Received: by mail-yb1-xb2b.google.com with SMTP id w5so4947530ybj.11 for <webtransport@ietf.org>; Mon, 16 Nov 2020 16:45:50 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=3tQi2Xd0PoaA0VDxNwmvvPhYhIiG4ybJMOXxyQUNBJ0=; b=GHSWzCNMrZnxP75bpMYVeMioIIn9Tndy1E/5fLx/jMlysYeZjRh0SEhj7k9MekCKBX xEuXJHrbB8uAgWWzo7XGDD/xx520qpA6r7EidyRT90isOZLMkqH9GjI9Wy4y/0TsHPZD DLzLRM70Kf/mhHqk+6Pff+m+MViGBCW4/pRkznMfVfLi8rceTOoFE0ryd1uw7SdvfsZ2 O+XqlatQBA3uWkH5W0rm9+wcPAIISmohVq8+bOuSvEuBeZEimAkb8YtGtuIRGrXeMKoF 5D0dPfNZiTxK8w9lAK2odNqipvgJsQgtg67hWBj7YsEVTqvT/fX9dUHZBzT4EYWw7Rbs rgew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=3tQi2Xd0PoaA0VDxNwmvvPhYhIiG4ybJMOXxyQUNBJ0=; b=qpEQ9aJQ0H9ll/e8jWU3A/LGowKF8gFytObvfITzpiFOC7EE0MsyA8zimfnLfeqdzP kk1HtBLzHgVHOaGBz3O1XsszMGNq6QHz/DZ6JjQV88MdIrb2uzpBsQ2KXKS27sCIYL/Y dRsDsp2VxFtc8SLrzsnHH4pIR3S5Hy+HMa43KvSMIc3+jb7YtNVUT53GBYgpXkfWbqmn hg5zWrad7GK/Gc5x+hFK8a9EgGKXveE/9j6DRuJLLfZjY1sPeIqjEPKtfcJD4jBF/zGL KUdLzWCblYIVKQQacRiHDXJzdbsEFAw/28LZJM8/6VTQBfqq3KKmSJDa9XlPcRKZBDzZ UOGQ==
X-Gm-Message-State: AOAM533sKEbxinsu+s50dq7yGUTgUW8YFPef0jnoOrZqsqX9oUtLhQDH faDXziKSpVQRsVCjl1iNHbNp3ML4Ha2EYAcn26FQNQ==
X-Google-Smtp-Source: ABdhPJxzccGpxulQ17noyoBCogGVHjK4lHu6X+sihBzG4dUntni4B/tgPqg/23Ir5oDeOFYW/4sNQ0Ep1eYaIHah990=
X-Received: by 2002:a25:7e82:: with SMTP id z124mr29070773ybc.388.1605573949130;  Mon, 16 Nov 2020 16:45:49 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com> <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com> <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com> <CAOW+2dsVSTcvYsKB7XB7GJy6eo4sTr70LJcKWtoQ1KLhVKpmOA@mail.gmail.com>
In-Reply-To: <CAOW+2dsVSTcvYsKB7XB7GJy6eo4sTr70LJcKWtoQ1KLhVKpmOA@mail.gmail.com>
From: Ian Swett <ianswett@google.com>
Date: Mon, 16 Nov 2020 19:45:37 -0500
Message-ID: <CAKcm_gPUfBUVz8Kh-jbHeUDCOAfF6FsjLHYsF6aZDgbCkMUw8Q@mail.gmail.com>
To: Bernard Aboba <bernard.aboba@gmail.com>
Cc: David Schinazi <dschinazi.ietf@gmail.com>, WebTransport <webtransport@ietf.org>,  Luke Curley <kixelated@gmail.com>, Lucas Pardue <lucaspardue.24.7@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000e6724305b442d01f"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/IF4Ihx17sa1VIQcjHEBgCCPU58g>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2020 00:46:07 -0000

--000000000000e6724305b442d01f
Content-Type: text/plain; charset="UTF-8"

I'm *very* concerned about any functionality that *requires* pooling.
Pooling is a client-specific optimization and pooling policy is subject to
change(within reason) at any time.  If applications are saying "it'd be
cool if we could share congestion control and loss recovery state between
H3 and WebTransport most of the time", then I can see there being
real(albeit small) benefits, just like there would be for putting
DataChannels and RTP into one QUIC connection for WebRTC.  If people are
intending to rely on pooling so an HTTP(hopefully H3) request can trigger a
WebTransport response, I think we're in a world of pain and
over-optimization.

This is more obvious in light of the fact that a WebTransport endpoint is
likely not a generic CDN endpoint, as has been clearly stated by Mark
Nottingham.

Bernard's comments above point to a tighter coupling between HTTP/3 and
WebTransport than I think is practical in production, unless I
misunderstood(which I may have, it's been a long day).

All of this makes me think we should punt the HTTP based WebTransport
options down the road a year or so and focus on QuicTransport initially.
It's not to say we won't do them, but they're clearly more complex
than QuicTransport and it'd be good to have real deployment experience
prior to starting so we know what the requirements are and where the
dragons are lurking.  Also, the W3C should design APIs that make it easy to
detect failure to establish a QUIC-based WebTransport, and this ensures
those are well exercised.  Maybe we DO require pooling under certain
conditions and describe those, but there are likely privacy concerns under
some circumstances and I'm not enough of an expert to know what would be
acceptable to all clients.

Some people in the WG may think we have to release a TCP based WebTransport
at the same time as a QUIC based one, but I don't think that's true and
even if we standardized them at the same time, it doesn't mean both will
achieve wide deployment at the same time.  As I said at the mic, I don't
see any reason YouTube would deploy a TCP based WebTransport given it will
have to maintain an HTTP/1.1 option for basically forever and they've spent
a good bit of effort to make sure that works as well as it can.  It's clear
to me there are compelling use cases right now for QuicTransport, but the
driving use cases for the fallback are not clear to me.  Consistency is
intellectually appealing, but doesn't drive deployments.

Ian

On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba <bernard.aboba@gmail.com>
wrote:

> David said:
>
> "Where does this come from? A lot of QUIC servers are implementing QUIC
> datagrams, and once you have those the delta with h3 datagrams is
> negligible. Additionally, multiple h3 server implementers have indicated
> they want to support WebTransport. It's starting to feel like the pushback
> on HTTP3Transport is purely based on a perception of complexity from folks
> who haven't tried to implement it? If that's the case, then we should get
> some implementation experience to confirm or debunk that theory."
>
> [BA] The pooling use cases often involve an interaction between an HTTP/3
> request/response and WebTransport.  so the HTTP/3 Request doesn't just
> elicit an HTTP/3 Response.  It also causes something else to happen,
> something that isn't specified in the HTTP/3 protocol, such as eliciting a
> datagram flow or bi/unidirectional stream from the server.  This is what is
> contemplated in several of the "Live Event" use cases, where the HTTP/3
> Request/Response would be requesting the desired Event. The major advantage
> over HLS is avoiding Head-of-Line blocking, reducing video freezes and
> stalls.  So developers understand the value that support for datagrams and
> server-initiated streams can provide - the question is whether they'll have
> all the interoperable pieces in place to deploy it.
>
> Just because a generic HTTP/3 server supports QUIC and WebTransport,
> doesn't mean that it will support these use cases.  I've been asked whether
> better interoperability and wider ecosystem support could be achieved by
> extending HTTP/3 in a way more in keeping with the existing protocol design
> - such as by allowing an HTTP/3 Request to specify a resource to be
> returned in a flow of datagrams.
>
> The situation might be more tenable if the node.js framework had HTTP/3
> and QUIC modules on the horizon.
>
> On Mon, Nov 16, 2020 at 1:00 PM David Schinazi <dschinazi.ietf@gmail.com>
> wrote:
>
>>
>>
>> On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba <bernard.aboba@gmail.com>
>> wrote:
>>
>>> Luke said:
>>>
>>> "My primary concern is that Http3Transport requires non-generic
>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>> worried that this will limit support for Http3Transport and complicates any
>>> HTTP/3 implementation that does support it."
>>>
>>> [BA] I have also heard this concern from developers. The concerns
>>> primarily arise from the pooling of HTTP/3 Request/Responses with
>>> WebTransport. This does enable some interesting use cases, such as a
>>> Request/Response (e.g. gRPC) that can result in a server sending datagrams
>>> or initiating bi-directional or uni-directional streams.  So there is
>>> perceived value, but the question is whether that value will be widely
>>> supported across the HTTP/3 ecosystem.
>>>
>>> At this point, most generic HTTP/3 servers are not expected to support
>>> HTTP/3 datagrams (not part of the HTTP/3 protocol) or Http3Transport
>>> (perceived as a niche protocol), so that pooling would only be possible
>>> when using a framework.  node.js will not have QUIC support for 12-18
>>> months (held up by OpenSSL) so even framework support is expected to be
>>> limited.
>>>
>>
>> Where does this come from? A lot of QUIC servers are implementing QUIC
>> datagrams, and once you have those the delta with h3 datagrams is
>> negligible. Additionally, multiple h3 server implementers have indicated
>> they want to support WebTransport. It's starting to feel like the pushback
>> on HTTP3Transport is purely based on a perception of complexity from folks
>> who haven't tried to implement it? If that's the case, then we should get
>> some implementation experience to confirm or debunk that theory.
>>
>>
>>> On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <
>>> dschinazi.ietf@gmail.com> wrote:
>>>
>>>>
>>>>
>>>> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com>
>>>> wrote:
>>>>
>>>>> We're on the same page that there's code in HTTP/3 that could be
>>>>> leveraged for QuicTransport in the form of the header parsing. I think
>>>>> there's a path to merge QuicTransport and Http3Transport by leveraging
>>>>> HTTP/3 for the handshake and QUIC for stream delivery.
>>>>>
>>>>> My primary concern is that Http3Transport requires non-generic
>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>> HTTP/3 implementation that does support it.
>>>>>
>>>>
>>>> Hi Luke,
>>>>
>>>> I'm curious, could you elaborate on what these "non-generic
>>>> modifications to the HTTP/3 layer" are please?
>>>>
>>>> Thanks,
>>>> David
>>>>
>>>>
>>>>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <
>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>
>>>>>> Hi Luke,
>>>>>>
>>>>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com> wrote:
>>>>>>
>>>>>>> Just to clarify, when I say "QuicTransport is simpler" I really mean
>>>>>>> "QuicTransport has greater interoperability". You can take any QUIC
>>>>>>> implementation (+ datagram extension) and add a thin layer to support
>>>>>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>>>>>> want to see in general as QUIC replaces TCP.
>>>>>>>
>>>>>>
>>>>>> Thanks for the clarification. I appreciate the sentiment. But given
>>>>>> the development of QUIC its kind of surprising that people would find it
>>>>>> easier to identify an implementation that supports QUIC and datagram but
>>>>>> does not support HTTP/3.
>>>>>>
>>>>>> Thr situation for a more clean-room implementation is different, I
>>>>>> agree. However, by the time you've done all the hard stuff with QUIC, a
>>>>>> very focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
>>>>>> compression, server push and extensibility points.
>>>>>>
>>>>>> I also see the current design being the thin end of the wedge. The
>>>>>> proposal I linked talks about HTTP-like header parsing. So its "just" a
>>>>>> thin layer to do some parsing. Then folks will probably want some want to
>>>>>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>>>>>> of GREASE. To extrapolate forward, what would be the delta be between some
>>>>>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>>>>>> years of effort.
>>>>>>
>>>>>> Cheers
>>>>>> Lucas
>>>>>>
>>>>>>
>>>>>>
>>>>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>
>>>>>>>> Hi folks,
>>>>>>>>
>>>>>>>> To follow up on one thread of discussion during IETF 109. To over
>>>>>>>> simplify what we've heard a few folks say, they prefer QuicTransport
>>>>>>>> because it simpler and they don't need pooling.
>>>>>>>>
>>>>>>>> I'd like to push more on this, what is the measurable complexity of
>>>>>>>> HTTP/3 over QUIC plus a new application mapping that needs to be defined?
>>>>>>>> Let's isolate pooling as a variable and ignore it.
>>>>>>>>
>>>>>>>> Victor mentioned his proposal for a unified header semantic across
>>>>>>>> all transports, this is
>>>>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>>>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>>>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>>>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>>>>>> is. I think it's important to avoid something that looks like HTTP but
>>>>>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>>>>>> give it a different ALPN so that we avoid problems related to
>>>>>>>> cross-protocol pooling?
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>> Lucas
>>>>>>>> --
>>>>>>>> Webtransport mailing list
>>>>>>>> Webtransport@ietf.org
>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>
>>>>>>> --
>>>>> Webtransport mailing list
>>>>> Webtransport@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>
>>>> --
>>>> Webtransport mailing list
>>>> Webtransport@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>
>>> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--000000000000e6724305b442d01f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">I&#39;m <b>very</b> concerned about any functionality that=
 <b>requires</b> pooling.=C2=A0 Pooling is a client-specific optimization a=
nd pooling policy is subject to change(within reason) at any time.=C2=A0 If=
 applications=C2=A0are saying &quot;it&#39;d be cool if we could share cong=
estion control and loss recovery state between H3 and WebTransport most of =
the time&quot;, then I can see there being real(albeit small) benefits, jus=
t like there would be for putting DataChannels and RTP into one QUIC connec=
tion for WebRTC.=C2=A0 If people are intending to rely on pooling so an HTT=
P(hopefully H3) request can trigger a WebTransport response, I think we&#39=
;re in a world of pain and over-optimization.<div><br></div><div>This is mo=
re obvious in light of the fact that a WebTransport endpoint=C2=A0is likely=
 not a generic CDN endpoint, as has been clearly stated by Mark Nottingham.=
<br><div><br></div><div>Bernard&#39;s comments above point to a tighter cou=
pling between HTTP/3 and WebTransport than I think is practical in producti=
on, unless I misunderstood(which I may have, it&#39;s been a long day).</di=
v><div><br></div><div>All of this makes me think we should punt the HTTP ba=
sed WebTransport options down the road a year or so and focus on QuicTransp=
ort=C2=A0initially.=C2=A0 It&#39;s not to say we won&#39;t do them, but the=
y&#39;re clearly more complex than=C2=A0QuicTransport=C2=A0and it&#39;d be =
good to have real deployment experience prior to starting so we know what t=
he requirements are and where the dragons are lurking.=C2=A0 Also, the W3C =
should design APIs that make it easy to detect failure to establish a QUIC-=
based=C2=A0WebTransport, and this ensures those are well exercised.=C2=A0 M=
aybe we DO require pooling under certain conditions and describe those, but=
 there are likely privacy concerns under some circumstances and I&#39;m not=
 enough of an expert to know what would be acceptable to all clients.</div>=
<div><br></div><div>Some=C2=A0people in the WG may think we have to release=
 a TCP based WebTransport at the same time as a QUIC based one, but I don&#=
39;t think that&#39;s true and even if we standardized them at the same tim=
e, it doesn&#39;t mean both will achieve wide deployment at the same time.=
=C2=A0 As I said at the mic, I don&#39;t see any reason YouTube would deplo=
y a TCP based WebTransport given it will have to maintain an HTTP/1.1 optio=
n for basically forever and they&#39;ve spent a good bit of effort to make =
sure that works as well as it can.=C2=A0 It&#39;s clear to me there are com=
pelling use cases right now for QuicTransport, but=C2=A0the driving use cas=
es for the fallback are not clear to me.=C2=A0 Consistency is intellectuall=
y appealing, but doesn&#39;t drive deployments.</div></div><div><br></div><=
div>Ian</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D=
"gmail_attr">On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba &lt;<a href=3D"m=
ailto:bernard.aboba@gmail.com">bernard.aboba@gmail.com</a>&gt; wrote:<br></=
div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bor=
der-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div=
 dir=3D"ltr"><div dir=3D"ltr">David said:=C2=A0<div><br></div><div>&quot;Wh=
ere does this come from? A lot of QUIC servers are implementing QUIC datagr=
ams, and once you have those the delta with h3 datagrams is negligible. Add=
itionally, multiple h3 server implementers=C2=A0have indicated they want to=
 support WebTransport. It&#39;s starting to feel like the pushback on HTTP3=
Transport=C2=A0is purely based on a perception of complexity from folks who=
 haven&#39;t tried to implement it? If that&#39;s the case, then we should =
get some implementation experience to confirm or debunk that theory.&quot;<=
/div><div><br></div><div>[BA] The pooling use cases often involve an intera=
ction between an HTTP/3 request/response and WebTransport.=C2=A0 so the HTT=
P/3 Request doesn&#39;t just elicit an HTTP/3 Response.=C2=A0 It also cause=
s something else to happen, something that isn&#39;t specified in the HTTP/=
3 protocol, such as eliciting a datagram flow or bi/unidirectional stream f=
rom the server.=C2=A0 This is what is contemplated in several of the &quot;=
Live Event&quot; use cases, where the HTTP/3 Request/Response would be requ=
esting the desired Event. The major advantage over HLS is avoiding Head-of-=
Line blocking, reducing video freezes and stalls.=C2=A0 So developers under=
stand the value that support for datagrams and server-initiated streams can=
 provide - the question is whether they&#39;ll have all the interoperable p=
ieces in place to deploy it.=C2=A0 </div><div><br></div><div>Just because a=
 generic HTTP/3 server supports QUIC and WebTransport, doesn&#39;t mean tha=
t it will support these use cases.=C2=A0 I&#39;ve been asked whether better=
 interoperability and wider ecosystem support could be achieved by extendin=
g HTTP/3 in a way more in keeping with the existing protocol design - such =
as by allowing an HTTP/3 Request to specify a resource to be returned in a =
flow of datagrams.=C2=A0</div><div><br></div><div>The situation might be mo=
re tenable if the node.js framework had HTTP/3 and QUIC modules on the hori=
zon.<br></div></div></div></div><br><div class=3D"gmail_quote"><div dir=3D"=
ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 1:00 PM David Schinazi &l=
t;<a href=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.i=
etf@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" sty=
le=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddi=
ng-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"=
gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at =
12:40 PM Bernard Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com" targe=
t=3D"_blank">bernard.aboba@gmail.com</a>&gt; wrote:<br></div><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid=
 rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">Luke said:=C2=A0<div><=
br></div><div>&quot;<span style=3D"color:rgb(80,0,80)">My primary concern i=
s that Http3Transport requires non-generic modifications to the HTTP/3 laye=
r mostly to support connection pooling. I&#39;m worried that this will limi=
t support for Http3Transport and complicates any HTTP/3 implementation that=
 does support it.</span>&quot;</div><div><br></div><div>[BA] I have also he=
ard this concern from developers. The concerns primarily arise from the poo=
ling of HTTP/3 Request/Responses with WebTransport. This does enable some i=
nteresting use cases, such as a Request/Response (e.g. gRPC) that can resul=
t in a server sending datagrams or initiating bi-directional or uni-directi=
onal streams.=C2=A0 So there is perceived value, but the question is whethe=
r that value will be widely supported across the HTTP/3 ecosystem.=C2=A0</d=
iv><div><br></div><div>At this point, most generic HTTP/3 servers are not e=
xpected to support HTTP/3 datagrams (not part of the HTTP/3 protocol) or Ht=
tp3Transport (perceived as a niche protocol), so that pooling would only be=
 possible when using a framework.=C2=A0 node.js will not have=C2=A0QUIC sup=
port for 12-18 months (held up by OpenSSL) so even framework support is exp=
ected to be limited.</div></div></blockquote><div><br></div><div>Where does=
 this come from? A lot of QUIC servers are implementing QUIC datagrams, and=
 once you have those the delta with h3 datagrams is negligible. Additionall=
y, multiple h3 server implementers=C2=A0have indicated they want to support=
 WebTransport. It&#39;s starting to feel like the pushback on HTTP3Transpor=
t=C2=A0is purely based on a perception of complexity from folks who haven&#=
39;t tried to implement it? If that&#39;s the case, then we should get some=
 implementation experience to confirm or debunk that theory.</div><div>=C2=
=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8e=
x;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=3D"gm=
ail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11=
:37 AM David Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com" targe=
t=3D"_blank">dschinazi.ietf@gmail.com</a>&gt; wrote:<br></div><blockquote c=
lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px soli=
d rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br>=
</div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">=
On Mon, Nov 16, 2020 at 11:34 AM Luke Curley &lt;<a href=3D"mailto:kixelate=
d@gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div>=
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">We&#39;r=
e on the same page that there&#39;s code in HTTP/3 that could be leveraged =
for QuicTransport in the form of the header parsing. I think there&#39;s a =
path to merge QuicTransport and Http3Transport by leveraging HTTP/3 for the=
 handshake and QUIC for stream delivery.<div><br></div><div>My primary conc=
ern is that Http3Transport requires non-generic modifications to the HTTP/3=
 layer mostly to support connection pooling. I&#39;m worried that this will=
 limit support for Http3Transport and complicates any HTTP/3 implementation=
 that does support it.</div></div></blockquote><div><br></div><div>Hi Luke,=
</div><div><br></div><div>I&#39;m curious, could you elaborate on what thes=
e &quot;non-generic modifications to the HTTP/3 layer&quot; are please?</di=
v><div><br></div><div>Thanks,</div><div>David</div><div>=C2=A0</div><blockq=
uote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1p=
x solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"><div =
dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 4:49 AM Lucas Pard=
ue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" target=3D"_blank">luca=
spardue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_q=
uote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,2=
04);padding-left:1ex"><div dir=3D"auto"><div>Hi Luke,</div><div dir=3D"auto=
"><br><div class=3D"gmail_quote" dir=3D"auto"><div dir=3D"ltr" class=3D"gma=
il_attr">On Mon, 16 Nov 2020, 12:26 Luke Curley, &lt;<a href=3D"mailto:kixe=
lated@gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></=
div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bor=
der-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div=
>Just to clarify, when I say &quot;QuicTransport is simpler&quot; I really =
mean &quot;QuicTransport has greater interoperability&quot;. You can take a=
ny QUIC implementation (+ datagram extension) and add a thin layer to suppo=
rt QuicTransport. It&#39;s a nice layering of protocols and it&#39;s someth=
ing that I want to see in general as QUIC replaces TCP.</div></div></blockq=
uote></div></div><div dir=3D"auto"><br></div><div dir=3D"auto">Thanks for t=
he clarification. I appreciate the sentiment. But given the development of =
QUIC its kind of surprising that people would find it easier to identify an=
 implementation that supports QUIC and datagram but does not support HTTP/3=
.</div><div dir=3D"auto"><br></div><div dir=3D"auto">Thr situation for a mo=
re clean-room implementation is different, I agree. However, by the time yo=
u&#39;ve done all the hard stuff with QUIC, a very focused HTTP/3 layer end=
s up quite thin too. You can ignore dynamic compression, server push and ex=
tensibility points.</div><div dir=3D"auto"><br></div><div dir=3D"auto">I al=
so see the current design being the thin end of the wedge. The proposal I l=
inked talks about HTTP-like header parsing. So its &quot;just&quot; a thin =
layer to do some parsing. Then folks will probably want some want to tweak =
parameter, acontrol channel, a way to do graceful close, a sprinkle of GREA=
SE. To extrapolate forward, what would be the delta be between some final p=
roduct QuicTransport and HTTP/3. Too small a delta and we&#39;ve wasted yea=
rs of effort.</div><div dir=3D"auto"><br></div><div dir=3D"auto">Cheers</di=
v><div dir=3D"auto">Lucas</div><div dir=3D"auto"><br></div><div dir=3D"auto=
"><br></div><div dir=3D"auto"><div class=3D"gmail_quote" dir=3D"auto"><bloc=
kquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:=
1px solid rgb(204,204,204);padding-left:1ex"><br><div class=3D"gmail_quote"=
><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 3:16 AM Luca=
s Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" rel=3D"noreferre=
r" target=3D"_blank">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br></div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Hi fol=
ks,</div><div><br></div><div>To follow up on one thread of discussion durin=
g IETF 109. To over simplify what we&#39;ve heard a few folks say, they pre=
fer QuicTransport because it simpler and they don&#39;t need pooling.</div>=
<div><br></div><div>I&#39;d like to push more on this, what is the measurab=
le complexity of HTTP/3 over QUIC plus a new application mapping that needs=
 to be defined? Let&#39;s isolate pooling as a variable and ignore it.</div=
><div><br></div><div>Victor mentioned his proposal for a unified header sem=
antic across all transports, this is <a href=3D"https://github.com/ietf-wg-=
webtrans/draft-ietf-webtrans-overview/pull/4/files" rel=3D"noreferrer" targ=
et=3D"_blank">https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overv=
iew/pull/4/files</a>. Taking a closer look at it, I have some concerns that=
 I added as comments.  HTTP has semantics for a reason. If QuicTransport is=
 going to start borrowing HTTP piecemeal, I really wonder how simple people=
 might feel it is. I think it&#39;s important to avoid something that looks=
 like HTTP but behaves differently. Is it really much of a stretch to just =
do HTTP/3 but give it a different ALPN so that we avoid problems related to=
 cross-protocol pooling?</div><div><br></div><div>Cheers,</div><div>Lucas<b=
r></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>

--000000000000e6724305b442d01f--


From nobody Mon Nov 16 17:10:16 2020
Return-Path: <dschinazi.ietf@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 72AFB3A17EB for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 17:10:15 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 D73up1Ihw624 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 17:10:13 -0800 (PST)
Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com [IPv6:2a00:1450:4864:20::129]) (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 8A7BE3A17E9 for <webtransport@ietf.org>; Mon, 16 Nov 2020 17:10:12 -0800 (PST)
Received: by mail-lf1-x129.google.com with SMTP id f11so27853106lfs.3 for <webtransport@ietf.org>; Mon, 16 Nov 2020 17:10:12 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=jQGe+S66YRqq6pnClx4acTsXhXcDFi6hayVJJH86jaM=; b=WLQAnMV5jD1SUOpEJndPAWd/uPjQ1UNCTgRmNqZ/7vyEQ7E8Sm24SZqSauWb5K2kFr fLn+kPHezEcnK4MzZ0dkXchpYNi/BFQ7XfkE/8EElZ70Gd4g+sHzQ3lYvzPnPnSKvWx9 XoNMd07CH6bukFoF1G3uRvwLGQhWPFiPjlawmDhTuVsL25B7mjNxxSUud8+FvxPmVLhX MJm92tAWX6legIyQkQMpI1McwxvwLS7cQpdHBydOwlK8x5pUUF59X5tkRvKv7qlhQeGN AVU5P54EiHOB3LiCmJFBZgSOMEZtihL2FzyiDGkQXqrz7G52v7FNfj53yMl3J2Ok2109 sypg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=jQGe+S66YRqq6pnClx4acTsXhXcDFi6hayVJJH86jaM=; b=fpks4obqIqR91EEgPSsgTfNDhqN1oTaD929GxNQe9QUXOm+mOQABT63OuVsCIxzS5o ZzBPOHUXf4fbvzS1AsufDGIZRVpSh8XkXM06oKNi0HnWQcez/0i0vkkcyuto4pEqlk/X M1jDsL6e2DIWI56bvJrSNsACiSrDbEySFh9BRKP/6n09osz7nRvmh5Xb9XZw5a+xINzX FIHiRmZ822Uxb2wDs7Z8jjJBE52SmbM0+9TvV9zPBh81PgC1CojRSdfl7fJaOBjLGtQ4 /SuosPgd6sNXAAjruyzfRZoZo2qGYq2MMgilpgvtTMARVtC6Jcmdvl5steeRV+9XiiCl 5VcQ==
X-Gm-Message-State: AOAM5302Kzgfm/Kj7gkkqRzY/6C4qHft5ICuxg3oAfwg5XZbqWnxm/Q7 apXkV6bCdb7SlboWuJxQCccxCHRSkNwGBR3a2L0=
X-Google-Smtp-Source: ABdhPJzjnvF412APRTuhs8iB/16GOgIuGps2SFTG/6HHftEyfE2NzMRau8NRCOqtWs95HCHuBvpvtyBrF4/ZqthubW4=
X-Received: by 2002:a19:e4a:: with SMTP id 71mr654837lfo.505.1605575410532; Mon, 16 Nov 2020 17:10:10 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com> <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com> <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com> <CAOW+2dsVSTcvYsKB7XB7GJy6eo4sTr70LJcKWtoQ1KLhVKpmOA@mail.gmail.com> <CAKcm_gPUfBUVz8Kh-jbHeUDCOAfF6FsjLHYsF6aZDgbCkMUw8Q@mail.gmail.com>
In-Reply-To: <CAKcm_gPUfBUVz8Kh-jbHeUDCOAfF6FsjLHYsF6aZDgbCkMUw8Q@mail.gmail.com>
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Mon, 16 Nov 2020 17:09:59 -0800
Message-ID: <CAPDSy+6TCOJwxDgS+tWyshDnMDrwGYSYVQMSw3rdgj_GtE2E5g@mail.gmail.com>
To: Ian Swett <ianswett@google.com>
Cc: Bernard Aboba <bernard.aboba@gmail.com>, WebTransport <webtransport@ietf.org>,  Luke Curley <kixelated@gmail.com>, Lucas Pardue <lucaspardue.24.7@gmail.com>
Content-Type: multipart/alternative; boundary="0000000000000143cf05b44328dc"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/c7-LIpF5YK2xjHPu-srubptlGxM>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2020 01:10:15 -0000

--0000000000000143cf05b44328dc
Content-Type: text/plain; charset="UTF-8"

I'd like us to take a step back, I think we're conflating many different
topics here, and it's making it impossible to reason about this (at least
for someone running on not enough sleep like I am this week).

Topic 1: the complexity of implementing Http3Transport as opposed to
QuicTransport on the client
    From my perspective, all browsers interested in WebTransport are
implementing HTTP/3, so I don't see much complexity there.
    Please reply here if you know of complexities I'm not seeing

Topic 2: the complexity of implementing Http3Transport as opposed to
QuicTransport on the server
    As far as I know, most server-side QUIC stacks also support HTTP/3, and
for QuicTransport they already have DATAGRAM support so I think the delta
is negligible.
    Please reply here if you know of complexities I'm not seeing

Topic 3: the benefits of pooling WebTransport
    This allows saving round trips to get WebTransport up and running
    This allows sharing congestion control state
    This allows letting the QUIC implementation prioritize DATAGRAMs vs
HTTP requests instead of relying on the kernel or routers which have less
information
    Overall, I think pooling is beneficial (though not an absolute
must-have)
    Please reply here if you know of benefits I'm not seeing

Topic 4: the difficulty of pooling Http3Transport on the client
    It appears that all browsers that are interested in WebTransport are
implementing pooling in their HTTP/3 stack so additionally pooling
WebTransport should not introduce more complexity
    Please reply here if you know of complexities I'm not seeing

Topic 5: the difficulty of pooling Http3Transport on the server
    This one is trickier. If you have frontends that know how to route
HTTP requests to backends, DATAGRAM support is going to be a whole new
world.
    However, and I think this is really important: implementing this on the
server is OPTIONAL.
    The server can easily use a different hostname (and different TLS
certificates) for HTTP vs WebTransport and clients will not pool the two
together.
    Once you use different domain names per WebTransport object,
Http3Transport has the exact same pooling properties as QuicTransport.
    Please reply here if you know of complexities I'm not seeing

What am I missing?

Thanks,
David


On Mon, Nov 16, 2020 at 4:45 PM Ian Swett <ianswett@google.com> wrote:

> I'm *very* concerned about any functionality that *requires* pooling.
> Pooling is a client-specific optimization and pooling policy is subject to
> change(within reason) at any time.  If applications are saying "it'd be
> cool if we could share congestion control and loss recovery state between
> H3 and WebTransport most of the time", then I can see there being
> real(albeit small) benefits, just like there would be for putting
> DataChannels and RTP into one QUIC connection for WebRTC.  If people are
> intending to rely on pooling so an HTTP(hopefully H3) request can trigger a
> WebTransport response, I think we're in a world of pain and
> over-optimization.
>
> This is more obvious in light of the fact that a WebTransport endpoint is
> likely not a generic CDN endpoint, as has been clearly stated by Mark
> Nottingham.
>
> Bernard's comments above point to a tighter coupling between HTTP/3 and
> WebTransport than I think is practical in production, unless I
> misunderstood(which I may have, it's been a long day).
>
> All of this makes me think we should punt the HTTP based WebTransport
> options down the road a year or so and focus on QuicTransport initially.
> It's not to say we won't do them, but they're clearly more complex
> than QuicTransport and it'd be good to have real deployment experience
> prior to starting so we know what the requirements are and where the
> dragons are lurking.  Also, the W3C should design APIs that make it easy to
> detect failure to establish a QUIC-based WebTransport, and this ensures
> those are well exercised.  Maybe we DO require pooling under certain
> conditions and describe those, but there are likely privacy concerns under
> some circumstances and I'm not enough of an expert to know what would be
> acceptable to all clients.
>
> Some people in the WG may think we have to release a TCP based
> WebTransport at the same time as a QUIC based one, but I don't think that's
> true and even if we standardized them at the same time, it doesn't mean
> both will achieve wide deployment at the same time.  As I said at the mic,
> I don't see any reason YouTube would deploy a TCP based WebTransport given
> it will have to maintain an HTTP/1.1 option for basically forever and
> they've spent a good bit of effort to make sure that works as well as it
> can.  It's clear to me there are compelling use cases right now for
> QuicTransport, but the driving use cases for the fallback are not clear to
> me.  Consistency is intellectually appealing, but doesn't drive deployments.
>
> Ian
>
> On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba <bernard.aboba@gmail.com>
> wrote:
>
>> David said:
>>
>> "Where does this come from? A lot of QUIC servers are implementing QUIC
>> datagrams, and once you have those the delta with h3 datagrams is
>> negligible. Additionally, multiple h3 server implementers have indicated
>> they want to support WebTransport. It's starting to feel like the pushback
>> on HTTP3Transport is purely based on a perception of complexity from folks
>> who haven't tried to implement it? If that's the case, then we should get
>> some implementation experience to confirm or debunk that theory."
>>
>> [BA] The pooling use cases often involve an interaction between an HTTP/3
>> request/response and WebTransport.  so the HTTP/3 Request doesn't just
>> elicit an HTTP/3 Response.  It also causes something else to happen,
>> something that isn't specified in the HTTP/3 protocol, such as eliciting a
>> datagram flow or bi/unidirectional stream from the server.  This is what is
>> contemplated in several of the "Live Event" use cases, where the HTTP/3
>> Request/Response would be requesting the desired Event. The major advantage
>> over HLS is avoiding Head-of-Line blocking, reducing video freezes and
>> stalls.  So developers understand the value that support for datagrams and
>> server-initiated streams can provide - the question is whether they'll have
>> all the interoperable pieces in place to deploy it.
>>
>> Just because a generic HTTP/3 server supports QUIC and WebTransport,
>> doesn't mean that it will support these use cases.  I've been asked whether
>> better interoperability and wider ecosystem support could be achieved by
>> extending HTTP/3 in a way more in keeping with the existing protocol design
>> - such as by allowing an HTTP/3 Request to specify a resource to be
>> returned in a flow of datagrams.
>>
>> The situation might be more tenable if the node.js framework had HTTP/3
>> and QUIC modules on the horizon.
>>
>> On Mon, Nov 16, 2020 at 1:00 PM David Schinazi <dschinazi.ietf@gmail.com>
>> wrote:
>>
>>>
>>>
>>> On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba <bernard.aboba@gmail.com>
>>> wrote:
>>>
>>>> Luke said:
>>>>
>>>> "My primary concern is that Http3Transport requires non-generic
>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>> worried that this will limit support for Http3Transport and complicates any
>>>> HTTP/3 implementation that does support it."
>>>>
>>>> [BA] I have also heard this concern from developers. The concerns
>>>> primarily arise from the pooling of HTTP/3 Request/Responses with
>>>> WebTransport. This does enable some interesting use cases, such as a
>>>> Request/Response (e.g. gRPC) that can result in a server sending datagrams
>>>> or initiating bi-directional or uni-directional streams.  So there is
>>>> perceived value, but the question is whether that value will be widely
>>>> supported across the HTTP/3 ecosystem.
>>>>
>>>> At this point, most generic HTTP/3 servers are not expected to support
>>>> HTTP/3 datagrams (not part of the HTTP/3 protocol) or Http3Transport
>>>> (perceived as a niche protocol), so that pooling would only be possible
>>>> when using a framework.  node.js will not have QUIC support for 12-18
>>>> months (held up by OpenSSL) so even framework support is expected to be
>>>> limited.
>>>>
>>>
>>> Where does this come from? A lot of QUIC servers are implementing QUIC
>>> datagrams, and once you have those the delta with h3 datagrams is
>>> negligible. Additionally, multiple h3 server implementers have indicated
>>> they want to support WebTransport. It's starting to feel like the pushback
>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>> who haven't tried to implement it? If that's the case, then we should get
>>> some implementation experience to confirm or debunk that theory.
>>>
>>>
>>>> On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <
>>>> dschinazi.ietf@gmail.com> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> We're on the same page that there's code in HTTP/3 that could be
>>>>>> leveraged for QuicTransport in the form of the header parsing. I think
>>>>>> there's a path to merge QuicTransport and Http3Transport by leveraging
>>>>>> HTTP/3 for the handshake and QUIC for stream delivery.
>>>>>>
>>>>>> My primary concern is that Http3Transport requires non-generic
>>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>>> HTTP/3 implementation that does support it.
>>>>>>
>>>>>
>>>>> Hi Luke,
>>>>>
>>>>> I'm curious, could you elaborate on what these "non-generic
>>>>> modifications to the HTTP/3 layer" are please?
>>>>>
>>>>> Thanks,
>>>>> David
>>>>>
>>>>>
>>>>>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <
>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>
>>>>>>> Hi Luke,
>>>>>>>
>>>>>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com> wrote:
>>>>>>>
>>>>>>>> Just to clarify, when I say "QuicTransport is simpler" I really
>>>>>>>> mean "QuicTransport has greater interoperability". You can take any QUIC
>>>>>>>> implementation (+ datagram extension) and add a thin layer to support
>>>>>>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>>>>>>> want to see in general as QUIC replaces TCP.
>>>>>>>>
>>>>>>>
>>>>>>> Thanks for the clarification. I appreciate the sentiment. But given
>>>>>>> the development of QUIC its kind of surprising that people would find it
>>>>>>> easier to identify an implementation that supports QUIC and datagram but
>>>>>>> does not support HTTP/3.
>>>>>>>
>>>>>>> Thr situation for a more clean-room implementation is different, I
>>>>>>> agree. However, by the time you've done all the hard stuff with QUIC, a
>>>>>>> very focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
>>>>>>> compression, server push and extensibility points.
>>>>>>>
>>>>>>> I also see the current design being the thin end of the wedge. The
>>>>>>> proposal I linked talks about HTTP-like header parsing. So its "just" a
>>>>>>> thin layer to do some parsing. Then folks will probably want some want to
>>>>>>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>>>>>>> of GREASE. To extrapolate forward, what would be the delta be between some
>>>>>>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>>>>>>> years of effort.
>>>>>>>
>>>>>>> Cheers
>>>>>>> Lucas
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Hi folks,
>>>>>>>>>
>>>>>>>>> To follow up on one thread of discussion during IETF 109. To over
>>>>>>>>> simplify what we've heard a few folks say, they prefer QuicTransport
>>>>>>>>> because it simpler and they don't need pooling.
>>>>>>>>>
>>>>>>>>> I'd like to push more on this, what is the measurable complexity
>>>>>>>>> of HTTP/3 over QUIC plus a new application mapping that needs to be
>>>>>>>>> defined? Let's isolate pooling as a variable and ignore it.
>>>>>>>>>
>>>>>>>>> Victor mentioned his proposal for a unified header semantic across
>>>>>>>>> all transports, this is
>>>>>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>>>>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>>>>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>>>>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>>>>>>> is. I think it's important to avoid something that looks like HTTP but
>>>>>>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>>>>>>> give it a different ALPN so that we avoid problems related to
>>>>>>>>> cross-protocol pooling?
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>> Lucas
>>>>>>>>> --
>>>>>>>>> Webtransport mailing list
>>>>>>>>> Webtransport@ietf.org
>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>
>>>>>>>> --
>>>>>> Webtransport mailing list
>>>>>> Webtransport@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>
>>>>> --
>>>>> Webtransport mailing list
>>>>> Webtransport@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>
>>>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
>

--0000000000000143cf05b44328dc
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">I&#39;d like us to take a step back, I think we&#39;re con=
flating many different topics here, and it&#39;s making it impossible to re=
ason about this (at least for someone running on not enough sleep like I am=
 this week).<div><br></div><div>Topic 1: the complexity of implementing=C2=
=A0Http3Transport=C2=A0as opposed to QuicTransport=C2=A0on the client</div>=
<div>=C2=A0 =C2=A0 From my perspective, all browsers interested in WebTrans=
port are implementing HTTP/3, so I don&#39;t see much complexity there.</di=
v><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#39;m =
not seeing</div><div><div><br></div><div>Topic 2: the complexity of impleme=
nting=C2=A0Http3Transport=C2=A0as opposed to QuicTransport=C2=A0on the serv=
er</div></div><div>=C2=A0 =C2=A0 As far as I know, most server-side QUIC st=
acks also support HTTP/3, and for QuicTransport=C2=A0they already have DATA=
GRAM support so I think the delta is negligible.</div><div>=C2=A0 =C2=A0 Pl=
ease reply here if you know of complexities I&#39;m not seeing</div><div></=
div><div><br></div><div>Topic 3: the benefits of pooling WebTransport</div>=
<div>=C2=A0 =C2=A0 This allows saving round trips to get WebTransport up an=
d running</div><div>=C2=A0 =C2=A0 This allows sharing congestion control st=
ate</div><div>=C2=A0 =C2=A0 This allows letting the QUIC implementation pri=
oritize DATAGRAMs vs HTTP requests instead of relying on the kernel or rout=
ers which have less information</div><div>=C2=A0 =C2=A0 Overall, I think po=
oling is beneficial (though not an absolute must-have)</div><div>=C2=A0 =C2=
=A0 Please reply here if you know of benefits I&#39;m not seeing<br></div><=
div><br></div><div>Topic 4: the difficulty of pooling Http3Transport=C2=A0o=
n the client</div><div>=C2=A0 =C2=A0 It appears that all browsers that are =
interested in WebTransport are implementing pooling in their HTTP/3 stack s=
o additionally pooling WebTransport should not introduce more complexity</d=
iv><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#39;m=
 not seeing</div><div></div><div><div><br></div><div>Topic 5: the difficult=
y of pooling Http3Transport=C2=A0on the server</div></div><div>=C2=A0 =C2=
=A0 This one is trickier. If you have frontends that know how to route HTTP=
=C2=A0requests to backends, DATAGRAM support is going to be a whole new wor=
ld.</div><div>=C2=A0 =C2=A0 However, and I think this is really important: =
implementing this on the server is OPTIONAL.</div><div>=C2=A0 =C2=A0 The se=
rver can easily use a different hostname (and different TLS certificates) f=
or HTTP vs WebTransport and clients will not pool the two together.</div><d=
iv>=C2=A0 =C2=A0 Once you use different domain names per WebTransport objec=
t, Http3Transport=C2=A0has the exact same pooling properties as QuicTranspo=
rt.</div><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I=
&#39;m not seeing<br></div><div><br></div><div>What am I missing?</div><div=
><br></div><div>Thanks,</div><div>David</div><div><br></div></div><br><div =
class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16,=
 2020 at 4:45 PM Ian Swett &lt;<a href=3D"mailto:ianswett@google.com">iansw=
ett@google.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd=
ing-left:1ex"><div dir=3D"ltr">I&#39;m <b>very</b> concerned about any func=
tionality that <b>requires</b> pooling.=C2=A0 Pooling is a client-specific =
optimization and pooling policy is subject to change(within reason) at any =
time.=C2=A0 If applications=C2=A0are saying &quot;it&#39;d be cool if we co=
uld share congestion control and loss recovery state between H3 and WebTran=
sport most of the time&quot;, then I can see there being real(albeit small)=
 benefits, just like there would be for putting DataChannels and RTP into o=
ne QUIC connection for WebRTC.=C2=A0 If people are intending to rely on poo=
ling so an HTTP(hopefully H3) request can trigger a WebTransport response, =
I think we&#39;re in a world of pain and over-optimization.<div><br></div><=
div>This is more obvious in light of the fact that a WebTransport endpoint=
=C2=A0is likely not a generic CDN endpoint, as has been clearly stated by M=
ark Nottingham.<br><div><br></div><div>Bernard&#39;s comments above point t=
o a tighter coupling between HTTP/3 and WebTransport than I think is practi=
cal in production, unless I misunderstood(which I may have, it&#39;s been a=
 long day).</div><div><br></div><div>All of this makes me think we should p=
unt the HTTP based WebTransport options down the road a year or so and focu=
s on QuicTransport=C2=A0initially.=C2=A0 It&#39;s not to say we won&#39;t d=
o them, but they&#39;re clearly more complex than=C2=A0QuicTransport=C2=A0a=
nd it&#39;d be good to have real deployment experience prior to starting so=
 we know what the requirements are and where the dragons are lurking.=C2=A0=
 Also, the W3C should design APIs that make it easy to detect failure to es=
tablish a QUIC-based=C2=A0WebTransport, and this ensures those are well exe=
rcised.=C2=A0 Maybe we DO require pooling under certain conditions and desc=
ribe those, but there are likely privacy concerns under some circumstances =
and I&#39;m not enough of an expert to know what would be acceptable to all=
 clients.</div><div><br></div><div>Some=C2=A0people in the WG may think we =
have to release a TCP based WebTransport at the same time as a QUIC based o=
ne, but I don&#39;t think that&#39;s true and even if we standardized them =
at the same time, it doesn&#39;t mean both will achieve wide deployment at =
the same time.=C2=A0 As I said at the mic, I don&#39;t see any reason YouTu=
be would deploy a TCP based WebTransport given it will have to maintain an =
HTTP/1.1 option for basically forever and they&#39;ve spent a good bit of e=
ffort to make sure that works as well as it can.=C2=A0 It&#39;s clear to me=
 there are compelling use cases right now for QuicTransport, but=C2=A0the d=
riving use cases for the fallback are not clear to me.=C2=A0 Consistency is=
 intellectually appealing, but doesn&#39;t drive deployments.</div></div><d=
iv><br></div><div>Ian</div></div><br><div class=3D"gmail_quote"><div dir=3D=
"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba &l=
t;<a href=3D"mailto:bernard.aboba@gmail.com" target=3D"_blank">bernard.abob=
a@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">David said:=
=C2=A0<div><br></div><div>&quot;Where does this come from? A lot of QUIC se=
rvers are implementing QUIC datagrams, and once you have those the delta wi=
th h3 datagrams is negligible. Additionally, multiple h3 server implementer=
s=C2=A0have indicated they want to support WebTransport. It&#39;s starting =
to feel like the pushback on HTTP3Transport=C2=A0is purely based on a perce=
ption of complexity from folks who haven&#39;t tried to implement it? If th=
at&#39;s the case, then we should get some implementation experience to con=
firm or debunk that theory.&quot;</div><div><br></div><div>[BA] The pooling=
 use cases often involve an interaction between an HTTP/3 request/response =
and WebTransport.=C2=A0 so the HTTP/3 Request doesn&#39;t just elicit an HT=
TP/3 Response.=C2=A0 It also causes something else to happen, something tha=
t isn&#39;t specified in the HTTP/3 protocol, such as eliciting a datagram =
flow or bi/unidirectional stream from the server.=C2=A0 This is what is con=
templated in several of the &quot;Live Event&quot; use cases, where the HTT=
P/3 Request/Response would be requesting the desired Event. The major advan=
tage over HLS is avoiding Head-of-Line blocking, reducing video freezes and=
 stalls.=C2=A0 So developers understand the value that support for datagram=
s and server-initiated streams can provide - the question is whether they&#=
39;ll have all the interoperable pieces in place to deploy it.=C2=A0 </div>=
<div><br></div><div>Just because a generic HTTP/3 server supports QUIC and =
WebTransport, doesn&#39;t mean that it will support these use cases.=C2=A0 =
I&#39;ve been asked whether better interoperability and wider ecosystem sup=
port could be achieved by extending HTTP/3 in a way more in keeping with th=
e existing protocol design - such as by allowing an HTTP/3 Request to speci=
fy a resource to be returned in a flow of datagrams.=C2=A0</div><div><br></=
div><div>The situation might be more tenable if the node.js framework had H=
TTP/3 and QUIC modules on the horizon.<br></div></div></div></div><br><div =
class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16,=
 2020 at 1:00 PM David Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.=
com" target=3D"_blank">dschinazi.ietf@gmail.com</a>&gt; wrote:<br></div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D=
"ltr"><br></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gm=
ail_attr">On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba &lt;<a href=3D"mai=
lto:bernard.aboba@gmail.com" target=3D"_blank">bernard.aboba@gmail.com</a>&=
gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0=
px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div =
dir=3D"ltr">Luke said:=C2=A0<div><br></div><div>&quot;<span style=3D"color:=
rgb(80,0,80)">My primary concern is that Http3Transport requires non-generi=
c modifications to the HTTP/3 layer mostly to support connection pooling. I=
&#39;m worried that this will limit support for Http3Transport and complica=
tes any HTTP/3 implementation that does support it.</span>&quot;</div><div>=
<br></div><div>[BA] I have also heard this concern from developers. The con=
cerns primarily arise from the pooling of HTTP/3 Request/Responses with Web=
Transport. This does enable some interesting use cases, such as a Request/R=
esponse (e.g. gRPC) that can result in a server sending datagrams or initia=
ting bi-directional or uni-directional streams.=C2=A0 So there is perceived=
 value, but the question is whether that value will be widely supported acr=
oss the HTTP/3 ecosystem.=C2=A0</div><div><br></div><div>At this point, mos=
t generic HTTP/3 servers are not expected to support HTTP/3 datagrams (not =
part of the HTTP/3 protocol) or Http3Transport (perceived as a niche protoc=
ol), so that pooling would only be possible when using a framework.=C2=A0 n=
ode.js will not have=C2=A0QUIC support for 12-18 months (held up by OpenSSL=
) so even framework support is expected to be limited.</div></div></blockqu=
ote><div><br></div><div>Where does this come from? A lot of QUIC servers ar=
e implementing QUIC datagrams, and once you have those the delta with h3 da=
tagrams is negligible. Additionally, multiple h3 server implementers=C2=A0h=
ave indicated they want to support WebTransport. It&#39;s starting to feel =
like the pushback on HTTP3Transport=C2=A0is purely based on a perception of=
 complexity from folks who haven&#39;t tried to implement it? If that&#39;s=
 the case, then we should get some implementation experience to confirm or =
debunk that theory.</div><div>=C2=A0</div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail=
_attr">On Mon, Nov 16, 2020 at 11:37 AM David Schinazi &lt;<a href=3D"mailt=
o:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmail.com</a>&=
gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0=
px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div =
dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote"><div =
dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:34 AM Luke Curl=
ey &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D"_blank">kixelated@g=
mail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D=
"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le=
ft:1ex"><div dir=3D"ltr">We&#39;re on the same page that there&#39;s code i=
n HTTP/3 that could be leveraged for QuicTransport in the form of the heade=
r parsing. I think there&#39;s a path to merge QuicTransport and Http3Trans=
port by leveraging HTTP/3 for the handshake and QUIC for stream delivery.<d=
iv><br></div><div>My primary concern is that Http3Transport requires non-ge=
neric modifications to the HTTP/3 layer mostly to support connection poolin=
g. I&#39;m worried that this will limit support for Http3Transport and comp=
licates any HTTP/3 implementation that does support it.</div></div></blockq=
uote><div><br></div><div>Hi Luke,</div><div><br></div><div>I&#39;m curious,=
 could you elaborate on what these &quot;non-generic modifications to the H=
TTP/3 layer&quot; are please?</div><div><br></div><div>Thanks,</div><div>Da=
vid</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin=
:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"=
><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, N=
ov 16, 2020 at 4:49 AM Lucas Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@=
gmail.com" target=3D"_blank">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br><=
/div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"auto"><d=
iv>Hi Luke,</div><div dir=3D"auto"><br><div class=3D"gmail_quote" dir=3D"au=
to"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, 16 Nov 2020, 12:26 Luke C=
urley, &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D"_blank">kixelat=
ed@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddin=
g-left:1ex"><div dir=3D"ltr"><div>Just to clarify, when I say &quot;QuicTra=
nsport is simpler&quot; I really mean &quot;QuicTransport has greater inter=
operability&quot;. You can take any QUIC implementation (+ datagram extensi=
on) and add a thin layer to support QuicTransport. It&#39;s a nice layering=
 of protocols and it&#39;s something that I want to see in general as QUIC =
replaces TCP.</div></div></blockquote></div></div><div dir=3D"auto"><br></d=
iv><div dir=3D"auto">Thanks for the clarification. I appreciate the sentime=
nt. But given the development of QUIC its kind of surprising that people wo=
uld find it easier to identify an implementation that supports QUIC and dat=
agram but does not support HTTP/3.</div><div dir=3D"auto"><br></div><div di=
r=3D"auto">Thr situation for a more clean-room implementation is different,=
 I agree. However, by the time you&#39;ve done all the hard stuff with QUIC=
, a very focused HTTP/3 layer ends up quite thin too. You can ignore dynami=
c compression, server push and extensibility points.</div><div dir=3D"auto"=
><br></div><div dir=3D"auto">I also see the current design being the thin e=
nd of the wedge. The proposal I linked talks about HTTP-like header parsing=
. So its &quot;just&quot; a thin layer to do some parsing. Then folks will =
probably want some want to tweak parameter, acontrol channel, a way to do g=
raceful close, a sprinkle of GREASE. To extrapolate forward, what would be =
the delta be between some final product QuicTransport and HTTP/3. Too small=
 a delta and we&#39;ve wasted years of effort.</div><div dir=3D"auto"><br><=
/div><div dir=3D"auto">Cheers</div><div dir=3D"auto">Lucas</div><div dir=3D=
"auto"><br></div><div dir=3D"auto"><br></div><div dir=3D"auto"><div class=
=3D"gmail_quote" dir=3D"auto"><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex"><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">O=
n Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue &lt;<a href=3D"mailto:lucaspard=
ue.24.7@gmail.com" rel=3D"noreferrer" target=3D"_blank">lucaspardue.24.7@gm=
ail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"=
margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-lef=
t:1ex"><div dir=3D"ltr"><div>Hi folks,</div><div><br></div><div>To follow u=
p on one thread of discussion during IETF 109. To over simplify what we&#39=
;ve heard a few folks say, they prefer QuicTransport because it simpler and=
 they don&#39;t need pooling.</div><div><br></div><div>I&#39;d like to push=
 more on this, what is the measurable complexity of HTTP/3 over QUIC plus a=
 new application mapping that needs to be defined? Let&#39;s isolate poolin=
g as a variable and ignore it.</div><div><br></div><div>Victor mentioned hi=
s proposal for a unified header semantic across all transports, this is <a =
href=3D"https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pu=
ll/4/files" rel=3D"noreferrer" target=3D"_blank">https://github.com/ietf-wg=
-webtrans/draft-ietf-webtrans-overview/pull/4/files</a>. Taking a closer lo=
ok at it, I have some concerns that I added as comments.  HTTP has semantic=
s for a reason. If QuicTransport is going to start borrowing HTTP piecemeal=
, I really wonder how simple people might feel it is. I think it&#39;s impo=
rtant to avoid something that looks like HTTP but behaves differently. Is i=
t really much of a stretch to just do HTTP/3 but give it a different ALPN s=
o that we avoid problems related to cross-protocol pooling?</div><div><br><=
/div><div>Cheers,</div><div>Lucas<br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div>

--0000000000000143cf05b44328dc--


From nobody Mon Nov 16 18:00:19 2020
Return-Path: <kazuhooku@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BAE1F3A1872 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 18:00:17 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 yLdjIA2qUQRN for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 18:00:14 -0800 (PST)
Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com [IPv6:2a00:1450:4864:20::631]) (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 10A513A186D for <webtransport@ietf.org>; Mon, 16 Nov 2020 18:00:13 -0800 (PST)
Received: by mail-ej1-x631.google.com with SMTP id oq3so27216956ejb.7 for <webtransport@ietf.org>; Mon, 16 Nov 2020 18:00:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=RTM4WjExXYwVE8pVNuwgC7/1DQo1M5cHHboAAznnAP4=; b=dVnhMyYyQlOZ5TbQxathK5tPPcxYUh2tpBqiyloMrAV88sBD1VjIFo99lA1hL1QfLH lnWy2pcB2lDEEAgb515jnSfv43zH3XYgG8hvoq4eIAgA/4CE5Mf1fr+Em3cVbmD3WB6y rNYYD3vObsdFP7EcVR6kmLu/SgZYu6BiVbh9MWaiTRxev9HDIN59E7rJ1OQ7NnjttTOG LLboso6WuAy5x79o4haKL2OPX+Z5K3WG5rjrCYT1eMfQLJos3MGpsbl/ZRhW9Kpn2L1L 51RntObv8Xp7397lz7BUF2OBQ9h3drh9DM9bZxg5a03AUmj34zvw/VvOZGYlIG5WPrB2 Llkw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=RTM4WjExXYwVE8pVNuwgC7/1DQo1M5cHHboAAznnAP4=; b=UnWb8JbFvgtlM7sdGlC98spqSbyDWfWAWvQIAQ25Tf3/w2rgeZnky1qIGQ1VVUDkOt cNK7BVP501bWMLWQbyZ1bc6pRqBybhA2rd1Z+yrFx35G5Td2xYjF7OS5OEQ/r5nF9eiR uaWG4WQrBWRR/ivnFb12+2XFOfS1ttqoaccGCTDhoVEDZVNt1ELOStAiVFR2IoEA4p1L B6B74qiFj9gv0SNFC43MUseQG9Obq+Y5EUAB112MCJIuIC3ZsnLomcFlytfjwuzAXAGB rrG8achcgDiw1xnJFXnuDf2IIerzwZraQcG7OATOdK7uTaqQCYUCT5f4KAiUmXh/hIJl 7qmQ==
X-Gm-Message-State: AOAM533BeFT+VaBb28Gc625WQpPO7J3WQWhblcITQLe8v6pYv5dQBH2c onAvA4tFunCH4tVqskmnxhoi1B9ys3gxnKeXWm0=
X-Google-Smtp-Source: ABdhPJyMvLXaZLHUqNRWyjDtkJ0Wv5g1dFduTYb9ieBxOocgbVKl0HeAqmWDhP6JyEwF5YKrjUkXvncG4LfCg85C1u4=
X-Received: by 2002:a17:906:4704:: with SMTP id y4mr8664227ejq.449.1605578412170;  Mon, 16 Nov 2020 18:00:12 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com> <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com> <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com> <CAOW+2dsVSTcvYsKB7XB7GJy6eo4sTr70LJcKWtoQ1KLhVKpmOA@mail.gmail.com> <CAKcm_gPUfBUVz8Kh-jbHeUDCOAfF6FsjLHYsF6aZDgbCkMUw8Q@mail.gmail.com> <CAPDSy+6TCOJwxDgS+tWyshDnMDrwGYSYVQMSw3rdgj_GtE2E5g@mail.gmail.com>
In-Reply-To: <CAPDSy+6TCOJwxDgS+tWyshDnMDrwGYSYVQMSw3rdgj_GtE2E5g@mail.gmail.com>
From: Kazuho Oku <kazuhooku@gmail.com>
Date: Tue, 17 Nov 2020 11:00:00 +0900
Message-ID: <CANatvzyVcFCoRRBg3me_KZ4d6RdffA2D2fSnAUP0yasORW17+g@mail.gmail.com>
To: David Schinazi <dschinazi.ietf@gmail.com>
Cc: Ian Swett <ianswett@google.com>, WebTransport <webtransport@ietf.org>,  Luke Curley <kixelated@gmail.com>, Lucas Pardue <lucaspardue.24.7@gmail.com>,  Bernard Aboba <bernard.aboba@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000ea9ff905b443da62"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/PE_Z9-n6aDWKQn8mzHQ73K4Xx6M>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2020 02:00:18 -0000

--000000000000ea9ff905b443da62
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

David, thank you for breaking down the topics.

My responses inline.

2020=E5=B9=B411=E6=9C=8817=E6=97=A5(=E7=81=AB) 10:10 David Schinazi <dschin=
azi.ietf@gmail.com>:

> I'd like us to take a step back, I think we're conflating many different
> topics here, and it's making it impossible to reason about this (at least
> for someone running on not enough sleep like I am this week).
>
> Topic 1: the complexity of implementing Http3Transport as opposed to
> QuicTransport on the client
>     From my perspective, all browsers interested in WebTransport are
> implementing HTTP/3, so I don't see much complexity there.
>     Please reply here if you know of complexities I'm not seeing
>
> Topic 2: the complexity of implementing Http3Transport as opposed to
> QuicTransport on the server
>     As far as I know, most server-side QUIC stacks also support HTTP/3,
> and for QuicTransport they already have DATAGRAM support so I think the
> delta is negligible.
>     Please reply here if you know of complexities I'm not seeing
>

I might insert:

Topic 2b: the complexity of implementing QuicTransport as opposed to
Http3Transport on the server.

IIUC, status quo of QuicTransport is much like HTTP/0.9, that upgrades the
connection to use datagrams once the server acknowledges the request.

By saying HTTP/0.9, I am pointing out that there are no header fields, and
the problem is that things like authentication are missing, as Lucas
pointed out elsewhere.

>From the perspective of a HTTP server-side deployment that intends to
support WebTransport, it would be helpful if the handshake used HTTP
request-response, because then we could reuse all the stuff that we have
for HTTP. I think doing so has been helpful with websockets.

I do understand the concern that wire encoding of HTTP/3 seems complicated
to people who are only interested in implementing WebTransport. We should
try to accommodate that concern. However, I think there's value in adopting
the semantics of HTTP [1] to the handshake of WebTransport, and that the
natural path forward would be to use (a subset of) HTTP/3 for the purpose.


> Topic 3: the benefits of pooling WebTransport
>     This allows saving round trips to get WebTransport up and running
>     This allows sharing congestion control state
>     This allows letting the QUIC implementation prioritize DATAGRAMs vs
> HTTP requests instead of relying on the kernel or routers which have less
> information
>     Overall, I think pooling is beneficial (though not an absolute
> must-have)
>     Please reply here if you know of benefits I'm not seeing
>
> Topic 4: the difficulty of pooling Http3Transport on the client
>     It appears that all browsers that are interested in WebTransport are
> implementing pooling in their HTTP/3 stack so additionally pooling
> WebTransport should not introduce more complexity
>     Please reply here if you know of complexities I'm not seeing
>
> Topic 5: the difficulty of pooling Http3Transport on the server
>     This one is trickier. If you have frontends that know how to route
> HTTP requests to backends, DATAGRAM support is going to be a whole new
> world.
>     However, and I think this is really important: implementing this on
> the server is OPTIONAL.
>     The server can easily use a different hostname (and different TLS
> certificates) for HTTP vs WebTransport and clients will not pool the two
> together.
>     Once you use different domain names per WebTransport object,
> Http3Transport has the exact same pooling properties as QuicTransport.
>     Please reply here if you know of complexities I'm not seeing
>

I think pooling is optional to both the client and server, regardless of
the protocol that we choose. That was the case for websockets until RFC
8441 was standardized, and even after that, endpoints have the option to
use dedicated connection.

[1] https://httpwg.org/http-core/draft-ietf-httpbis-semantics-latest.html


> What am I missing?
>
> Thanks,
> David
>
>
> On Mon, Nov 16, 2020 at 4:45 PM Ian Swett <ianswett@google.com> wrote:
>
>> I'm *very* concerned about any functionality that *requires* pooling.
>> Pooling is a client-specific optimization and pooling policy is subject =
to
>> change(within reason) at any time.  If applications are saying "it'd be
>> cool if we could share congestion control and loss recovery state betwee=
n
>> H3 and WebTransport most of the time", then I can see there being
>> real(albeit small) benefits, just like there would be for putting
>> DataChannels and RTP into one QUIC connection for WebRTC.  If people are
>> intending to rely on pooling so an HTTP(hopefully H3) request can trigge=
r a
>> WebTransport response, I think we're in a world of pain and
>> over-optimization.
>>
>> This is more obvious in light of the fact that a WebTransport endpoint i=
s
>> likely not a generic CDN endpoint, as has been clearly stated by Mark
>> Nottingham.
>>
>> Bernard's comments above point to a tighter coupling between HTTP/3 and
>> WebTransport than I think is practical in production, unless I
>> misunderstood(which I may have, it's been a long day).
>>
>> All of this makes me think we should punt the HTTP based WebTransport
>> options down the road a year or so and focus on QuicTransport initially.
>> It's not to say we won't do them, but they're clearly more complex
>> than QuicTransport and it'd be good to have real deployment experience
>> prior to starting so we know what the requirements are and where the
>> dragons are lurking.  Also, the W3C should design APIs that make it easy=
 to
>> detect failure to establish a QUIC-based WebTransport, and this ensures
>> those are well exercised.  Maybe we DO require pooling under certain
>> conditions and describe those, but there are likely privacy concerns und=
er
>> some circumstances and I'm not enough of an expert to know what would be
>> acceptable to all clients.
>>
>> Some people in the WG may think we have to release a TCP based
>> WebTransport at the same time as a QUIC based one, but I don't think tha=
t's
>> true and even if we standardized them at the same time, it doesn't mean
>> both will achieve wide deployment at the same time.  As I said at the mi=
c,
>> I don't see any reason YouTube would deploy a TCP based WebTransport giv=
en
>> it will have to maintain an HTTP/1.1 option for basically forever and
>> they've spent a good bit of effort to make sure that works as well as it
>> can.  It's clear to me there are compelling use cases right now for
>> QuicTransport, but the driving use cases for the fallback are not clear =
to
>> me.  Consistency is intellectually appealing, but doesn't drive deployme=
nts.
>>
>> Ian
>>
>> On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba <bernard.aboba@gmail.com>
>> wrote:
>>
>>> David said:
>>>
>>> "Where does this come from? A lot of QUIC servers are implementing QUIC
>>> datagrams, and once you have those the delta with h3 datagrams is
>>> negligible. Additionally, multiple h3 server implementers have indicate=
d
>>> they want to support WebTransport. It's starting to feel like the pushb=
ack
>>> on HTTP3Transport is purely based on a perception of complexity from fo=
lks
>>> who haven't tried to implement it? If that's the case, then we should g=
et
>>> some implementation experience to confirm or debunk that theory."
>>>
>>> [BA] The pooling use cases often involve an interaction between an
>>> HTTP/3 request/response and WebTransport.  so the HTTP/3 Request doesn'=
t
>>> just elicit an HTTP/3 Response.  It also causes something else to happe=
n,
>>> something that isn't specified in the HTTP/3 protocol, such as elicitin=
g a
>>> datagram flow or bi/unidirectional stream from the server.  This is wha=
t is
>>> contemplated in several of the "Live Event" use cases, where the HTTP/3
>>> Request/Response would be requesting the desired Event. The major advan=
tage
>>> over HLS is avoiding Head-of-Line blocking, reducing video freezes and
>>> stalls.  So developers understand the value that support for datagrams =
and
>>> server-initiated streams can provide - the question is whether they'll =
have
>>> all the interoperable pieces in place to deploy it.
>>>
>>> Just because a generic HTTP/3 server supports QUIC and WebTransport,
>>> doesn't mean that it will support these use cases.  I've been asked whe=
ther
>>> better interoperability and wider ecosystem support could be achieved b=
y
>>> extending HTTP/3 in a way more in keeping with the existing protocol de=
sign
>>> - such as by allowing an HTTP/3 Request to specify a resource to be
>>> returned in a flow of datagrams.
>>>
>>> The situation might be more tenable if the node.js framework had HTTP/3
>>> and QUIC modules on the horizon.
>>>
>>> On Mon, Nov 16, 2020 at 1:00 PM David Schinazi <dschinazi.ietf@gmail.co=
m>
>>> wrote:
>>>
>>>>
>>>>
>>>> On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba <bernard.aboba@gmail.co=
m>
>>>> wrote:
>>>>
>>>>> Luke said:
>>>>>
>>>>> "My primary concern is that Http3Transport requires non-generic
>>>>> modifications to the HTTP/3 layer mostly to support connection poolin=
g. I'm
>>>>> worried that this will limit support for Http3Transport and complicat=
es any
>>>>> HTTP/3 implementation that does support it."
>>>>>
>>>>> [BA] I have also heard this concern from developers. The concerns
>>>>> primarily arise from the pooling of HTTP/3 Request/Responses with
>>>>> WebTransport. This does enable some interesting use cases, such as a
>>>>> Request/Response (e.g. gRPC) that can result in a server sending data=
grams
>>>>> or initiating bi-directional or uni-directional streams.  So there is
>>>>> perceived value, but the question is whether that value will be widel=
y
>>>>> supported across the HTTP/3 ecosystem.
>>>>>
>>>>> At this point, most generic HTTP/3 servers are not expected to suppor=
t
>>>>> HTTP/3 datagrams (not part of the HTTP/3 protocol) or Http3Transport
>>>>> (perceived as a niche protocol), so that pooling would only be possib=
le
>>>>> when using a framework.  node.js will not have QUIC support for 12-18
>>>>> months (held up by OpenSSL) so even framework support is expected to =
be
>>>>> limited.
>>>>>
>>>>
>>>> Where does this come from? A lot of QUIC servers are implementing QUIC
>>>> datagrams, and once you have those the delta with h3 datagrams is
>>>> negligible. Additionally, multiple h3 server implementers have indicat=
ed
>>>> they want to support WebTransport. It's starting to feel like the push=
back
>>>> on HTTP3Transport is purely based on a perception of complexity from f=
olks
>>>> who haven't tried to implement it? If that's the case, then we should =
get
>>>> some implementation experience to confirm or debunk that theory.
>>>>
>>>>
>>>>> On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <
>>>>> dschinazi.ietf@gmail.com> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> We're on the same page that there's code in HTTP/3 that could be
>>>>>>> leveraged for QuicTransport in the form of the header parsing. I th=
ink
>>>>>>> there's a path to merge QuicTransport and Http3Transport by leverag=
ing
>>>>>>> HTTP/3 for the handshake and QUIC for stream delivery.
>>>>>>>
>>>>>>> My primary concern is that Http3Transport requires non-generic
>>>>>>> modifications to the HTTP/3 layer mostly to support connection pool=
ing. I'm
>>>>>>> worried that this will limit support for Http3Transport and complic=
ates any
>>>>>>> HTTP/3 implementation that does support it.
>>>>>>>
>>>>>>
>>>>>> Hi Luke,
>>>>>>
>>>>>> I'm curious, could you elaborate on what these "non-generic
>>>>>> modifications to the HTTP/3 layer" are please?
>>>>>>
>>>>>> Thanks,
>>>>>> David
>>>>>>
>>>>>>
>>>>>>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <
>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>
>>>>>>>> Hi Luke,
>>>>>>>>
>>>>>>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Just to clarify, when I say "QuicTransport is simpler" I really
>>>>>>>>> mean "QuicTransport has greater interoperability". You can take a=
ny QUIC
>>>>>>>>> implementation (+ datagram extension) and add a thin layer to sup=
port
>>>>>>>>> QuicTransport. It's a nice layering of protocols and it's somethi=
ng that I
>>>>>>>>> want to see in general as QUIC replaces TCP.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks for the clarification. I appreciate the sentiment. But give=
n
>>>>>>>> the development of QUIC its kind of surprising that people would f=
ind it
>>>>>>>> easier to identify an implementation that supports QUIC and datagr=
am but
>>>>>>>> does not support HTTP/3.
>>>>>>>>
>>>>>>>> Thr situation for a more clean-room implementation is different, I
>>>>>>>> agree. However, by the time you've done all the hard stuff with QU=
IC, a
>>>>>>>> very focused HTTP/3 layer ends up quite thin too. You can ignore d=
ynamic
>>>>>>>> compression, server push and extensibility points.
>>>>>>>>
>>>>>>>> I also see the current design being the thin end of the wedge. The
>>>>>>>> proposal I linked talks about HTTP-like header parsing. So its "ju=
st" a
>>>>>>>> thin layer to do some parsing. Then folks will probably want some =
want to
>>>>>>>> tweak parameter, acontrol channel, a way to do graceful close, a s=
prinkle
>>>>>>>> of GREASE. To extrapolate forward, what would be the delta be betw=
een some
>>>>>>>> final product QuicTransport and HTTP/3. Too small a delta and we'v=
e wasted
>>>>>>>> years of effort.
>>>>>>>>
>>>>>>>> Cheers
>>>>>>>> Lucas
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi folks,
>>>>>>>>>>
>>>>>>>>>> To follow up on one thread of discussion during IETF 109. To ove=
r
>>>>>>>>>> simplify what we've heard a few folks say, they prefer QuicTrans=
port
>>>>>>>>>> because it simpler and they don't need pooling.
>>>>>>>>>>
>>>>>>>>>> I'd like to push more on this, what is the measurable complexity
>>>>>>>>>> of HTTP/3 over QUIC plus a new application mapping that needs to=
 be
>>>>>>>>>> defined? Let's isolate pooling as a variable and ignore it.
>>>>>>>>>>
>>>>>>>>>> Victor mentioned his proposal for a unified header semantic
>>>>>>>>>> across all transports, this is
>>>>>>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview=
/pull/4/files.
>>>>>>>>>> Taking a closer look at it, I have some concerns that I added as=
 comments.
>>>>>>>>>> HTTP has semantics for a reason. If QuicTransport is going to st=
art
>>>>>>>>>> borrowing HTTP piecemeal, I really wonder how simple people migh=
t feel it
>>>>>>>>>> is. I think it's important to avoid something that looks like HT=
TP but
>>>>>>>>>> behaves differently. Is it really much of a stretch to just do H=
TTP/3 but
>>>>>>>>>> give it a different ALPN so that we avoid problems related to
>>>>>>>>>> cross-protocol pooling?
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>> Lucas
>>>>>>>>>> --
>>>>>>>>>> Webtransport mailing list
>>>>>>>>>> Webtransport@ietf.org
>>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>>
>>>>>>>>> --
>>>>>>> Webtransport mailing list
>>>>>>> Webtransport@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>
>>>>>> --
>>>>>> Webtransport mailing list
>>>>>> Webtransport@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>
>>>>> --
>>> Webtransport mailing list
>>> Webtransport@ietf.org
>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>
>> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>


--=20
Kazuho Oku

--000000000000ea9ff905b443da62
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>David, thank you for breaking down the topics.</div><=
div><br></div><div>My responses inline.<br></div><br><div class=3D"gmail_qu=
ote"><div dir=3D"ltr" class=3D"gmail_attr">2020=E5=B9=B411=E6=9C=8817=E6=97=
=A5(=E7=81=AB) 10:10 David Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@gm=
ail.com">dschinazi.ietf@gmail.com</a>&gt;:<br></div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,=
204,204);padding-left:1ex"><div dir=3D"ltr">I&#39;d like us to take a step =
back, I think we&#39;re conflating many different topics here, and it&#39;s=
 making it impossible to reason about this (at least for someone running on=
 not enough sleep like I am this week).<div><br></div><div>Topic 1: the com=
plexity of implementing=C2=A0Http3Transport=C2=A0as opposed to QuicTranspor=
t=C2=A0on the client</div><div>=C2=A0 =C2=A0 From my perspective, all brows=
ers interested in WebTransport are implementing HTTP/3, so I don&#39;t see =
much complexity there.</div><div>=C2=A0 =C2=A0 Please reply here if you kno=
w of complexities I&#39;m not seeing</div><div><div><br></div><div>Topic 2:=
 the complexity of implementing=C2=A0Http3Transport=C2=A0as opposed to Quic=
Transport=C2=A0on the server</div></div><div>=C2=A0 =C2=A0 As far as I know=
, most server-side QUIC stacks also support HTTP/3, and for QuicTransport=
=C2=A0they already have DATAGRAM support so I think the delta is negligible=
.</div><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#=
39;m not seeing</div></div></blockquote><div><br></div><div>I might insert:=
</div><div><br></div><div>Topic 2b: the complexity of implementing QuicTran=
sport as opposed to Http3Transport on the server.</div><div><br></div><div>=
IIUC, status quo of QuicTransport is much like HTTP/0.9, that upgrades the =
connection to use datagrams once the server acknowledges the request.</div>=
<div><br></div><div>By saying HTTP/0.9, I am pointing out that there are no=
 header fields, and the problem is that things like authentication are miss=
ing, as Lucas pointed out elsewhere.<br></div><div><br></div><div>From the =
perspective of a HTTP server-side deployment that intends to support WebTra=
nsport, it would be helpful if the handshake used HTTP request-response, be=
cause then we could reuse all the stuff that we have for HTTP. I think doin=
g so has been helpful with websockets.</div><div><br></div><div>I do unders=
tand the concern that wire encoding of HTTP/3 seems complicated to people w=
ho are only interested in implementing WebTransport. We should try to accom=
modate that concern. However, I think there&#39;s value in adopting the sem=
antics of HTTP [1] to the handshake of WebTransport, and that the natural p=
ath forward would be to use (a subset of) HTTP/3 for the purpose.<br></div>=
<div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p=
x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=
=3D"ltr"><div></div><div><br></div><div>Topic 3: the benefits of pooling We=
bTransport</div><div>=C2=A0 =C2=A0 This allows saving round trips to get We=
bTransport up and running</div><div>=C2=A0 =C2=A0 This allows sharing conge=
stion control state</div><div>=C2=A0 =C2=A0 This allows letting the QUIC im=
plementation prioritize DATAGRAMs vs HTTP requests instead of relying on th=
e kernel or routers which have less information</div><div>=C2=A0 =C2=A0 Ove=
rall, I think pooling is beneficial (though not an absolute must-have)</div=
><div>=C2=A0 =C2=A0 Please reply here if you know of benefits I&#39;m not s=
eeing<br></div><div><br></div><div>Topic 4: the difficulty of pooling Http3=
Transport=C2=A0on the client</div><div>=C2=A0 =C2=A0 It appears that all br=
owsers that are interested in WebTransport are implementing pooling in thei=
r HTTP/3 stack so additionally pooling WebTransport should not introduce mo=
re complexity</div><div>=C2=A0 =C2=A0 Please reply here if you know of comp=
lexities I&#39;m not seeing</div><div></div><div><div><br></div><div>Topic =
5: the difficulty of pooling Http3Transport=C2=A0on the server</div></div><=
div>=C2=A0 =C2=A0 This one is trickier. If you have frontends that know how=
 to route HTTP=C2=A0requests to backends, DATAGRAM support is going to be a=
 whole new world.</div><div>=C2=A0 =C2=A0 However, and I think this is real=
ly important: implementing this on the server is OPTIONAL.</div><div>=C2=A0=
 =C2=A0 The server can easily use a different hostname (and different TLS c=
ertificates) for HTTP vs WebTransport and clients will not pool the two tog=
ether.</div><div>=C2=A0 =C2=A0 Once you use different domain names per WebT=
ransport object, Http3Transport=C2=A0has the exact same pooling properties =
as QuicTransport.</div><div>=C2=A0 =C2=A0 Please reply here if you know of =
complexities I&#39;m not seeing<br></div></div></blockquote><div><br></div>=
<div>I think pooling is optional to both the client and server, regardless =
of the protocol that we choose. That was the case for websockets until RFC =
8441 was standardized, and even after that, endpoints have the option to us=
e dedicated connection.<br></div><div><br> </div><div>[1] <a href=3D"https:=
//httpwg.org/http-core/draft-ietf-httpbis-semantics-latest.html">https://ht=
tpwg.org/http-core/draft-ietf-httpbis-semantics-latest.html</a></div><div><=
br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8e=
x;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"=
><div></div><div><br></div><div>What am I missing?</div><div><br></div><div=
>Thanks,</div><div>David</div><div><br></div></div><br><div class=3D"gmail_=
quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 4:45 P=
M Ian Swett &lt;<a href=3D"mailto:ianswett@google.com" target=3D"_blank">ia=
nswett@google.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex"><div dir=3D"ltr">I&#39;m <b>very</b> concerned about any f=
unctionality that <b>requires</b> pooling.=C2=A0 Pooling is a client-specif=
ic optimization and pooling policy is subject to change(within reason) at a=
ny time.=C2=A0 If applications=C2=A0are saying &quot;it&#39;d be cool if we=
 could share congestion control and loss recovery state between H3 and WebT=
ransport most of the time&quot;, then I can see there being real(albeit sma=
ll) benefits, just like there would be for putting DataChannels and RTP int=
o one QUIC connection for WebRTC.=C2=A0 If people are intending to rely on =
pooling so an HTTP(hopefully H3) request can trigger a WebTransport respons=
e, I think we&#39;re in a world of pain and over-optimization.<div><br></di=
v><div>This is more obvious in light of the fact that a WebTransport endpoi=
nt=C2=A0is likely not a generic CDN endpoint, as has been clearly stated by=
 Mark Nottingham.<br><div><br></div><div>Bernard&#39;s comments above point=
 to a tighter coupling between HTTP/3 and WebTransport than I think is prac=
tical in production, unless I misunderstood(which I may have, it&#39;s been=
 a long day).</div><div><br></div><div>All of this makes me think we should=
 punt the HTTP based WebTransport options down the road a year or so and fo=
cus on QuicTransport=C2=A0initially.=C2=A0 It&#39;s not to say we won&#39;t=
 do them, but they&#39;re clearly more complex than=C2=A0QuicTransport=C2=
=A0and it&#39;d be good to have real deployment experience prior to startin=
g so we know what the requirements are and where the dragons are lurking.=
=C2=A0 Also, the W3C should design APIs that make it easy to detect failure=
 to establish a QUIC-based=C2=A0WebTransport, and this ensures those are we=
ll exercised.=C2=A0 Maybe we DO require pooling under certain conditions an=
d describe those, but there are likely privacy concerns under some circumst=
ances and I&#39;m not enough of an expert to know what would be acceptable =
to all clients.</div><div><br></div><div>Some=C2=A0people in the WG may thi=
nk we have to release a TCP based WebTransport at the same time as a QUIC b=
ased one, but I don&#39;t think that&#39;s true and even if we standardized=
 them at the same time, it doesn&#39;t mean both will achieve wide deployme=
nt at the same time.=C2=A0 As I said at the mic, I don&#39;t see any reason=
 YouTube would deploy a TCP based WebTransport given it will have to mainta=
in an HTTP/1.1 option for basically forever and they&#39;ve spent a good bi=
t of effort to make sure that works as well as it can.=C2=A0 It&#39;s clear=
 to me there are compelling use cases right now for QuicTransport, but=C2=
=A0the driving use cases for the fallback are not clear to me.=C2=A0 Consis=
tency is intellectually appealing, but doesn&#39;t drive deployments.</div>=
</div><div><br></div><div>Ian</div></div><br><div class=3D"gmail_quote"><di=
v dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 6:36 PM Bernard =
Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com" target=3D"_blank">bern=
ard.aboba@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quot=
e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)=
;padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">David=
 said:=C2=A0<div><br></div><div>&quot;Where does this come from? A lot of Q=
UIC servers are implementing QUIC datagrams, and once you have those the de=
lta with h3 datagrams is negligible. Additionally, multiple h3 server imple=
menters=C2=A0have indicated they want to support WebTransport. It&#39;s sta=
rting to feel like the pushback on HTTP3Transport=C2=A0is purely based on a=
 perception of complexity from folks who haven&#39;t tried to implement it?=
 If that&#39;s the case, then we should get some implementation experience =
to confirm or debunk that theory.&quot;</div><div><br></div><div>[BA] The p=
ooling use cases often involve an interaction between an HTTP/3 request/res=
ponse and WebTransport.=C2=A0 so the HTTP/3 Request doesn&#39;t just elicit=
 an HTTP/3 Response.=C2=A0 It also causes something else to happen, somethi=
ng that isn&#39;t specified in the HTTP/3 protocol, such as eliciting a dat=
agram flow or bi/unidirectional stream from the server.=C2=A0 This is what =
is contemplated in several of the &quot;Live Event&quot; use cases, where t=
he HTTP/3 Request/Response would be requesting the desired Event. The major=
 advantage over HLS is avoiding Head-of-Line blocking, reducing video freez=
es and stalls.=C2=A0 So developers understand the value that support for da=
tagrams and server-initiated streams can provide - the question is whether =
they&#39;ll have all the interoperable pieces in place to deploy it.=C2=A0 =
</div><div><br></div><div>Just because a generic HTTP/3 server supports QUI=
C and WebTransport, doesn&#39;t mean that it will support these use cases.=
=C2=A0 I&#39;ve been asked whether better interoperability and wider ecosys=
tem support could be achieved by extending HTTP/3 in a way more in keeping =
with the existing protocol design - such as by allowing an HTTP/3 Request t=
o specify a resource to be returned in a flow of datagrams.=C2=A0</div><div=
><br></div><div>The situation might be more tenable if the node.js framewor=
k had HTTP/3 and QUIC modules on the horizon.<br></div></div></div></div><b=
r><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, =
Nov 16, 2020 at 1:00 PM David Schinazi &lt;<a href=3D"mailto:dschinazi.ietf=
@gmail.com" target=3D"_blank">dschinazi.ietf@gmail.com</a>&gt; wrote:<br></=
div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bor=
der-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div=
 dir=3D"ltr"><br></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" clas=
s=3D"gmail_attr">On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba &lt;<a href=
=3D"mailto:bernard.aboba@gmail.com" target=3D"_blank">bernard.aboba@gmail.c=
om</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margi=
n:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex=
"><div dir=3D"ltr">Luke said:=C2=A0<div><br></div><div>&quot;<span style=3D=
"color:rgb(80,0,80)">My primary concern is that Http3Transport requires non=
-generic modifications to the HTTP/3 layer mostly to support connection poo=
ling. I&#39;m worried that this will limit support for Http3Transport and c=
omplicates any HTTP/3 implementation that does support it.</span>&quot;</di=
v><div><br></div><div>[BA] I have also heard this concern from developers. =
The concerns primarily arise from the pooling of HTTP/3 Request/Responses w=
ith WebTransport. This does enable some interesting use cases, such as a Re=
quest/Response (e.g. gRPC) that can result in a server sending datagrams or=
 initiating bi-directional or uni-directional streams.=C2=A0 So there is pe=
rceived value, but the question is whether that value will be widely suppor=
ted across the HTTP/3 ecosystem.=C2=A0</div><div><br></div><div>At this poi=
nt, most generic HTTP/3 servers are not expected to support HTTP/3 datagram=
s (not part of the HTTP/3 protocol) or Http3Transport (perceived as a niche=
 protocol), so that pooling would only be possible when using a framework.=
=C2=A0 node.js will not have=C2=A0QUIC support for 12-18 months (held up by=
 OpenSSL) so even framework support is expected to be limited.</div></div><=
/blockquote><div><br></div><div>Where does this come from? A lot of QUIC se=
rvers are implementing QUIC datagrams, and once you have those the delta wi=
th h3 datagrams is negligible. Additionally, multiple h3 server implementer=
s=C2=A0have indicated they want to support WebTransport. It&#39;s starting =
to feel like the pushback on HTTP3Transport=C2=A0is purely based on a perce=
ption of complexity from folks who haven&#39;t tried to implement it? If th=
at&#39;s the case, then we should get some implementation experience to con=
firm or debunk that theory.</div><div>=C2=A0</div><blockquote class=3D"gmai=
l_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,20=
4,204);padding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" class=
=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:37 AM David Schinazi &lt;<a href=
=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmail=
.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"mar=
gin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1=
ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quo=
te"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:34 AM =
Luke Curley &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D"_blank">ki=
xelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex"><div dir=3D"ltr">We&#39;re on the same page that there&#39=
;s code in HTTP/3 that could be leveraged for QuicTransport in the form of =
the header parsing. I think there&#39;s a path to merge QuicTransport and H=
ttp3Transport by leveraging HTTP/3 for the handshake and QUIC for stream de=
livery.<div><br></div><div>My primary concern is that Http3Transport requir=
es non-generic modifications to the HTTP/3 layer mostly to support connecti=
on pooling. I&#39;m worried that this will limit support for Http3Transport=
 and complicates any HTTP/3 implementation that does support it.</div></div=
></blockquote><div><br></div><div>Hi Luke,</div><div><br></div><div>I&#39;m=
 curious, could you elaborate on what these &quot;non-generic modifications=
 to the HTTP/3 layer&quot; are please?</div><div><br></div><div>Thanks,</di=
v><div>David</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr"=
>On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue &lt;<a href=3D"mailto:lucaspa=
rdue.24.7@gmail.com" target=3D"_blank">lucaspardue.24.7@gmail.com</a>&gt; w=
rote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p=
x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=
=3D"auto"><div>Hi Luke,</div><div dir=3D"auto"><br><div class=3D"gmail_quot=
e" dir=3D"auto"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, 16 Nov 2020, =
12:26 Luke Curley, &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D"_bl=
ank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex"><div dir=3D"ltr"><div>Just to clarify, when I say &=
quot;QuicTransport is simpler&quot; I really mean &quot;QuicTransport has g=
reater interoperability&quot;. You can take any QUIC implementation (+ data=
gram extension) and add a thin layer to support QuicTransport. It&#39;s a n=
ice layering of protocols and it&#39;s something that I want to see in gene=
ral as QUIC replaces TCP.</div></div></blockquote></div></div><div dir=3D"a=
uto"><br></div><div dir=3D"auto">Thanks for the clarification. I appreciate=
 the sentiment. But given the development of QUIC its kind of surprising th=
at people would find it easier to identify an implementation that supports =
QUIC and datagram but does not support HTTP/3.</div><div dir=3D"auto"><br><=
/div><div dir=3D"auto">Thr situation for a more clean-room implementation i=
s different, I agree. However, by the time you&#39;ve done all the hard stu=
ff with QUIC, a very focused HTTP/3 layer ends up quite thin too. You can i=
gnore dynamic compression, server push and extensibility points.</div><div =
dir=3D"auto"><br></div><div dir=3D"auto">I also see the current design bein=
g the thin end of the wedge. The proposal I linked talks about HTTP-like he=
ader parsing. So its &quot;just&quot; a thin layer to do some parsing. Then=
 folks will probably want some want to tweak parameter, acontrol channel, a=
 way to do graceful close, a sprinkle of GREASE. To extrapolate forward, wh=
at would be the delta be between some final product QuicTransport and HTTP/=
3. Too small a delta and we&#39;ve wasted years of effort.</div><div dir=3D=
"auto"><br></div><div dir=3D"auto">Cheers</div><div dir=3D"auto">Lucas</div=
><div dir=3D"auto"><br></div><div dir=3D"auto"><br></div><div dir=3D"auto">=
<div class=3D"gmail_quote" dir=3D"auto"><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad=
ding-left:1ex"><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gma=
il_attr">On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue &lt;<a href=3D"mailto=
:lucaspardue.24.7@gmail.com" rel=3D"noreferrer" target=3D"_blank">lucaspard=
ue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex"><div dir=3D"ltr"><div>Hi folks,</div><div><br></div><div>T=
o follow up on one thread of discussion during IETF 109. To over simplify w=
hat we&#39;ve heard a few folks say, they prefer QuicTransport because it s=
impler and they don&#39;t need pooling.</div><div><br></div><div>I&#39;d li=
ke to push more on this, what is the measurable complexity of HTTP/3 over Q=
UIC plus a new application mapping that needs to be defined? Let&#39;s isol=
ate pooling as a variable and ignore it.</div><div><br></div><div>Victor me=
ntioned his proposal for a unified header semantic across all transports, t=
his is <a href=3D"https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-o=
verview/pull/4/files" rel=3D"noreferrer" target=3D"_blank">https://github.c=
om/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files</a>. Taking a=
 closer look at it, I have some concerns that I added as comments.  HTTP ha=
s semantics for a reason. If QuicTransport is going to start borrowing HTTP=
 piecemeal, I really wonder how simple people might feel it is. I think it&=
#39;s important to avoid something that looks like HTTP but behaves differe=
ntly. Is it really much of a stretch to just do HTTP/3 but give it a differ=
ent ALPN so that we avoid problems related to cross-protocol pooling?</div>=
<div><br></div><div>Cheers,</div><div>Lucas<br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div><br clear=3D"all"><br>-- <br><div dir=3D"ltr" class=3D"g=
mail_signature">Kazuho Oku</div></div>

--000000000000ea9ff905b443da62--


From nobody Mon Nov 16 18:02:33 2020
Return-Path: <kixelated@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C6EBE3A1872 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 18:02:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 n0V7Yl4GMMCf for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 18:02:27 -0800 (PST)
Received: from mail-ot1-x329.google.com (mail-ot1-x329.google.com [IPv6:2607:f8b0:4864:20::329]) (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 1E0213A186D for <webtransport@ietf.org>; Mon, 16 Nov 2020 18:02:27 -0800 (PST)
Received: by mail-ot1-x329.google.com with SMTP id f16so17961867otl.11 for <webtransport@ietf.org>; Mon, 16 Nov 2020 18:02:27 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=nxK+OXjBkIXb6/LxOCPGH8yW/C+N8pOSBNWW3JreDxU=; b=nDbHA8Q9T2r4f56mo2wvrDbbQ+LUOzdboqYoXZT887WcDgaama12Qgb1Hn5VTtta3+ nH5tZGOy1DSsw3Epkso+5EyXqL2wTWCwfyk1UUe6dls0Qao09tm4LejBDDSnedn/52aj ltHbdRaT6Eh2VXH0Xh27RY2FwxGB+46V8zszw2iZXkvhELknSHME5x9IUskp63nPRY1F FhJYUqKDD1ahxnbppgimghiFFj+lEvE+i9QOkVwAXYhl9JVrgUYO8nN/fjCzvEiE6o2X x22EYLksh6XdaYwMZFiQt5GoukGhz1CR6IqRw0KT63mKSgWJFyfyxvQ0izK3u3O3HDv1 VoLQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=nxK+OXjBkIXb6/LxOCPGH8yW/C+N8pOSBNWW3JreDxU=; b=gMQwE8vqn+xzV4f1WIgosvDZlv6KsrX9Y58fwM4lWwpJtCpTElwSxBSSyZgD1MesE/ iB3ddWU9kCDURYswBKUk2VjA8iLJ5kp9FFIsWlZre+KIJ06C0KSF7oMfeh3H95lL9PZu ozVaBU7DAUjCeI9vjbQ89cJK9coo8nhe+pfPfWN4ne91bsRFm8N39roCeHNEzZ24f1L8 +h1HlVbiv48o2xXmwWl+Bq0dXAK3yLGKNj+hkQRUCOy/ksT5dTMbBh0F9tKUbXxrg4LH 0+jPwYxJAWEjnQgz8bjO9JPl6Y0AH/4H/2oQQ/bRNlWWOtu4VgbKYrqJkdGVwSdQvaZP ozKA==
X-Gm-Message-State: AOAM5326nuu7xsteXxBe2NgJ+fBTT4KH0PKKedH/xJAAw/qi809ydEng mxX50GCLt7LV/Zdl1Obuo2oV0fzXyy18XmVzjhE=
X-Google-Smtp-Source: ABdhPJyT4VX4IKllZwIz8KoH5VnrJITT1+49/xRX845Jvd3Y3edwdmDxfvah3OAIPrx2VeYt9NsPTKsqeYTngfrkkXk=
X-Received: by 2002:a05:6830:22da:: with SMTP id q26mr1602870otc.127.1605578546392;  Mon, 16 Nov 2020 18:02:26 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com> <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com> <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com> <CAOW+2dsVSTcvYsKB7XB7GJy6eo4sTr70LJcKWtoQ1KLhVKpmOA@mail.gmail.com> <CAKcm_gPUfBUVz8Kh-jbHeUDCOAfF6FsjLHYsF6aZDgbCkMUw8Q@mail.gmail.com> <CAPDSy+6TCOJwxDgS+tWyshDnMDrwGYSYVQMSw3rdgj_GtE2E5g@mail.gmail.com>
In-Reply-To: <CAPDSy+6TCOJwxDgS+tWyshDnMDrwGYSYVQMSw3rdgj_GtE2E5g@mail.gmail.com>
From: Luke Curley <kixelated@gmail.com>
Date: Mon, 16 Nov 2020 18:02:15 -0800
Message-ID: <CAHVo=Zk51+BAZxY6+-iUaM9cqFApnsyAeeoJ4YmqqA-uR3ojJw@mail.gmail.com>
To: David Schinazi <dschinazi.ietf@gmail.com>
Cc: Ian Swett <ianswett@google.com>, Bernard Aboba <bernard.aboba@gmail.com>,  WebTransport <webtransport@ietf.org>, Lucas Pardue <lucaspardue.24.7@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000eab4ba05b443e27d"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/NXAKxJFYL-GSjris7NapxXhPqDI>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2020 02:02:32 -0000

--000000000000eab4ba05b443e27d
Content-Type: text/plain; charset="UTF-8"

I think that's a good starting summary David. Some things worth mentioning:

For 1 and 4, Twitch is using QuicTransport for both native applications
(ex. mobile, desktop, devices) and web applications. It's minor, but we
benefit from the ability to use any QUIC library (technically we don't
implement datagrams...) instead only those with HTTP/3 and Http3Transport
support. I think this context was missing in the previous discussions.

For 3, QuicTransport can support 0-RTT if we declare the path/origin
handshake to be idempotent
<https://github.com/vasilvv/webtransport/issues/16>... unless the new
connection is routed to a different host. Both pooled Http3Transport and a
new QuicTransport connection could take the same number of round trips.

For 4 and 5, I'm worried about flow control
<https://github.com/vasilvv/webtransport/issues/22>. tl;dr a Http3Transport
session could easily exhaust flow control limits for the entire connection.
This seems especially negative if pooling is performed transparently (ex. a
Http3Transport session may silently break HTTP/3 or other sessions).

On Mon, Nov 16, 2020 at 5:10 PM David Schinazi <dschinazi.ietf@gmail.com>
wrote:

> I'd like us to take a step back, I think we're conflating many different
> topics here, and it's making it impossible to reason about this (at least
> for someone running on not enough sleep like I am this week).
>
> Topic 1: the complexity of implementing Http3Transport as opposed to
> QuicTransport on the client
>     From my perspective, all browsers interested in WebTransport are
> implementing HTTP/3, so I don't see much complexity there.
>     Please reply here if you know of complexities I'm not seeing
>
> Topic 2: the complexity of implementing Http3Transport as opposed to
> QuicTransport on the server
>     As far as I know, most server-side QUIC stacks also support HTTP/3,
> and for QuicTransport they already have DATAGRAM support so I think the
> delta is negligible.
>     Please reply here if you know of complexities I'm not seeing
>
> Topic 3: the benefits of pooling WebTransport
>     This allows saving round trips to get WebTransport up and running
>     This allows sharing congestion control state
>     This allows letting the QUIC implementation prioritize DATAGRAMs vs
> HTTP requests instead of relying on the kernel or routers which have less
> information
>     Overall, I think pooling is beneficial (though not an absolute
> must-have)
>     Please reply here if you know of benefits I'm not seeing
>
> Topic 4: the difficulty of pooling Http3Transport on the client
>     It appears that all browsers that are interested in WebTransport are
> implementing pooling in their HTTP/3 stack so additionally pooling
> WebTransport should not introduce more complexity
>     Please reply here if you know of complexities I'm not seeing
>
> Topic 5: the difficulty of pooling Http3Transport on the server
>     This one is trickier. If you have frontends that know how to route
> HTTP requests to backends, DATAGRAM support is going to be a whole new
> world.
>     However, and I think this is really important: implementing this on
> the server is OPTIONAL.
>     The server can easily use a different hostname (and different TLS
> certificates) for HTTP vs WebTransport and clients will not pool the two
> together.
>     Once you use different domain names per WebTransport object,
> Http3Transport has the exact same pooling properties as QuicTransport.
>     Please reply here if you know of complexities I'm not seeing
>
> What am I missing?
>
> Thanks,
> David
>
>
> On Mon, Nov 16, 2020 at 4:45 PM Ian Swett <ianswett@google.com> wrote:
>
>> I'm *very* concerned about any functionality that *requires* pooling.
>> Pooling is a client-specific optimization and pooling policy is subject to
>> change(within reason) at any time.  If applications are saying "it'd be
>> cool if we could share congestion control and loss recovery state between
>> H3 and WebTransport most of the time", then I can see there being
>> real(albeit small) benefits, just like there would be for putting
>> DataChannels and RTP into one QUIC connection for WebRTC.  If people are
>> intending to rely on pooling so an HTTP(hopefully H3) request can trigger a
>> WebTransport response, I think we're in a world of pain and
>> over-optimization.
>>
>> This is more obvious in light of the fact that a WebTransport endpoint is
>> likely not a generic CDN endpoint, as has been clearly stated by Mark
>> Nottingham.
>>
>> Bernard's comments above point to a tighter coupling between HTTP/3 and
>> WebTransport than I think is practical in production, unless I
>> misunderstood(which I may have, it's been a long day).
>>
>> All of this makes me think we should punt the HTTP based WebTransport
>> options down the road a year or so and focus on QuicTransport initially.
>> It's not to say we won't do them, but they're clearly more complex
>> than QuicTransport and it'd be good to have real deployment experience
>> prior to starting so we know what the requirements are and where the
>> dragons are lurking.  Also, the W3C should design APIs that make it easy to
>> detect failure to establish a QUIC-based WebTransport, and this ensures
>> those are well exercised.  Maybe we DO require pooling under certain
>> conditions and describe those, but there are likely privacy concerns under
>> some circumstances and I'm not enough of an expert to know what would be
>> acceptable to all clients.
>>
>> Some people in the WG may think we have to release a TCP based
>> WebTransport at the same time as a QUIC based one, but I don't think that's
>> true and even if we standardized them at the same time, it doesn't mean
>> both will achieve wide deployment at the same time.  As I said at the mic,
>> I don't see any reason YouTube would deploy a TCP based WebTransport given
>> it will have to maintain an HTTP/1.1 option for basically forever and
>> they've spent a good bit of effort to make sure that works as well as it
>> can.  It's clear to me there are compelling use cases right now for
>> QuicTransport, but the driving use cases for the fallback are not clear to
>> me.  Consistency is intellectually appealing, but doesn't drive deployments.
>>
>> Ian
>>
>> On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba <bernard.aboba@gmail.com>
>> wrote:
>>
>>> David said:
>>>
>>> "Where does this come from? A lot of QUIC servers are implementing QUIC
>>> datagrams, and once you have those the delta with h3 datagrams is
>>> negligible. Additionally, multiple h3 server implementers have indicated
>>> they want to support WebTransport. It's starting to feel like the pushback
>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>> who haven't tried to implement it? If that's the case, then we should get
>>> some implementation experience to confirm or debunk that theory."
>>>
>>> [BA] The pooling use cases often involve an interaction between an
>>> HTTP/3 request/response and WebTransport.  so the HTTP/3 Request doesn't
>>> just elicit an HTTP/3 Response.  It also causes something else to happen,
>>> something that isn't specified in the HTTP/3 protocol, such as eliciting a
>>> datagram flow or bi/unidirectional stream from the server.  This is what is
>>> contemplated in several of the "Live Event" use cases, where the HTTP/3
>>> Request/Response would be requesting the desired Event. The major advantage
>>> over HLS is avoiding Head-of-Line blocking, reducing video freezes and
>>> stalls.  So developers understand the value that support for datagrams and
>>> server-initiated streams can provide - the question is whether they'll have
>>> all the interoperable pieces in place to deploy it.
>>>
>>> Just because a generic HTTP/3 server supports QUIC and WebTransport,
>>> doesn't mean that it will support these use cases.  I've been asked whether
>>> better interoperability and wider ecosystem support could be achieved by
>>> extending HTTP/3 in a way more in keeping with the existing protocol design
>>> - such as by allowing an HTTP/3 Request to specify a resource to be
>>> returned in a flow of datagrams.
>>>
>>> The situation might be more tenable if the node.js framework had HTTP/3
>>> and QUIC modules on the horizon.
>>>
>>> On Mon, Nov 16, 2020 at 1:00 PM David Schinazi <dschinazi.ietf@gmail.com>
>>> wrote:
>>>
>>>>
>>>>
>>>> On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba <bernard.aboba@gmail.com>
>>>> wrote:
>>>>
>>>>> Luke said:
>>>>>
>>>>> "My primary concern is that Http3Transport requires non-generic
>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>> HTTP/3 implementation that does support it."
>>>>>
>>>>> [BA] I have also heard this concern from developers. The concerns
>>>>> primarily arise from the pooling of HTTP/3 Request/Responses with
>>>>> WebTransport. This does enable some interesting use cases, such as a
>>>>> Request/Response (e.g. gRPC) that can result in a server sending datagrams
>>>>> or initiating bi-directional or uni-directional streams.  So there is
>>>>> perceived value, but the question is whether that value will be widely
>>>>> supported across the HTTP/3 ecosystem.
>>>>>
>>>>> At this point, most generic HTTP/3 servers are not expected to support
>>>>> HTTP/3 datagrams (not part of the HTTP/3 protocol) or Http3Transport
>>>>> (perceived as a niche protocol), so that pooling would only be possible
>>>>> when using a framework.  node.js will not have QUIC support for 12-18
>>>>> months (held up by OpenSSL) so even framework support is expected to be
>>>>> limited.
>>>>>
>>>>
>>>> Where does this come from? A lot of QUIC servers are implementing QUIC
>>>> datagrams, and once you have those the delta with h3 datagrams is
>>>> negligible. Additionally, multiple h3 server implementers have indicated
>>>> they want to support WebTransport. It's starting to feel like the pushback
>>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>>> who haven't tried to implement it? If that's the case, then we should get
>>>> some implementation experience to confirm or debunk that theory.
>>>>
>>>>
>>>>> On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <
>>>>> dschinazi.ietf@gmail.com> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> We're on the same page that there's code in HTTP/3 that could be
>>>>>>> leveraged for QuicTransport in the form of the header parsing. I think
>>>>>>> there's a path to merge QuicTransport and Http3Transport by leveraging
>>>>>>> HTTP/3 for the handshake and QUIC for stream delivery.
>>>>>>>
>>>>>>> My primary concern is that Http3Transport requires non-generic
>>>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>>>> HTTP/3 implementation that does support it.
>>>>>>>
>>>>>>
>>>>>> Hi Luke,
>>>>>>
>>>>>> I'm curious, could you elaborate on what these "non-generic
>>>>>> modifications to the HTTP/3 layer" are please?
>>>>>>
>>>>>> Thanks,
>>>>>> David
>>>>>>
>>>>>>
>>>>>>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <
>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>
>>>>>>>> Hi Luke,
>>>>>>>>
>>>>>>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Just to clarify, when I say "QuicTransport is simpler" I really
>>>>>>>>> mean "QuicTransport has greater interoperability". You can take any QUIC
>>>>>>>>> implementation (+ datagram extension) and add a thin layer to support
>>>>>>>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>>>>>>>> want to see in general as QUIC replaces TCP.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks for the clarification. I appreciate the sentiment. But given
>>>>>>>> the development of QUIC its kind of surprising that people would find it
>>>>>>>> easier to identify an implementation that supports QUIC and datagram but
>>>>>>>> does not support HTTP/3.
>>>>>>>>
>>>>>>>> Thr situation for a more clean-room implementation is different, I
>>>>>>>> agree. However, by the time you've done all the hard stuff with QUIC, a
>>>>>>>> very focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
>>>>>>>> compression, server push and extensibility points.
>>>>>>>>
>>>>>>>> I also see the current design being the thin end of the wedge. The
>>>>>>>> proposal I linked talks about HTTP-like header parsing. So its "just" a
>>>>>>>> thin layer to do some parsing. Then folks will probably want some want to
>>>>>>>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>>>>>>>> of GREASE. To extrapolate forward, what would be the delta be between some
>>>>>>>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>>>>>>>> years of effort.
>>>>>>>>
>>>>>>>> Cheers
>>>>>>>> Lucas
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi folks,
>>>>>>>>>>
>>>>>>>>>> To follow up on one thread of discussion during IETF 109. To over
>>>>>>>>>> simplify what we've heard a few folks say, they prefer QuicTransport
>>>>>>>>>> because it simpler and they don't need pooling.
>>>>>>>>>>
>>>>>>>>>> I'd like to push more on this, what is the measurable complexity
>>>>>>>>>> of HTTP/3 over QUIC plus a new application mapping that needs to be
>>>>>>>>>> defined? Let's isolate pooling as a variable and ignore it.
>>>>>>>>>>
>>>>>>>>>> Victor mentioned his proposal for a unified header semantic
>>>>>>>>>> across all transports, this is
>>>>>>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>>>>>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>>>>>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>>>>>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>>>>>>>> is. I think it's important to avoid something that looks like HTTP but
>>>>>>>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>>>>>>>> give it a different ALPN so that we avoid problems related to
>>>>>>>>>> cross-protocol pooling?
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>> Lucas
>>>>>>>>>> --
>>>>>>>>>> Webtransport mailing list
>>>>>>>>>> Webtransport@ietf.org
>>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>>
>>>>>>>>> --
>>>>>>> Webtransport mailing list
>>>>>>> Webtransport@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>
>>>>>> --
>>>>>> Webtransport mailing list
>>>>>> Webtransport@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>
>>>>> --
>>> Webtransport mailing list
>>> Webtransport@ietf.org
>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>
>>

--000000000000eab4ba05b443e27d
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">I think that&#39;s a good starting summary David. Some thi=
ngs worth mentioning:<div><br></div><div>For 1 and 4, Twitch is using QuicT=
ransport for both native applications (ex. mobile, desktop, devices) and we=
b applications. It&#39;s minor, but we benefit from the ability to use any =
QUIC library (technically we don&#39;t implement datagrams...) instead only=
 those with HTTP/3 and Http3Transport support. I think this context was mis=
sing in the previous discussions.</div><div><br></div><div>For 3, QuicTrans=
port can support 0-RTT if we <a href=3D"https://github.com/vasilvv/webtrans=
port/issues/16">declare the path/origin handshake to be=C2=A0idempotent</a>=
... unless the new connection is routed to a different host. Both pooled Ht=
tp3Transport and a new QuicTransport connection could take the same number =
of round trips.</div><div><br></div><div>For 4 and 5, <a href=3D"https://gi=
thub.com/vasilvv/webtransport/issues/22">I&#39;m worried about flow control=
</a>. tl;dr a Http3Transport session could easily exhaust flow control limi=
ts for the entire connection. This seems especially negative if pooling is =
performed transparently (ex. a Http3Transport session may silently break HT=
TP/3 or other sessions).</div></div><br><div class=3D"gmail_quote"><div dir=
=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 5:10 PM David Schinaz=
i &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com">dschinazi.ietf@gmail.com<=
/a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0=
px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><=
div dir=3D"ltr">I&#39;d like us to take a step back, I think we&#39;re conf=
lating many different topics here, and it&#39;s making it impossible to rea=
son about this (at least for someone running on not enough sleep like I am =
this week).<div><br></div><div>Topic 1: the complexity of implementing=C2=
=A0Http3Transport=C2=A0as opposed to QuicTransport=C2=A0on the client</div>=
<div>=C2=A0 =C2=A0 From my perspective, all browsers interested in WebTrans=
port are implementing HTTP/3, so I don&#39;t see much complexity there.</di=
v><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#39;m =
not seeing</div><div><div><br></div><div>Topic 2: the complexity of impleme=
nting=C2=A0Http3Transport=C2=A0as opposed to QuicTransport=C2=A0on the serv=
er</div></div><div>=C2=A0 =C2=A0 As far as I know, most server-side QUIC st=
acks also support HTTP/3, and for QuicTransport=C2=A0they already have DATA=
GRAM support so I think the delta is negligible.</div><div>=C2=A0 =C2=A0 Pl=
ease reply here if you know of complexities I&#39;m not seeing</div><div></=
div><div><br></div><div>Topic 3: the benefits of pooling WebTransport</div>=
<div>=C2=A0 =C2=A0 This allows saving round trips to get WebTransport up an=
d running</div><div>=C2=A0 =C2=A0 This allows sharing congestion control st=
ate</div><div>=C2=A0 =C2=A0 This allows letting the QUIC implementation pri=
oritize DATAGRAMs vs HTTP requests instead of relying on the kernel or rout=
ers which have less information</div><div>=C2=A0 =C2=A0 Overall, I think po=
oling is beneficial (though not an absolute must-have)</div><div>=C2=A0 =C2=
=A0 Please reply here if you know of benefits I&#39;m not seeing<br></div><=
div><br></div><div>Topic 4: the difficulty of pooling Http3Transport=C2=A0o=
n the client</div><div>=C2=A0 =C2=A0 It appears that all browsers that are =
interested in WebTransport are implementing pooling in their HTTP/3 stack s=
o additionally pooling WebTransport should not introduce more complexity</d=
iv><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#39;m=
 not seeing</div><div></div><div><div><br></div><div>Topic 5: the difficult=
y of pooling Http3Transport=C2=A0on the server</div></div><div>=C2=A0 =C2=
=A0 This one is trickier. If you have frontends that know how to route HTTP=
=C2=A0requests to backends, DATAGRAM support is going to be a whole new wor=
ld.</div><div>=C2=A0 =C2=A0 However, and I think this is really important: =
implementing this on the server is OPTIONAL.</div><div>=C2=A0 =C2=A0 The se=
rver can easily use a different hostname (and different TLS certificates) f=
or HTTP vs WebTransport and clients will not pool the two together.</div><d=
iv>=C2=A0 =C2=A0 Once you use different domain names per WebTransport objec=
t, Http3Transport=C2=A0has the exact same pooling properties as QuicTranspo=
rt.</div><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I=
&#39;m not seeing<br></div><div><br></div><div>What am I missing?</div><div=
><br></div><div>Thanks,</div><div>David</div><div><br></div></div><br><div =
class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16,=
 2020 at 4:45 PM Ian Swett &lt;<a href=3D"mailto:ianswett@google.com" targe=
t=3D"_blank">ianswett@google.com</a>&gt; wrote:<br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex"><div dir=3D"ltr">I&#39;m <b>very</b> conce=
rned about any functionality that <b>requires</b> pooling.=C2=A0 Pooling is=
 a client-specific optimization and pooling policy is subject to change(wit=
hin reason) at any time.=C2=A0 If applications=C2=A0are saying &quot;it&#39=
;d be cool if we could share congestion control and loss recovery state bet=
ween H3 and WebTransport most of the time&quot;, then I can see there being=
 real(albeit small) benefits, just like there would be for putting DataChan=
nels and RTP into one QUIC connection for WebRTC.=C2=A0 If people are inten=
ding to rely on pooling so an HTTP(hopefully H3) request can trigger a WebT=
ransport response, I think we&#39;re in a world of pain and over-optimizati=
on.<div><br></div><div>This is more obvious in light of the fact that a Web=
Transport endpoint=C2=A0is likely not a generic CDN endpoint, as has been c=
learly stated by Mark Nottingham.<br><div><br></div><div>Bernard&#39;s comm=
ents above point to a tighter coupling between HTTP/3 and WebTransport than=
 I think is practical in production, unless I misunderstood(which I may hav=
e, it&#39;s been a long day).</div><div><br></div><div>All of this makes me=
 think we should punt the HTTP based WebTransport options down the road a y=
ear or so and focus on QuicTransport=C2=A0initially.=C2=A0 It&#39;s not to =
say we won&#39;t do them, but they&#39;re clearly more complex than=C2=A0Qu=
icTransport=C2=A0and it&#39;d be good to have real deployment experience pr=
ior to starting so we know what the requirements are and where the dragons =
are lurking.=C2=A0 Also, the W3C should design APIs that make it easy to de=
tect failure to establish a QUIC-based=C2=A0WebTransport, and this ensures =
those are well exercised.=C2=A0 Maybe we DO require pooling under certain c=
onditions and describe those, but there are likely privacy concerns under s=
ome circumstances and I&#39;m not enough of an expert to know what would be=
 acceptable to all clients.</div><div><br></div><div>Some=C2=A0people in th=
e WG may think we have to release a TCP based WebTransport at the same time=
 as a QUIC based one, but I don&#39;t think that&#39;s true and even if we =
standardized them at the same time, it doesn&#39;t mean both will achieve w=
ide deployment at the same time.=C2=A0 As I said at the mic, I don&#39;t se=
e any reason YouTube would deploy a TCP based WebTransport given it will ha=
ve to maintain an HTTP/1.1 option for basically forever and they&#39;ve spe=
nt a good bit of effort to make sure that works as well as it can.=C2=A0 It=
&#39;s clear to me there are compelling use cases right now for QuicTranspo=
rt, but=C2=A0the driving use cases for the fallback are not clear to me.=C2=
=A0 Consistency is intellectually appealing, but doesn&#39;t drive deployme=
nts.</div></div><div><br></div><div>Ian</div></div><br><div class=3D"gmail_=
quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 6:36 P=
M Bernard Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com" target=3D"_b=
lank">bernard.aboba@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"=
gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20=
4,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"=
ltr">David said:=C2=A0<div><br></div><div>&quot;Where does this come from? =
A lot of QUIC servers are implementing QUIC datagrams, and once you have th=
ose the delta with h3 datagrams is negligible. Additionally, multiple h3 se=
rver implementers=C2=A0have indicated they want to support WebTransport. It=
&#39;s starting to feel like the pushback on HTTP3Transport=C2=A0is purely =
based on a perception of complexity from folks who haven&#39;t tried to imp=
lement it? If that&#39;s the case, then we should get some implementation e=
xperience to confirm or debunk that theory.&quot;</div><div><br></div><div>=
[BA] The pooling use cases often involve an interaction between an HTTP/3 r=
equest/response and WebTransport.=C2=A0 so the HTTP/3 Request doesn&#39;t j=
ust elicit an HTTP/3 Response.=C2=A0 It also causes something else to happe=
n, something that isn&#39;t specified in the HTTP/3 protocol, such as elici=
ting a datagram flow or bi/unidirectional stream from the server.=C2=A0 Thi=
s is what is contemplated in several of the &quot;Live Event&quot; use case=
s, where the HTTP/3 Request/Response would be requesting the desired Event.=
 The major advantage over HLS is avoiding Head-of-Line blocking, reducing v=
ideo freezes and stalls.=C2=A0 So developers understand the value that supp=
ort for datagrams and server-initiated streams can provide - the question i=
s whether they&#39;ll have all the interoperable pieces in place to deploy =
it.=C2=A0 </div><div><br></div><div>Just because a generic HTTP/3 server su=
pports QUIC and WebTransport, doesn&#39;t mean that it will support these u=
se cases.=C2=A0 I&#39;ve been asked whether better interoperability and wid=
er ecosystem support could be achieved by extending HTTP/3 in a way more in=
 keeping with the existing protocol design - such as by allowing an HTTP/3 =
Request to specify a resource to be returned in a flow of datagrams.=C2=A0<=
/div><div><br></div><div>The situation might be more tenable if the node.js=
 framework had HTTP/3 and QUIC modules on the horizon.<br></div></div></div=
></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr"=
>On Mon, Nov 16, 2020 at 1:00 PM David Schinazi &lt;<a href=3D"mailto:dschi=
nazi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmail.com</a>&gt; wro=
te:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"=
ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote"><div dir=3D"=
ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba &l=
t;<a href=3D"mailto:bernard.aboba@gmail.com" target=3D"_blank">bernard.abob=
a@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><div dir=3D"ltr">Luke said:=C2=A0<div><br></div><div>&quot;<span=
 style=3D"color:rgb(80,0,80)">My primary concern is that Http3Transport req=
uires non-generic modifications to the HTTP/3 layer mostly to support conne=
ction pooling. I&#39;m worried that this will limit support for Http3Transp=
ort and complicates any HTTP/3 implementation that does support it.</span>&=
quot;</div><div><br></div><div>[BA] I have also heard this concern from dev=
elopers. The concerns primarily arise from the pooling of HTTP/3 Request/Re=
sponses with WebTransport. This does enable some interesting use cases, suc=
h as a Request/Response (e.g. gRPC) that can result in a server sending dat=
agrams or initiating bi-directional or uni-directional streams.=C2=A0 So th=
ere is perceived value, but the question is whether that value will be wide=
ly supported across the HTTP/3 ecosystem.=C2=A0</div><div><br></div><div>At=
 this point, most generic HTTP/3 servers are not expected to support HTTP/3=
 datagrams (not part of the HTTP/3 protocol) or Http3Transport (perceived a=
s a niche protocol), so that pooling would only be possible when using a fr=
amework.=C2=A0 node.js will not have=C2=A0QUIC support for 12-18 months (he=
ld up by OpenSSL) so even framework support is expected to be limited.</div=
></div></blockquote><div><br></div><div>Where does this come from? A lot of=
 QUIC servers are implementing QUIC datagrams, and once you have those the =
delta with h3 datagrams is negligible. Additionally, multiple h3 server imp=
lementers=C2=A0have indicated they want to support WebTransport. It&#39;s s=
tarting to feel like the pushback on HTTP3Transport=C2=A0is purely based on=
 a perception of complexity from folks who haven&#39;t tried to implement i=
t? If that&#39;s the case, then we should get some implementation experienc=
e to confirm or debunk that theory.</div><div>=C2=A0</div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr=
" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:37 AM David Schinazi &lt;=
<a href=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.iet=
f@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gm=
ail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11=
:34 AM Luke Curley &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D"_bl=
ank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex"><div dir=3D"ltr">We&#39;re on the same page that th=
ere&#39;s code in HTTP/3 that could be leveraged for QuicTransport in the f=
orm of the header parsing. I think there&#39;s a path to merge QuicTranspor=
t and Http3Transport by leveraging HTTP/3 for the handshake and QUIC for st=
ream delivery.<div><br></div><div>My primary concern is that Http3Transport=
 requires non-generic modifications to the HTTP/3 layer mostly to support c=
onnection pooling. I&#39;m worried that this will limit support for Http3Tr=
ansport and complicates any HTTP/3 implementation that does support it.</di=
v></div></blockquote><div><br></div><div>Hi Luke,</div><div><br></div><div>=
I&#39;m curious, could you elaborate on what these &quot;non-generic modifi=
cations to the HTTP/3 layer&quot; are please?</div><div><br></div><div>Than=
ks,</div><div>David</div><div>=C2=A0</div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail=
_attr">On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue &lt;<a href=3D"mailto:l=
ucaspardue.24.7@gmail.com" target=3D"_blank">lucaspardue.24.7@gmail.com</a>=
&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div=
 dir=3D"auto"><div>Hi Luke,</div><div dir=3D"auto"><br><div class=3D"gmail_=
quote" dir=3D"auto"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, 16 Nov 20=
20, 12:26 Luke Curley, &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D=
"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"g=
mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204=
,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Just to clarify, when I s=
ay &quot;QuicTransport is simpler&quot; I really mean &quot;QuicTransport h=
as greater interoperability&quot;. You can take any QUIC implementation (+ =
datagram extension) and add a thin layer to support QuicTransport. It&#39;s=
 a nice layering of protocols and it&#39;s something that I want to see in =
general as QUIC replaces TCP.</div></div></blockquote></div></div><div dir=
=3D"auto"><br></div><div dir=3D"auto">Thanks for the clarification. I appre=
ciate the sentiment. But given the development of QUIC its kind of surprisi=
ng that people would find it easier to identify an implementation that supp=
orts QUIC and datagram but does not support HTTP/3.</div><div dir=3D"auto">=
<br></div><div dir=3D"auto">Thr situation for a more clean-room implementat=
ion is different, I agree. However, by the time you&#39;ve done all the har=
d stuff with QUIC, a very focused HTTP/3 layer ends up quite thin too. You =
can ignore dynamic compression, server push and extensibility points.</div>=
<div dir=3D"auto"><br></div><div dir=3D"auto">I also see the current design=
 being the thin end of the wedge. The proposal I linked talks about HTTP-li=
ke header parsing. So its &quot;just&quot; a thin layer to do some parsing.=
 Then folks will probably want some want to tweak parameter, acontrol chann=
el, a way to do graceful close, a sprinkle of GREASE. To extrapolate forwar=
d, what would be the delta be between some final product QuicTransport and =
HTTP/3. Too small a delta and we&#39;ve wasted years of effort.</div><div d=
ir=3D"auto"><br></div><div dir=3D"auto">Cheers</div><div dir=3D"auto">Lucas=
</div><div dir=3D"auto"><br></div><div dir=3D"auto"><br></div><div dir=3D"a=
uto"><div class=3D"gmail_quote" dir=3D"auto"><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex"><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=
=3D"gmail_attr">On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue &lt;<a href=3D=
"mailto:lucaspardue.24.7@gmail.com" rel=3D"noreferrer" target=3D"_blank">lu=
caspardue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex"><div dir=3D"ltr"><div>Hi folks,</div><div><br></div=
><div>To follow up on one thread of discussion during IETF 109. To over sim=
plify what we&#39;ve heard a few folks say, they prefer QuicTransport becau=
se it simpler and they don&#39;t need pooling.</div><div><br></div><div>I&#=
39;d like to push more on this, what is the measurable complexity of HTTP/3=
 over QUIC plus a new application mapping that needs to be defined? Let&#39=
;s isolate pooling as a variable and ignore it.</div><div><br></div><div>Vi=
ctor mentioned his proposal for a unified header semantic across all transp=
orts, this is <a href=3D"https://github.com/ietf-wg-webtrans/draft-ietf-web=
trans-overview/pull/4/files" rel=3D"noreferrer" target=3D"_blank">https://g=
ithub.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files</a>. T=
aking a closer look at it, I have some concerns that I added as comments.  =
HTTP has semantics for a reason. If QuicTransport is going to start borrowi=
ng HTTP piecemeal, I really wonder how simple people might feel it is. I th=
ink it&#39;s important to avoid something that looks like HTTP but behaves =
differently. Is it really much of a stretch to just do HTTP/3 but give it a=
 different ALPN so that we avoid problems related to cross-protocol pooling=
?</div><div><br></div><div>Cheers,</div><div>Lucas<br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div>
</blockquote></div>

--000000000000eab4ba05b443e27d--


From nobody Mon Nov 16 21:29:20 2020
Return-Path: <dschinazi.ietf@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0C0D93A0E01 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 21:29:19 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 5163aTPgfovZ for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 21:29:15 -0800 (PST)
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com [IPv6:2a00:1450:4864:20::236]) (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 EA27F3A0DFE for <webtransport@ietf.org>; Mon, 16 Nov 2020 21:29:14 -0800 (PST)
Received: by mail-lj1-x236.google.com with SMTP id s9so22817645ljo.11 for <webtransport@ietf.org>; Mon, 16 Nov 2020 21:29:14 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=pod9hmMKuik5Utq7qRxMeMIDHqXfB9Ic3tHh2MK2Zqw=; b=a8R4SkUQuoYEjX/INOzLck6mMTJ/81WjMgikOOaJtmhv2NWarQUBlkcQ5t8aO8ZDxH jNdTSJQscKa2ZGe3nx3sqxJf7P1OoyJ1ws4QVNKo3p7l6x2ZMQagadVo5dEYyitic4Z2 THQkNe+T1MmIvaEmv7vLbQE9moH+9wZ/2br1lsdvHG9UXQyb54YEOWS0ZroRHlQYu8lJ VwfXMdGDiQKqSLZ4FQxBrlDE1jY9SSoWgFB66CFOkW3vhQEX3tFsTfzfc4s6UMxyP9bH 1fzkyCiU3j3GYsGuukJqI0JXKYOtOV46ncVo8pQfQ56HmRX09dkrsrBDTni0JAW1KFMB SfGQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pod9hmMKuik5Utq7qRxMeMIDHqXfB9Ic3tHh2MK2Zqw=; b=PTNzggY2V5FaOJjR7AlY4qYzUfMCfra5YdxeidGc/6Qmm5PoxQuyPnOHxZMTqa3lHe S2JAVMRyJX7Hv3NvRiZpE+kNBuoyxKjsK3RdfZc6up3QoQxcHZHNxKL0cBU2ULQ3IvU9 Jd3DyCPlXYifS6qH44EZTQRknolGWc0+2BBwdM2L73v1e1CUUgZH8ejwlscS9zD4i/Wn 3oFG8/jkDXZMTg4K1J9vaLiu2XCzR/3cqcAil5AT2DP86bNHzktCm8CMVZTx8Albj+Qc wEbteb1qU2diOZuECiRcHOMHC3A/k9XoGJfSKFu2a32p3eNLoRD2O4geDZ3bNoRz7jDt Z+Xw==
X-Gm-Message-State: AOAM530MuFYNz1dxvG8Cpbae/u7l+wjcaXshwXOBvsKsTtC0aXE7t7xw /5Gpk5fqtU+YakUvf1De7WKC5n4E262RkMkiQvI=
X-Google-Smtp-Source: ABdhPJxvvDQfp57jFPJVJOHvuus1vk/UN3/fX2dhwTu5edc6WIeeWlgs27/ODm/hUSJIjvsMu0vDC1mz9hrWWglgoiQ=
X-Received: by 2002:a05:651c:319:: with SMTP id a25mr1177635ljp.333.1605590952796;  Mon, 16 Nov 2020 21:29:12 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com> <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com> <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com> <CAOW+2dsVSTcvYsKB7XB7GJy6eo4sTr70LJcKWtoQ1KLhVKpmOA@mail.gmail.com> <CAKcm_gPUfBUVz8Kh-jbHeUDCOAfF6FsjLHYsF6aZDgbCkMUw8Q@mail.gmail.com> <CAPDSy+6TCOJwxDgS+tWyshDnMDrwGYSYVQMSw3rdgj_GtE2E5g@mail.gmail.com> <CAHVo=Zk51+BAZxY6+-iUaM9cqFApnsyAeeoJ4YmqqA-uR3ojJw@mail.gmail.com>
In-Reply-To: <CAHVo=Zk51+BAZxY6+-iUaM9cqFApnsyAeeoJ4YmqqA-uR3ojJw@mail.gmail.com>
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Mon, 16 Nov 2020 21:29:01 -0800
Message-ID: <CAPDSy+76Z9UF4Mjey-R_Kpi7vWqzJ86K9kw-Z=2aPfcz=YCgEw@mail.gmail.com>
To: Luke Curley <kixelated@gmail.com>
Cc: Ian Swett <ianswett@google.com>, Bernard Aboba <bernard.aboba@gmail.com>,  WebTransport <webtransport@ietf.org>, Lucas Pardue <lucaspardue.24.7@gmail.com>
Content-Type: multipart/alternative; boundary="00000000000065649105b446c6ed"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/z6_avMVOzCLx5F8BLFzukMHhNGU>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2020 05:29:19 -0000

--00000000000065649105b446c6ed
Content-Type: text/plain; charset="UTF-8"

On Mon, Nov 16, 2020 at 6:02 PM Luke Curley <kixelated@gmail.com> wrote:

> I think that's a good starting summary David. Some things worth mentioning:
>
> For 1 and 4, Twitch is using QuicTransport for both native applications
> (ex. mobile, desktop, devices) and web applications. It's minor, but we
> benefit from the ability to use any QUIC library (technically we don't
> implement datagrams...) instead only those with HTTP/3 and Http3Transport
> support. I think this context was missing in the previous discussions.
>

Can you clarify which implementations you were considering that support
QUIC+DATAGRAM but not HTTP/3?


> For 3, QuicTransport can support 0-RTT if we declare the path/origin
> handshake to be idempotent
> <https://github.com/vasilvv/webtransport/issues/16>... unless the new
> connection is routed to a different host. Both pooled Http3Transport and a
> new QuicTransport connection could take the same number of round trips.
>

0-RTT state isn't saved across ALPNs, even if it's to the same host. So
Http3Transport would get inline 0-RTT but QuicTransport would not get 0-RTT
unless you've already performed a QuicTransport handshake in recent history.


> For 4 and 5, I'm worried about flow control
> <https://github.com/vasilvv/webtransport/issues/22>. tl;dr a
> Http3Transport session could easily exhaust flow control limits for the
> entire connection. This seems especially negative if pooling is performed
> transparently (ex. a Http3Transport session may silently break HTTP/3 or
> other sessions).
>

Unintentionally hitting the connection-level flow control limit is a
serious implementation bug. I wouldn't expect this to still be a problem
once implementations mature. I wouldn't want to base our protocol choices
based on a bug in non-production-ready implementations.


> On Mon, Nov 16, 2020 at 5:10 PM David Schinazi <dschinazi.ietf@gmail.com>
> wrote:
>
>> I'd like us to take a step back, I think we're conflating many different
>> topics here, and it's making it impossible to reason about this (at least
>> for someone running on not enough sleep like I am this week).
>>
>> Topic 1: the complexity of implementing Http3Transport as opposed to
>> QuicTransport on the client
>>     From my perspective, all browsers interested in WebTransport are
>> implementing HTTP/3, so I don't see much complexity there.
>>     Please reply here if you know of complexities I'm not seeing
>>
>> Topic 2: the complexity of implementing Http3Transport as opposed to
>> QuicTransport on the server
>>     As far as I know, most server-side QUIC stacks also support HTTP/3,
>> and for QuicTransport they already have DATAGRAM support so I think the
>> delta is negligible.
>>     Please reply here if you know of complexities I'm not seeing
>>
>> Topic 3: the benefits of pooling WebTransport
>>     This allows saving round trips to get WebTransport up and running
>>     This allows sharing congestion control state
>>     This allows letting the QUIC implementation prioritize DATAGRAMs vs
>> HTTP requests instead of relying on the kernel or routers which have less
>> information
>>     Overall, I think pooling is beneficial (though not an absolute
>> must-have)
>>     Please reply here if you know of benefits I'm not seeing
>>
>> Topic 4: the difficulty of pooling Http3Transport on the client
>>     It appears that all browsers that are interested in WebTransport are
>> implementing pooling in their HTTP/3 stack so additionally pooling
>> WebTransport should not introduce more complexity
>>     Please reply here if you know of complexities I'm not seeing
>>
>> Topic 5: the difficulty of pooling Http3Transport on the server
>>     This one is trickier. If you have frontends that know how to route
>> HTTP requests to backends, DATAGRAM support is going to be a whole new
>> world.
>>     However, and I think this is really important: implementing this on
>> the server is OPTIONAL.
>>     The server can easily use a different hostname (and different TLS
>> certificates) for HTTP vs WebTransport and clients will not pool the two
>> together.
>>     Once you use different domain names per WebTransport object,
>> Http3Transport has the exact same pooling properties as QuicTransport.
>>     Please reply here if you know of complexities I'm not seeing
>>
>> What am I missing?
>>
>> Thanks,
>> David
>>
>>
>> On Mon, Nov 16, 2020 at 4:45 PM Ian Swett <ianswett@google.com> wrote:
>>
>>> I'm *very* concerned about any functionality that *requires* pooling.
>>> Pooling is a client-specific optimization and pooling policy is subject to
>>> change(within reason) at any time.  If applications are saying "it'd be
>>> cool if we could share congestion control and loss recovery state between
>>> H3 and WebTransport most of the time", then I can see there being
>>> real(albeit small) benefits, just like there would be for putting
>>> DataChannels and RTP into one QUIC connection for WebRTC.  If people are
>>> intending to rely on pooling so an HTTP(hopefully H3) request can trigger a
>>> WebTransport response, I think we're in a world of pain and
>>> over-optimization.
>>>
>>> This is more obvious in light of the fact that a WebTransport
>>> endpoint is likely not a generic CDN endpoint, as has been clearly stated
>>> by Mark Nottingham.
>>>
>>> Bernard's comments above point to a tighter coupling between HTTP/3 and
>>> WebTransport than I think is practical in production, unless I
>>> misunderstood(which I may have, it's been a long day).
>>>
>>> All of this makes me think we should punt the HTTP based WebTransport
>>> options down the road a year or so and focus on QuicTransport initially.
>>> It's not to say we won't do them, but they're clearly more complex
>>> than QuicTransport and it'd be good to have real deployment experience
>>> prior to starting so we know what the requirements are and where the
>>> dragons are lurking.  Also, the W3C should design APIs that make it easy to
>>> detect failure to establish a QUIC-based WebTransport, and this ensures
>>> those are well exercised.  Maybe we DO require pooling under certain
>>> conditions and describe those, but there are likely privacy concerns under
>>> some circumstances and I'm not enough of an expert to know what would be
>>> acceptable to all clients.
>>>
>>> Some people in the WG may think we have to release a TCP based
>>> WebTransport at the same time as a QUIC based one, but I don't think that's
>>> true and even if we standardized them at the same time, it doesn't mean
>>> both will achieve wide deployment at the same time.  As I said at the mic,
>>> I don't see any reason YouTube would deploy a TCP based WebTransport given
>>> it will have to maintain an HTTP/1.1 option for basically forever and
>>> they've spent a good bit of effort to make sure that works as well as it
>>> can.  It's clear to me there are compelling use cases right now for
>>> QuicTransport, but the driving use cases for the fallback are not clear to
>>> me.  Consistency is intellectually appealing, but doesn't drive deployments.
>>>
>>> Ian
>>>
>>> On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba <bernard.aboba@gmail.com>
>>> wrote:
>>>
>>>> David said:
>>>>
>>>> "Where does this come from? A lot of QUIC servers are implementing QUIC
>>>> datagrams, and once you have those the delta with h3 datagrams is
>>>> negligible. Additionally, multiple h3 server implementers have indicated
>>>> they want to support WebTransport. It's starting to feel like the pushback
>>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>>> who haven't tried to implement it? If that's the case, then we should get
>>>> some implementation experience to confirm or debunk that theory."
>>>>
>>>> [BA] The pooling use cases often involve an interaction between an
>>>> HTTP/3 request/response and WebTransport.  so the HTTP/3 Request doesn't
>>>> just elicit an HTTP/3 Response.  It also causes something else to happen,
>>>> something that isn't specified in the HTTP/3 protocol, such as eliciting a
>>>> datagram flow or bi/unidirectional stream from the server.  This is what is
>>>> contemplated in several of the "Live Event" use cases, where the HTTP/3
>>>> Request/Response would be requesting the desired Event. The major advantage
>>>> over HLS is avoiding Head-of-Line blocking, reducing video freezes and
>>>> stalls.  So developers understand the value that support for datagrams and
>>>> server-initiated streams can provide - the question is whether they'll have
>>>> all the interoperable pieces in place to deploy it.
>>>>
>>>> Just because a generic HTTP/3 server supports QUIC and WebTransport,
>>>> doesn't mean that it will support these use cases.  I've been asked whether
>>>> better interoperability and wider ecosystem support could be achieved by
>>>> extending HTTP/3 in a way more in keeping with the existing protocol design
>>>> - such as by allowing an HTTP/3 Request to specify a resource to be
>>>> returned in a flow of datagrams.
>>>>
>>>> The situation might be more tenable if the node.js framework had HTTP/3
>>>> and QUIC modules on the horizon.
>>>>
>>>> On Mon, Nov 16, 2020 at 1:00 PM David Schinazi <
>>>> dschinazi.ietf@gmail.com> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba <
>>>>> bernard.aboba@gmail.com> wrote:
>>>>>
>>>>>> Luke said:
>>>>>>
>>>>>> "My primary concern is that Http3Transport requires non-generic
>>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>>> HTTP/3 implementation that does support it."
>>>>>>
>>>>>> [BA] I have also heard this concern from developers. The concerns
>>>>>> primarily arise from the pooling of HTTP/3 Request/Responses with
>>>>>> WebTransport. This does enable some interesting use cases, such as a
>>>>>> Request/Response (e.g. gRPC) that can result in a server sending datagrams
>>>>>> or initiating bi-directional or uni-directional streams.  So there is
>>>>>> perceived value, but the question is whether that value will be widely
>>>>>> supported across the HTTP/3 ecosystem.
>>>>>>
>>>>>> At this point, most generic HTTP/3 servers are not expected to
>>>>>> support HTTP/3 datagrams (not part of the HTTP/3 protocol) or
>>>>>> Http3Transport (perceived as a niche protocol), so that pooling would only
>>>>>> be possible when using a framework.  node.js will not have QUIC support for
>>>>>> 12-18 months (held up by OpenSSL) so even framework support is expected to
>>>>>> be limited.
>>>>>>
>>>>>
>>>>> Where does this come from? A lot of QUIC servers are implementing QUIC
>>>>> datagrams, and once you have those the delta with h3 datagrams is
>>>>> negligible. Additionally, multiple h3 server implementers have indicated
>>>>> they want to support WebTransport. It's starting to feel like the pushback
>>>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>>>> who haven't tried to implement it? If that's the case, then we should get
>>>>> some implementation experience to confirm or debunk that theory.
>>>>>
>>>>>
>>>>>> On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <
>>>>>> dschinazi.ietf@gmail.com> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> We're on the same page that there's code in HTTP/3 that could be
>>>>>>>> leveraged for QuicTransport in the form of the header parsing. I think
>>>>>>>> there's a path to merge QuicTransport and Http3Transport by leveraging
>>>>>>>> HTTP/3 for the handshake and QUIC for stream delivery.
>>>>>>>>
>>>>>>>> My primary concern is that Http3Transport requires non-generic
>>>>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>>>>> HTTP/3 implementation that does support it.
>>>>>>>>
>>>>>>>
>>>>>>> Hi Luke,
>>>>>>>
>>>>>>> I'm curious, could you elaborate on what these "non-generic
>>>>>>> modifications to the HTTP/3 layer" are please?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> David
>>>>>>>
>>>>>>>
>>>>>>>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <
>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Hi Luke,
>>>>>>>>>
>>>>>>>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Just to clarify, when I say "QuicTransport is simpler" I really
>>>>>>>>>> mean "QuicTransport has greater interoperability". You can take any QUIC
>>>>>>>>>> implementation (+ datagram extension) and add a thin layer to support
>>>>>>>>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>>>>>>>>> want to see in general as QUIC replaces TCP.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks for the clarification. I appreciate the sentiment. But
>>>>>>>>> given the development of QUIC its kind of surprising that people would find
>>>>>>>>> it easier to identify an implementation that supports QUIC and datagram but
>>>>>>>>> does not support HTTP/3.
>>>>>>>>>
>>>>>>>>> Thr situation for a more clean-room implementation is different, I
>>>>>>>>> agree. However, by the time you've done all the hard stuff with QUIC, a
>>>>>>>>> very focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
>>>>>>>>> compression, server push and extensibility points.
>>>>>>>>>
>>>>>>>>> I also see the current design being the thin end of the wedge. The
>>>>>>>>> proposal I linked talks about HTTP-like header parsing. So its "just" a
>>>>>>>>> thin layer to do some parsing. Then folks will probably want some want to
>>>>>>>>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>>>>>>>>> of GREASE. To extrapolate forward, what would be the delta be between some
>>>>>>>>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>>>>>>>>> years of effort.
>>>>>>>>>
>>>>>>>>> Cheers
>>>>>>>>> Lucas
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi folks,
>>>>>>>>>>>
>>>>>>>>>>> To follow up on one thread of discussion during IETF 109. To
>>>>>>>>>>> over simplify what we've heard a few folks say, they prefer QuicTransport
>>>>>>>>>>> because it simpler and they don't need pooling.
>>>>>>>>>>>
>>>>>>>>>>> I'd like to push more on this, what is the measurable complexity
>>>>>>>>>>> of HTTP/3 over QUIC plus a new application mapping that needs to be
>>>>>>>>>>> defined? Let's isolate pooling as a variable and ignore it.
>>>>>>>>>>>
>>>>>>>>>>> Victor mentioned his proposal for a unified header semantic
>>>>>>>>>>> across all transports, this is
>>>>>>>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>>>>>>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>>>>>>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>>>>>>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>>>>>>>>> is. I think it's important to avoid something that looks like HTTP but
>>>>>>>>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>>>>>>>>> give it a different ALPN so that we avoid problems related to
>>>>>>>>>>> cross-protocol pooling?
>>>>>>>>>>>
>>>>>>>>>>> Cheers,
>>>>>>>>>>> Lucas
>>>>>>>>>>> --
>>>>>>>>>>> Webtransport mailing list
>>>>>>>>>>> Webtransport@ietf.org
>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>> Webtransport mailing list
>>>>>>>> Webtransport@ietf.org
>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>
>>>>>>> --
>>>>>>> Webtransport mailing list
>>>>>>> Webtransport@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>
>>>>>> --
>>>> Webtransport mailing list
>>>> Webtransport@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>
>>>

--00000000000065649105b446c6ed
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 6:02 PM Luke =
Curley &lt;<a href=3D"mailto:kixelated@gmail.com">kixelated@gmail.com</a>&g=
t; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p=
x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div d=
ir=3D"ltr">I think that&#39;s a good starting summary David. Some things wo=
rth mentioning:<div><br></div><div>For 1 and 4, Twitch is using QuicTranspo=
rt for both native applications (ex. mobile, desktop, devices) and web appl=
ications. It&#39;s minor, but we benefit from the ability to use any QUIC l=
ibrary (technically we don&#39;t implement datagrams...) instead only those=
 with HTTP/3 and Http3Transport support. I think this context was missing i=
n the previous discussions.</div></div></blockquote><div><br></div><div>Can=
 you clarify which implementations you were considering that support QUIC+D=
ATAGRAM but not HTTP/3?</div><div>=C2=A0</div><blockquote class=3D"gmail_qu=
ote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,20=
4);padding-left:1ex"><div dir=3D"ltr"><div>For 3, QuicTransport can support=
 0-RTT if we <a href=3D"https://github.com/vasilvv/webtransport/issues/16" =
target=3D"_blank">declare the path/origin handshake to be=C2=A0idempotent</=
a>... unless the new connection is routed to a different host. Both pooled =
Http3Transport and a new QuicTransport connection could take the same numbe=
r of round trips.</div></div></blockquote><div><br></div><div>0-RTT state i=
sn&#39;t saved across ALPNs, even if it&#39;s to the same host. So Http3Tra=
nsport=C2=A0would get inline 0-RTT but QuicTransport would not get 0-RTT un=
less you&#39;ve already performed a QuicTransport handshake in recent histo=
ry.</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin=
:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"=
><div dir=3D"ltr"><div>For 4 and 5, <a href=3D"https://github.com/vasilvv/w=
ebtransport/issues/22" target=3D"_blank">I&#39;m worried about flow control=
</a>. tl;dr a Http3Transport session could easily exhaust flow control limi=
ts for the entire connection. This seems especially negative if pooling is =
performed transparently (ex. a Http3Transport session may silently break HT=
TP/3 or other sessions).</div></div></blockquote><div><br></div><div>Uninte=
ntionally hitting the connection-level=C2=A0flow control limit is a serious=
 implementation bug. I wouldn&#39;t expect this to still be a problem once =
implementations mature. I wouldn&#39;t want to base our protocol choices ba=
sed on a bug in non-production-ready implementations.</div><div>=C2=A0</div=
><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border=
-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quot=
e"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 5:10 PM Da=
vid Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_bla=
nk">dschinazi.ietf@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"g=
mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204=
,204,204);padding-left:1ex"><div dir=3D"ltr">I&#39;d like us to take a step=
 back, I think we&#39;re conflating many different topics here, and it&#39;=
s making it impossible to reason about this (at least for someone running o=
n not enough sleep like I am this week).<div><br></div><div>Topic 1: the co=
mplexity of implementing=C2=A0Http3Transport=C2=A0as opposed to QuicTranspo=
rt=C2=A0on the client</div><div>=C2=A0 =C2=A0 From my perspective, all brow=
sers interested in WebTransport are implementing HTTP/3, so I don&#39;t see=
 much complexity there.</div><div>=C2=A0 =C2=A0 Please reply here if you kn=
ow of complexities I&#39;m not seeing</div><div><div><br></div><div>Topic 2=
: the complexity of implementing=C2=A0Http3Transport=C2=A0as opposed to Qui=
cTransport=C2=A0on the server</div></div><div>=C2=A0 =C2=A0 As far as I kno=
w, most server-side QUIC stacks also support HTTP/3, and for QuicTransport=
=C2=A0they already have DATAGRAM support so I think the delta is negligible=
.</div><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#=
39;m not seeing</div><div></div><div><br></div><div>Topic 3: the benefits o=
f pooling WebTransport</div><div>=C2=A0 =C2=A0 This allows saving round tri=
ps to get WebTransport up and running</div><div>=C2=A0 =C2=A0 This allows s=
haring congestion control state</div><div>=C2=A0 =C2=A0 This allows letting=
 the QUIC implementation prioritize DATAGRAMs vs HTTP requests instead of r=
elying on the kernel or routers which have less information</div><div>=C2=
=A0 =C2=A0 Overall, I think pooling is beneficial (though not an absolute m=
ust-have)</div><div>=C2=A0 =C2=A0 Please reply here if you know of benefits=
 I&#39;m not seeing<br></div><div><br></div><div>Topic 4: the difficulty of=
 pooling Http3Transport=C2=A0on the client</div><div>=C2=A0 =C2=A0 It appea=
rs that all browsers that are interested in WebTransport are implementing p=
ooling in their HTTP/3 stack so additionally pooling WebTransport should no=
t introduce more complexity</div><div>=C2=A0 =C2=A0 Please reply here if yo=
u know of complexities I&#39;m not seeing</div><div></div><div><div><br></d=
iv><div>Topic 5: the difficulty of pooling Http3Transport=C2=A0on the serve=
r</div></div><div>=C2=A0 =C2=A0 This one is trickier. If you have frontends=
 that know how to route HTTP=C2=A0requests to backends, DATAGRAM support is=
 going to be a whole new world.</div><div>=C2=A0 =C2=A0 However, and I thin=
k this is really important: implementing this on the server is OPTIONAL.</d=
iv><div>=C2=A0 =C2=A0 The server can easily use a different hostname (and d=
ifferent TLS certificates) for HTTP vs WebTransport and clients will not po=
ol the two together.</div><div>=C2=A0 =C2=A0 Once you use different domain =
names per WebTransport object, Http3Transport=C2=A0has the exact same pooli=
ng properties as QuicTransport.</div><div>=C2=A0 =C2=A0 Please reply here i=
f you know of complexities I&#39;m not seeing<br></div><div><br></div><div>=
What am I missing?</div><div><br></div><div>Thanks,</div><div>David</div><d=
iv><br></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D=
"gmail_attr">On Mon, Nov 16, 2020 at 4:45 PM Ian Swett &lt;<a href=3D"mailt=
o:ianswett@google.com" target=3D"_blank">ianswett@google.com</a>&gt; wrote:=
<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8=
ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr=
">I&#39;m <b>very</b> concerned about any functionality that <b>requires</b=
> pooling.=C2=A0 Pooling is a client-specific optimization and pooling poli=
cy is subject to change(within reason) at any time.=C2=A0 If applications=
=C2=A0are saying &quot;it&#39;d be cool if we could share congestion contro=
l and loss recovery state between H3 and WebTransport most of the time&quot=
;, then I can see there being real(albeit small) benefits, just like there =
would be for putting DataChannels and RTP into one QUIC connection for WebR=
TC.=C2=A0 If people are intending to rely on pooling so an HTTP(hopefully H=
3) request can trigger a WebTransport response, I think we&#39;re in a worl=
d of pain and over-optimization.<div><br></div><div>This is more obvious in=
 light of the fact that a WebTransport endpoint=C2=A0is likely not a generi=
c CDN endpoint, as has been clearly stated by Mark Nottingham.<br><div><br>=
</div><div>Bernard&#39;s comments above point to a tighter coupling between=
 HTTP/3 and WebTransport than I think is practical in production, unless I =
misunderstood(which I may have, it&#39;s been a long day).</div><div><br></=
div><div>All of this makes me think we should punt the HTTP based WebTransp=
ort options down the road a year or so and focus on QuicTransport=C2=A0init=
ially.=C2=A0 It&#39;s not to say we won&#39;t do them, but they&#39;re clea=
rly more complex than=C2=A0QuicTransport=C2=A0and it&#39;d be good to have =
real deployment experience prior to starting so we know what the requiremen=
ts are and where the dragons are lurking.=C2=A0 Also, the W3C should design=
 APIs that make it easy to detect failure to establish a QUIC-based=C2=A0We=
bTransport, and this ensures those are well exercised.=C2=A0 Maybe we DO re=
quire pooling under certain conditions and describe those, but there are li=
kely privacy concerns under some circumstances and I&#39;m not enough of an=
 expert to know what would be acceptable to all clients.</div><div><br></di=
v><div>Some=C2=A0people in the WG may think we have to release a TCP based =
WebTransport at the same time as a QUIC based one, but I don&#39;t think th=
at&#39;s true and even if we standardized them at the same time, it doesn&#=
39;t mean both will achieve wide deployment at the same time.=C2=A0 As I sa=
id at the mic, I don&#39;t see any reason YouTube would deploy a TCP based =
WebTransport given it will have to maintain an HTTP/1.1 option for basicall=
y forever and they&#39;ve spent a good bit of effort to make sure that work=
s as well as it can.=C2=A0 It&#39;s clear to me there are compelling use ca=
ses right now for QuicTransport, but=C2=A0the driving use cases for the fal=
lback are not clear to me.=C2=A0 Consistency is intellectually appealing, b=
ut doesn&#39;t drive deployments.</div></div><div><br></div><div>Ian</div><=
/div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">O=
n Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba &lt;<a href=3D"mailto:bernard.=
aboba@gmail.com" target=3D"_blank">bernard.aboba@gmail.com</a>&gt; wrote:<b=
r></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex=
;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">=
<div dir=3D"ltr"><div dir=3D"ltr">David said:=C2=A0<div><br></div><div>&quo=
t;Where does this come from? A lot of QUIC servers are implementing QUIC da=
tagrams, and once you have those the delta with h3 datagrams is negligible.=
 Additionally, multiple h3 server implementers=C2=A0have indicated they wan=
t to support WebTransport. It&#39;s starting to feel like the pushback on H=
TTP3Transport=C2=A0is purely based on a perception of complexity from folks=
 who haven&#39;t tried to implement it? If that&#39;s the case, then we sho=
uld get some implementation experience to confirm or debunk that theory.&qu=
ot;</div><div><br></div><div>[BA] The pooling use cases often involve an in=
teraction between an HTTP/3 request/response and WebTransport.=C2=A0 so the=
 HTTP/3 Request doesn&#39;t just elicit an HTTP/3 Response.=C2=A0 It also c=
auses something else to happen, something that isn&#39;t specified in the H=
TTP/3 protocol, such as eliciting a datagram flow or bi/unidirectional stre=
am from the server.=C2=A0 This is what is contemplated in several of the &q=
uot;Live Event&quot; use cases, where the HTTP/3 Request/Response would be =
requesting the desired Event. The major advantage over HLS is avoiding Head=
-of-Line blocking, reducing video freezes and stalls.=C2=A0 So developers u=
nderstand the value that support for datagrams and server-initiated streams=
 can provide - the question is whether they&#39;ll have all the interoperab=
le pieces in place to deploy it.=C2=A0 </div><div><br></div><div>Just becau=
se a generic HTTP/3 server supports QUIC and WebTransport, doesn&#39;t mean=
 that it will support these use cases.=C2=A0 I&#39;ve been asked whether be=
tter interoperability and wider ecosystem support could be achieved by exte=
nding HTTP/3 in a way more in keeping with the existing protocol design - s=
uch as by allowing an HTTP/3 Request to specify a resource to be returned i=
n a flow of datagrams.=C2=A0</div><div><br></div><div>The situation might b=
e more tenable if the node.js framework had HTTP/3 and QUIC modules on the =
horizon.<br></div></div></div></div><br><div class=3D"gmail_quote"><div dir=
=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 1:00 PM David Schinaz=
i &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_blank">dschina=
zi.ietf@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020=
 at 12:40 PM Bernard Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com" t=
arget=3D"_blank">bernard.aboba@gmail.com</a>&gt; wrote:<br></div><blockquot=
e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s=
olid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">Luke said:=C2=A0<d=
iv><br></div><div>&quot;<span style=3D"color:rgb(80,0,80)">My primary conce=
rn is that Http3Transport requires non-generic modifications to the HTTP/3 =
layer mostly to support connection pooling. I&#39;m worried that this will =
limit support for Http3Transport and complicates any HTTP/3 implementation =
that does support it.</span>&quot;</div><div><br></div><div>[BA] I have als=
o heard this concern from developers. The concerns primarily arise from the=
 pooling of HTTP/3 Request/Responses with WebTransport. This does enable so=
me interesting use cases, such as a Request/Response (e.g. gRPC) that can r=
esult in a server sending datagrams or initiating bi-directional or uni-dir=
ectional streams.=C2=A0 So there is perceived value, but the question is wh=
ether that value will be widely supported across the HTTP/3 ecosystem.=C2=
=A0</div><div><br></div><div>At this point, most generic HTTP/3 servers are=
 not expected to support HTTP/3 datagrams (not part of the HTTP/3 protocol)=
 or Http3Transport (perceived as a niche protocol), so that pooling would o=
nly be possible when using a framework.=C2=A0 node.js will not have=C2=A0QU=
IC support for 12-18 months (held up by OpenSSL) so even framework support =
is expected to be limited.</div></div></blockquote><div><br></div><div>Wher=
e does this come from? A lot of QUIC servers are implementing QUIC datagram=
s, and once you have those the delta with h3 datagrams is negligible. Addit=
ionally, multiple h3 server implementers=C2=A0have indicated they want to s=
upport WebTransport. It&#39;s starting to feel like the pushback on HTTP3Tr=
ansport=C2=A0is purely based on a perception of complexity from folks who h=
aven&#39;t tried to implement it? If that&#39;s the case, then we should ge=
t some implementation experience to confirm or debunk that theory.</div><di=
v>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px=
 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020=
 at 11:37 AM David Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com"=
 target=3D"_blank">dschinazi.ietf@gmail.com</a>&gt; wrote:<br></div><blockq=
uote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1p=
x solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr=
"><br></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_=
attr">On Mon, Nov 16, 2020 at 11:34 AM Luke Curley &lt;<a href=3D"mailto:ki=
xelated@gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br>=
</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;b=
order-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">We=
&#39;re on the same page that there&#39;s code in HTTP/3 that could be leve=
raged for QuicTransport in the form of the header parsing. I think there&#3=
9;s a path to merge QuicTransport and Http3Transport by leveraging HTTP/3 f=
or the handshake and QUIC for stream delivery.<div><br></div><div>My primar=
y concern is that Http3Transport requires non-generic modifications to the =
HTTP/3 layer mostly to support connection pooling. I&#39;m worried that thi=
s will limit support for Http3Transport and complicates any HTTP/3 implemen=
tation that does support it.</div></div></blockquote><div><br></div><div>Hi=
 Luke,</div><div><br></div><div>I&#39;m curious, could you elaborate on wha=
t these &quot;non-generic modifications to the HTTP/3 layer&quot; are pleas=
e?</div><div><br></div><div>Thanks,</div><div>David</div><div>=C2=A0</div><=
blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l=
eft:1px solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"=
><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 4:49 AM Luca=
s Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" target=3D"_blank=
">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"g=
mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204=
,204,204);padding-left:1ex"><div dir=3D"auto"><div>Hi Luke,</div><div dir=
=3D"auto"><br><div class=3D"gmail_quote" dir=3D"auto"><div dir=3D"ltr" clas=
s=3D"gmail_attr">On Mon, 16 Nov 2020, 12:26 Luke Curley, &lt;<a href=3D"mai=
lto:kixelated@gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrot=
e:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0=
.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"l=
tr"><div>Just to clarify, when I say &quot;QuicTransport is simpler&quot; I=
 really mean &quot;QuicTransport has greater interoperability&quot;. You ca=
n take any QUIC implementation (+ datagram extension) and add a thin layer =
to support QuicTransport. It&#39;s a nice layering of protocols and it&#39;=
s something that I want to see in general as QUIC replaces TCP.</div></div>=
</blockquote></div></div><div dir=3D"auto"><br></div><div dir=3D"auto">Than=
ks for the clarification. I appreciate the sentiment. But given the develop=
ment of QUIC its kind of surprising that people would find it easier to ide=
ntify an implementation that supports QUIC and datagram but does not suppor=
t HTTP/3.</div><div dir=3D"auto"><br></div><div dir=3D"auto">Thr situation =
for a more clean-room implementation is different, I agree. However, by the=
 time you&#39;ve done all the hard stuff with QUIC, a very focused HTTP/3 l=
ayer ends up quite thin too. You can ignore dynamic compression, server pus=
h and extensibility points.</div><div dir=3D"auto"><br></div><div dir=3D"au=
to">I also see the current design being the thin end of the wedge. The prop=
osal I linked talks about HTTP-like header parsing. So its &quot;just&quot;=
 a thin layer to do some parsing. Then folks will probably want some want t=
o tweak parameter, acontrol channel, a way to do graceful close, a sprinkle=
 of GREASE. To extrapolate forward, what would be the delta be between some=
 final product QuicTransport and HTTP/3. Too small a delta and we&#39;ve wa=
sted years of effort.</div><div dir=3D"auto"><br></div><div dir=3D"auto">Ch=
eers</div><div dir=3D"auto">Lucas</div><div dir=3D"auto"><br></div><div dir=
=3D"auto"><br></div><div dir=3D"auto"><div class=3D"gmail_quote" dir=3D"aut=
o"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord=
er-left:1px solid rgb(204,204,204);padding-left:1ex"><br><div class=3D"gmai=
l_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 3:16=
 AM Lucas Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" rel=3D"n=
oreferrer" target=3D"_blank">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br><=
/div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><di=
v>Hi folks,</div><div><br></div><div>To follow up on one thread of discussi=
on during IETF 109. To over simplify what we&#39;ve heard a few folks say, =
they prefer QuicTransport because it simpler and they don&#39;t need poolin=
g.</div><div><br></div><div>I&#39;d like to push more on this, what is the =
measurable complexity of HTTP/3 over QUIC plus a new application mapping th=
at needs to be defined? Let&#39;s isolate pooling as a variable and ignore =
it.</div><div><br></div><div>Victor mentioned his proposal for a unified he=
ader semantic across all transports, this is <a href=3D"https://github.com/=
ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files" rel=3D"noreferr=
er" target=3D"_blank">https://github.com/ietf-wg-webtrans/draft-ietf-webtra=
ns-overview/pull/4/files</a>. Taking a closer look at it, I have some conce=
rns that I added as comments.  HTTP has semantics for a reason. If QuicTran=
sport is going to start borrowing HTTP piecemeal, I really wonder how simpl=
e people might feel it is. I think it&#39;s important to avoid something th=
at looks like HTTP but behaves differently. Is it really much of a stretch =
to just do HTTP/3 but give it a different ALPN so that we avoid problems re=
lated to cross-protocol pooling?</div><div><br></div><div>Cheers,</div><div=
>Lucas<br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div></div>

--00000000000065649105b446c6ed--


From nobody Mon Nov 16 23:35:37 2020
Return-Path: <kixelated@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1B5BB3A115A for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 23:35:36 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 GdyYLlE9o4RF for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 23:35:32 -0800 (PST)
Received: from mail-ot1-x330.google.com (mail-ot1-x330.google.com [IPv6:2607:f8b0:4864:20::330]) (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 51E403A1152 for <webtransport@ietf.org>; Mon, 16 Nov 2020 23:35:32 -0800 (PST)
Received: by mail-ot1-x330.google.com with SMTP id f16so18495625otl.11 for <webtransport@ietf.org>; Mon, 16 Nov 2020 23:35:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=8g0rzUXEdXWFU6KV07J4zU6USvLqlpz0WBR5uqieJ+M=; b=PwX7ZnHA/Xn70P4O7i/Mc3PSaLTAri9ACqZQCXa+LKdTd0IRPfJCOd6mDYh+GUNRmk 1wIrhTEsbFPOMQSHWD0IvpUtskYCv6QP3mIUQxC5k1X/N7fCSuB/02+YO7up+hbS7K3Y YERfwUm63HRMYilZmPaeKeztKkBpup6RZHFOYWCSo60yKKOA0qKn/ilf1/jQJO+/B5pV SWJjJnVhIawx4JaXfVBy5Lsy+ySwvC7dZTC7/Mzz3vwY4LWlF3/kpNaBrB+LfTFG2kOr Yom12owYe3G0lhSe4yqnYI+OX+im+gsPkmuIbYnLfLunRTb+UCLfXzfVRTwb+3VxO/RS FCug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=8g0rzUXEdXWFU6KV07J4zU6USvLqlpz0WBR5uqieJ+M=; b=X0T2X4VrXg0UzqVIF2OKMsjcvvK9NzatX8HZW1ryl5+XJClLvji3k/jv6495pVCWU4 SuoEFfGxXeBbS+eBWTwUsDLIy8F5DYzTo+mzNvCzCsD3NyTc8zIXuIKyUZAcu6imM62L sFKoZqQOXynQz6aDMvOoRsuDb4yajfVy/06WMZMvf1u8vv8mNNXYOi32XmUAVjC9UXFC rrynB6uprFqhK23sT20GgcbV+w2aFfeM1ninLWXgWXaVFJnLYm1a9PYLr7WOt/JfvplE aO0/vlvL5WpaJekN/bcL9xZKMp1TvMUsHO2qhLBabWLZpBs093uzaiv/XlA9N2EvMKZv VWnQ==
X-Gm-Message-State: AOAM5312uHiYw9WoiBDwCgu8QIdljSVkwGCzddmmNSkYdZwQBQICmsqv QD19+P6gpM9kIGJ0xEylpSi6N/zDKaoRdS5MEDY=
X-Google-Smtp-Source: ABdhPJxXcKwJuHMnW5mFrVojK4hJQGPHi26Q+Bjx76pUetXl44S278GsfPT0FARKn0oKzbuR79bYCclxyG25mrGoCo8=
X-Received: by 2002:a05:6830:22da:: with SMTP id q26mr2250830otc.127.1605598531490;  Mon, 16 Nov 2020 23:35:31 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com> <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com> <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com> <CAOW+2dsVSTcvYsKB7XB7GJy6eo4sTr70LJcKWtoQ1KLhVKpmOA@mail.gmail.com> <CAKcm_gPUfBUVz8Kh-jbHeUDCOAfF6FsjLHYsF6aZDgbCkMUw8Q@mail.gmail.com> <CAPDSy+6TCOJwxDgS+tWyshDnMDrwGYSYVQMSw3rdgj_GtE2E5g@mail.gmail.com> <CAHVo=Zk51+BAZxY6+-iUaM9cqFApnsyAeeoJ4YmqqA-uR3ojJw@mail.gmail.com> <CAPDSy+76Z9UF4Mjey-R_Kpi7vWqzJ86K9kw-Z=2aPfcz=YCgEw@mail.gmail.com>
In-Reply-To: <CAPDSy+76Z9UF4Mjey-R_Kpi7vWqzJ86K9kw-Z=2aPfcz=YCgEw@mail.gmail.com>
From: Luke Curley <kixelated@gmail.com>
Date: Mon, 16 Nov 2020 23:35:21 -0800
Message-ID: <CAHVo=Z=bCVnS7RMYM-Sjz0S1MQ7T0TKNe4FQANAGhzsyGJKmXg@mail.gmail.com>
To: David Schinazi <dschinazi.ietf@gmail.com>
Cc: Ian Swett <ianswett@google.com>, Bernard Aboba <bernard.aboba@gmail.com>,  WebTransport <webtransport@ietf.org>, Lucas Pardue <lucaspardue.24.7@gmail.com>
Content-Type: multipart/alternative; boundary="0000000000001f165e05b4488a4e"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/zD5nM2M9APICjdohCEUny0XjlGI>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2020 07:35:36 -0000

--0000000000001f165e05b4488a4e
Content-Type: text/plain; charset="UTF-8"

Hey David, I gave a quick presentation on my use-case yesterday. We're
using HLS so all media delivery is currently HTTP-based and we would love
to use HTTP/3.

However, reducing latency requires a tighter feedback loop and some form of
push. The HTTP request/response model just complicates things, especially
when HTTP push is brought into the equation. QuicTransport is much simpler
and allows us to build something closer to RTMP on top. It also means that
we can use the same protocol for both distribution and contribution.

On Mon, Nov 16, 2020 at 9:29 PM David Schinazi <dschinazi.ietf@gmail.com>
wrote:

>
>
> On Mon, Nov 16, 2020 at 6:02 PM Luke Curley <kixelated@gmail.com> wrote:
>
>> I think that's a good starting summary David. Some things worth
>> mentioning:
>>
>> For 1 and 4, Twitch is using QuicTransport for both native applications
>> (ex. mobile, desktop, devices) and web applications. It's minor, but we
>> benefit from the ability to use any QUIC library (technically we don't
>> implement datagrams...) instead only those with HTTP/3 and Http3Transport
>> support. I think this context was missing in the previous discussions.
>>
>
> Can you clarify which implementations you were considering that support
> QUIC+DATAGRAM but not HTTP/3?
>
>
>> For 3, QuicTransport can support 0-RTT if we declare the path/origin
>> handshake to be idempotent
>> <https://github.com/vasilvv/webtransport/issues/16>... unless the new
>> connection is routed to a different host. Both pooled Http3Transport and a
>> new QuicTransport connection could take the same number of round trips.
>>
>
> 0-RTT state isn't saved across ALPNs, even if it's to the same host. So
> Http3Transport would get inline 0-RTT but QuicTransport would not get 0-RTT
> unless you've already performed a QuicTransport handshake in recent history.
>
>
>> For 4 and 5, I'm worried about flow control
>> <https://github.com/vasilvv/webtransport/issues/22>. tl;dr a
>> Http3Transport session could easily exhaust flow control limits for the
>> entire connection. This seems especially negative if pooling is performed
>> transparently (ex. a Http3Transport session may silently break HTTP/3 or
>> other sessions).
>>
>
> Unintentionally hitting the connection-level flow control limit is a
> serious implementation bug. I wouldn't expect this to still be a problem
> once implementations mature. I wouldn't want to base our protocol choices
> based on a bug in non-production-ready implementations.
>
>
>> On Mon, Nov 16, 2020 at 5:10 PM David Schinazi <dschinazi.ietf@gmail.com>
>> wrote:
>>
>>> I'd like us to take a step back, I think we're conflating many different
>>> topics here, and it's making it impossible to reason about this (at least
>>> for someone running on not enough sleep like I am this week).
>>>
>>> Topic 1: the complexity of implementing Http3Transport as opposed to
>>> QuicTransport on the client
>>>     From my perspective, all browsers interested in WebTransport are
>>> implementing HTTP/3, so I don't see much complexity there.
>>>     Please reply here if you know of complexities I'm not seeing
>>>
>>> Topic 2: the complexity of implementing Http3Transport as opposed to
>>> QuicTransport on the server
>>>     As far as I know, most server-side QUIC stacks also support HTTP/3,
>>> and for QuicTransport they already have DATAGRAM support so I think the
>>> delta is negligible.
>>>     Please reply here if you know of complexities I'm not seeing
>>>
>>> Topic 3: the benefits of pooling WebTransport
>>>     This allows saving round trips to get WebTransport up and running
>>>     This allows sharing congestion control state
>>>     This allows letting the QUIC implementation prioritize DATAGRAMs vs
>>> HTTP requests instead of relying on the kernel or routers which have less
>>> information
>>>     Overall, I think pooling is beneficial (though not an absolute
>>> must-have)
>>>     Please reply here if you know of benefits I'm not seeing
>>>
>>> Topic 4: the difficulty of pooling Http3Transport on the client
>>>     It appears that all browsers that are interested in WebTransport are
>>> implementing pooling in their HTTP/3 stack so additionally pooling
>>> WebTransport should not introduce more complexity
>>>     Please reply here if you know of complexities I'm not seeing
>>>
>>> Topic 5: the difficulty of pooling Http3Transport on the server
>>>     This one is trickier. If you have frontends that know how to route
>>> HTTP requests to backends, DATAGRAM support is going to be a whole new
>>> world.
>>>     However, and I think this is really important: implementing this on
>>> the server is OPTIONAL.
>>>     The server can easily use a different hostname (and different TLS
>>> certificates) for HTTP vs WebTransport and clients will not pool the two
>>> together.
>>>     Once you use different domain names per WebTransport object,
>>> Http3Transport has the exact same pooling properties as QuicTransport.
>>>     Please reply here if you know of complexities I'm not seeing
>>>
>>> What am I missing?
>>>
>>> Thanks,
>>> David
>>>
>>>
>>> On Mon, Nov 16, 2020 at 4:45 PM Ian Swett <ianswett@google.com> wrote:
>>>
>>>> I'm *very* concerned about any functionality that *requires* pooling.
>>>> Pooling is a client-specific optimization and pooling policy is subject to
>>>> change(within reason) at any time.  If applications are saying "it'd be
>>>> cool if we could share congestion control and loss recovery state between
>>>> H3 and WebTransport most of the time", then I can see there being
>>>> real(albeit small) benefits, just like there would be for putting
>>>> DataChannels and RTP into one QUIC connection for WebRTC.  If people are
>>>> intending to rely on pooling so an HTTP(hopefully H3) request can trigger a
>>>> WebTransport response, I think we're in a world of pain and
>>>> over-optimization.
>>>>
>>>> This is more obvious in light of the fact that a WebTransport
>>>> endpoint is likely not a generic CDN endpoint, as has been clearly stated
>>>> by Mark Nottingham.
>>>>
>>>> Bernard's comments above point to a tighter coupling between HTTP/3 and
>>>> WebTransport than I think is practical in production, unless I
>>>> misunderstood(which I may have, it's been a long day).
>>>>
>>>> All of this makes me think we should punt the HTTP based WebTransport
>>>> options down the road a year or so and focus on QuicTransport initially.
>>>> It's not to say we won't do them, but they're clearly more complex
>>>> than QuicTransport and it'd be good to have real deployment experience
>>>> prior to starting so we know what the requirements are and where the
>>>> dragons are lurking.  Also, the W3C should design APIs that make it easy to
>>>> detect failure to establish a QUIC-based WebTransport, and this ensures
>>>> those are well exercised.  Maybe we DO require pooling under certain
>>>> conditions and describe those, but there are likely privacy concerns under
>>>> some circumstances and I'm not enough of an expert to know what would be
>>>> acceptable to all clients.
>>>>
>>>> Some people in the WG may think we have to release a TCP based
>>>> WebTransport at the same time as a QUIC based one, but I don't think that's
>>>> true and even if we standardized them at the same time, it doesn't mean
>>>> both will achieve wide deployment at the same time.  As I said at the mic,
>>>> I don't see any reason YouTube would deploy a TCP based WebTransport given
>>>> it will have to maintain an HTTP/1.1 option for basically forever and
>>>> they've spent a good bit of effort to make sure that works as well as it
>>>> can.  It's clear to me there are compelling use cases right now for
>>>> QuicTransport, but the driving use cases for the fallback are not clear to
>>>> me.  Consistency is intellectually appealing, but doesn't drive deployments.
>>>>
>>>> Ian
>>>>
>>>> On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba <bernard.aboba@gmail.com>
>>>> wrote:
>>>>
>>>>> David said:
>>>>>
>>>>> "Where does this come from? A lot of QUIC servers are implementing
>>>>> QUIC datagrams, and once you have those the delta with h3 datagrams is
>>>>> negligible. Additionally, multiple h3 server implementers have indicated
>>>>> they want to support WebTransport. It's starting to feel like the pushback
>>>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>>>> who haven't tried to implement it? If that's the case, then we should get
>>>>> some implementation experience to confirm or debunk that theory."
>>>>>
>>>>> [BA] The pooling use cases often involve an interaction between an
>>>>> HTTP/3 request/response and WebTransport.  so the HTTP/3 Request doesn't
>>>>> just elicit an HTTP/3 Response.  It also causes something else to happen,
>>>>> something that isn't specified in the HTTP/3 protocol, such as eliciting a
>>>>> datagram flow or bi/unidirectional stream from the server.  This is what is
>>>>> contemplated in several of the "Live Event" use cases, where the HTTP/3
>>>>> Request/Response would be requesting the desired Event. The major advantage
>>>>> over HLS is avoiding Head-of-Line blocking, reducing video freezes and
>>>>> stalls.  So developers understand the value that support for datagrams and
>>>>> server-initiated streams can provide - the question is whether they'll have
>>>>> all the interoperable pieces in place to deploy it.
>>>>>
>>>>> Just because a generic HTTP/3 server supports QUIC and WebTransport,
>>>>> doesn't mean that it will support these use cases.  I've been asked whether
>>>>> better interoperability and wider ecosystem support could be achieved by
>>>>> extending HTTP/3 in a way more in keeping with the existing protocol design
>>>>> - such as by allowing an HTTP/3 Request to specify a resource to be
>>>>> returned in a flow of datagrams.
>>>>>
>>>>> The situation might be more tenable if the node.js framework had
>>>>> HTTP/3 and QUIC modules on the horizon.
>>>>>
>>>>> On Mon, Nov 16, 2020 at 1:00 PM David Schinazi <
>>>>> dschinazi.ietf@gmail.com> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba <
>>>>>> bernard.aboba@gmail.com> wrote:
>>>>>>
>>>>>>> Luke said:
>>>>>>>
>>>>>>> "My primary concern is that Http3Transport requires non-generic
>>>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>>>> HTTP/3 implementation that does support it."
>>>>>>>
>>>>>>> [BA] I have also heard this concern from developers. The concerns
>>>>>>> primarily arise from the pooling of HTTP/3 Request/Responses with
>>>>>>> WebTransport. This does enable some interesting use cases, such as a
>>>>>>> Request/Response (e.g. gRPC) that can result in a server sending datagrams
>>>>>>> or initiating bi-directional or uni-directional streams.  So there is
>>>>>>> perceived value, but the question is whether that value will be widely
>>>>>>> supported across the HTTP/3 ecosystem.
>>>>>>>
>>>>>>> At this point, most generic HTTP/3 servers are not expected to
>>>>>>> support HTTP/3 datagrams (not part of the HTTP/3 protocol) or
>>>>>>> Http3Transport (perceived as a niche protocol), so that pooling would only
>>>>>>> be possible when using a framework.  node.js will not have QUIC support for
>>>>>>> 12-18 months (held up by OpenSSL) so even framework support is expected to
>>>>>>> be limited.
>>>>>>>
>>>>>>
>>>>>> Where does this come from? A lot of QUIC servers are implementing
>>>>>> QUIC datagrams, and once you have those the delta with h3 datagrams is
>>>>>> negligible. Additionally, multiple h3 server implementers have indicated
>>>>>> they want to support WebTransport. It's starting to feel like the pushback
>>>>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>>>>> who haven't tried to implement it? If that's the case, then we should get
>>>>>> some implementation experience to confirm or debunk that theory.
>>>>>>
>>>>>>
>>>>>>> On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <
>>>>>>> dschinazi.ietf@gmail.com> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> We're on the same page that there's code in HTTP/3 that could be
>>>>>>>>> leveraged for QuicTransport in the form of the header parsing. I think
>>>>>>>>> there's a path to merge QuicTransport and Http3Transport by leveraging
>>>>>>>>> HTTP/3 for the handshake and QUIC for stream delivery.
>>>>>>>>>
>>>>>>>>> My primary concern is that Http3Transport requires non-generic
>>>>>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>>>>>> HTTP/3 implementation that does support it.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Hi Luke,
>>>>>>>>
>>>>>>>> I'm curious, could you elaborate on what these "non-generic
>>>>>>>> modifications to the HTTP/3 layer" are please?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> David
>>>>>>>>
>>>>>>>>
>>>>>>>>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <
>>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Luke,
>>>>>>>>>>
>>>>>>>>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Just to clarify, when I say "QuicTransport is simpler" I really
>>>>>>>>>>> mean "QuicTransport has greater interoperability". You can take any QUIC
>>>>>>>>>>> implementation (+ datagram extension) and add a thin layer to support
>>>>>>>>>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>>>>>>>>>> want to see in general as QUIC replaces TCP.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks for the clarification. I appreciate the sentiment. But
>>>>>>>>>> given the development of QUIC its kind of surprising that people would find
>>>>>>>>>> it easier to identify an implementation that supports QUIC and datagram but
>>>>>>>>>> does not support HTTP/3.
>>>>>>>>>>
>>>>>>>>>> Thr situation for a more clean-room implementation is different,
>>>>>>>>>> I agree. However, by the time you've done all the hard stuff with QUIC, a
>>>>>>>>>> very focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
>>>>>>>>>> compression, server push and extensibility points.
>>>>>>>>>>
>>>>>>>>>> I also see the current design being the thin end of the wedge.
>>>>>>>>>> The proposal I linked talks about HTTP-like header parsing. So its "just" a
>>>>>>>>>> thin layer to do some parsing. Then folks will probably want some want to
>>>>>>>>>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>>>>>>>>>> of GREASE. To extrapolate forward, what would be the delta be between some
>>>>>>>>>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>>>>>>>>>> years of effort.
>>>>>>>>>>
>>>>>>>>>> Cheers
>>>>>>>>>> Lucas
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi folks,
>>>>>>>>>>>>
>>>>>>>>>>>> To follow up on one thread of discussion during IETF 109. To
>>>>>>>>>>>> over simplify what we've heard a few folks say, they prefer QuicTransport
>>>>>>>>>>>> because it simpler and they don't need pooling.
>>>>>>>>>>>>
>>>>>>>>>>>> I'd like to push more on this, what is the measurable
>>>>>>>>>>>> complexity of HTTP/3 over QUIC plus a new application mapping that needs to
>>>>>>>>>>>> be defined? Let's isolate pooling as a variable and ignore it.
>>>>>>>>>>>>
>>>>>>>>>>>> Victor mentioned his proposal for a unified header semantic
>>>>>>>>>>>> across all transports, this is
>>>>>>>>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>>>>>>>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>>>>>>>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>>>>>>>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>>>>>>>>>> is. I think it's important to avoid something that looks like HTTP but
>>>>>>>>>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>>>>>>>>>> give it a different ALPN so that we avoid problems related to
>>>>>>>>>>>> cross-protocol pooling?
>>>>>>>>>>>>
>>>>>>>>>>>> Cheers,
>>>>>>>>>>>> Lucas
>>>>>>>>>>>> --
>>>>>>>>>>>> Webtransport mailing list
>>>>>>>>>>>> Webtransport@ietf.org
>>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>> Webtransport mailing list
>>>>>>>>> Webtransport@ietf.org
>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>
>>>>>>>> --
>>>>>>>> Webtransport mailing list
>>>>>>>> Webtransport@ietf.org
>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>
>>>>>>> --
>>>>> Webtransport mailing list
>>>>> Webtransport@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>
>>>>

--0000000000001f165e05b4488a4e
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hey David, I gave a quick presentation on my use-case yest=
erday. We&#39;re using HLS so=C2=A0all media delivery is currently HTTP-bas=
ed and we would love to use HTTP/3.=C2=A0<div><br></div><div>However, reduc=
ing latency requires a tighter feedback loop and some form of push. The HTT=
P request/response model just complicates things,=C2=A0especially when HTTP=
 push is brought into the equation. QuicTransport is much simpler and allow=
s us to build something closer to RTMP on top. It also means that we can us=
e the same protocol for both distribution and contribution.</div></div><br>=
<div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, No=
v 16, 2020 at 9:29 PM David Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@g=
mail.com">dschinazi.ietf@gmail.com</a>&gt; wrote:<br></div><blockquote clas=
s=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid r=
gb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></d=
iv><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On =
Mon, Nov 16, 2020 at 6:02 PM Luke Curley &lt;<a href=3D"mailto:kixelated@gm=
ail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div><blo=
ckquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left=
:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">I think that=
&#39;s a good starting summary David. Some things worth mentioning:<div><br=
></div><div>For 1 and 4, Twitch is using QuicTransport for both native appl=
ications (ex. mobile, desktop, devices) and web applications. It&#39;s mino=
r, but we benefit from the ability to use any QUIC library (technically we =
don&#39;t implement datagrams...) instead only those with HTTP/3 and Http3T=
ransport support. I think this context was missing in the previous discussi=
ons.</div></div></blockquote><div><br></div><div>Can you clarify which impl=
ementations you were considering that support QUIC+DATAGRAM but not HTTP/3?=
</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0p=
x 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><d=
iv dir=3D"ltr"><div>For 3, QuicTransport can support 0-RTT if we <a href=3D=
"https://github.com/vasilvv/webtransport/issues/16" target=3D"_blank">decla=
re the path/origin handshake to be=C2=A0idempotent</a>... unless the new co=
nnection is routed to a different host. Both pooled Http3Transport and a ne=
w QuicTransport connection could take the same number of round trips.</div>=
</div></blockquote><div><br></div><div>0-RTT state isn&#39;t saved across A=
LPNs, even if it&#39;s to the same host. So Http3Transport=C2=A0would get i=
nline 0-RTT but QuicTransport would not get 0-RTT unless you&#39;ve already=
 performed a QuicTransport handshake in recent history.</div><div>=C2=A0</d=
iv><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord=
er-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>=
For 4 and 5, <a href=3D"https://github.com/vasilvv/webtransport/issues/22" =
target=3D"_blank">I&#39;m worried about flow control</a>. tl;dr a Http3Tran=
sport session could easily exhaust flow control limits for the entire conne=
ction. This seems especially negative if pooling is performed transparently=
 (ex. a Http3Transport session may silently break HTTP/3 or other sessions)=
.</div></div></blockquote><div><br></div><div>Unintentionally hitting the c=
onnection-level=C2=A0flow control limit is a serious implementation bug. I =
wouldn&#39;t expect this to still be a problem once implementations mature.=
 I wouldn&#39;t want to base our protocol choices based on a bug in non-pro=
duction-ready implementations.</div><div>=C2=A0</div><blockquote class=3D"g=
mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204=
,204,204);padding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" cla=
ss=3D"gmail_attr">On Mon, Nov 16, 2020 at 5:10 PM David Schinazi &lt;<a hre=
f=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmai=
l.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex"><div dir=3D"ltr">I&#39;d like us to take a step back, I think we&#39;r=
e conflating many different topics here, and it&#39;s making it impossible =
to reason about this (at least for someone running on not enough sleep like=
 I am this week).<div><br></div><div>Topic 1: the complexity of implementin=
g=C2=A0Http3Transport=C2=A0as opposed to QuicTransport=C2=A0on the client</=
div><div>=C2=A0 =C2=A0 From my perspective, all browsers interested in WebT=
ransport are implementing HTTP/3, so I don&#39;t see much complexity there.=
</div><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#3=
9;m not seeing</div><div><div><br></div><div>Topic 2: the complexity of imp=
lementing=C2=A0Http3Transport=C2=A0as opposed to QuicTransport=C2=A0on the =
server</div></div><div>=C2=A0 =C2=A0 As far as I know, most server-side QUI=
C stacks also support HTTP/3, and for QuicTransport=C2=A0they already have =
DATAGRAM support so I think the delta is negligible.</div><div>=C2=A0 =C2=
=A0 Please reply here if you know of complexities I&#39;m not seeing</div><=
div></div><div><br></div><div>Topic 3: the benefits of pooling WebTransport=
</div><div>=C2=A0 =C2=A0 This allows saving round trips to get WebTransport=
 up and running</div><div>=C2=A0 =C2=A0 This allows sharing congestion cont=
rol state</div><div>=C2=A0 =C2=A0 This allows letting the QUIC implementati=
on prioritize DATAGRAMs vs HTTP requests instead of relying on the kernel o=
r routers which have less information</div><div>=C2=A0 =C2=A0 Overall, I th=
ink pooling is beneficial (though not an absolute must-have)</div><div>=C2=
=A0 =C2=A0 Please reply here if you know of benefits I&#39;m not seeing<br>=
</div><div><br></div><div>Topic 4: the difficulty of pooling Http3Transport=
=C2=A0on the client</div><div>=C2=A0 =C2=A0 It appears that all browsers th=
at are interested in WebTransport are implementing pooling in their HTTP/3 =
stack so additionally pooling WebTransport should not introduce more comple=
xity</div><div>=C2=A0 =C2=A0 Please reply here if you know of complexities =
I&#39;m not seeing</div><div></div><div><div><br></div><div>Topic 5: the di=
fficulty of pooling Http3Transport=C2=A0on the server</div></div><div>=C2=
=A0 =C2=A0 This one is trickier. If you have frontends that know how to rou=
te HTTP=C2=A0requests to backends, DATAGRAM support is going to be a whole =
new world.</div><div>=C2=A0 =C2=A0 However, and I think this is really impo=
rtant: implementing this on the server is OPTIONAL.</div><div>=C2=A0 =C2=A0=
 The server can easily use a different hostname (and different TLS certific=
ates) for HTTP vs WebTransport and clients will not pool the two together.<=
/div><div>=C2=A0 =C2=A0 Once you use different domain names per WebTranspor=
t object, Http3Transport=C2=A0has the exact same pooling properties as Quic=
Transport.</div><div>=C2=A0 =C2=A0 Please reply here if you know of complex=
ities I&#39;m not seeing<br></div><div><br></div><div>What am I missing?</d=
iv><div><br></div><div>Thanks,</div><div>David</div><div><br></div></div><b=
r><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, =
Nov 16, 2020 at 4:45 PM Ian Swett &lt;<a href=3D"mailto:ianswett@google.com=
" target=3D"_blank">ianswett@google.com</a>&gt; wrote:<br></div><blockquote=
 class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px so=
lid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">I&#39;m <b>very</b>=
 concerned about any functionality that <b>requires</b> pooling.=C2=A0 Pool=
ing is a client-specific optimization and pooling policy is subject to chan=
ge(within reason) at any time.=C2=A0 If applications=C2=A0are saying &quot;=
it&#39;d be cool if we could share congestion control and loss recovery sta=
te between H3 and WebTransport most of the time&quot;, then I can see there=
 being real(albeit small) benefits, just like there would be for putting Da=
taChannels and RTP into one QUIC connection for WebRTC.=C2=A0 If people are=
 intending to rely on pooling so an HTTP(hopefully H3) request can trigger =
a WebTransport response, I think we&#39;re in a world of pain and over-opti=
mization.<div><br></div><div>This is more obvious in light of the fact that=
 a WebTransport endpoint=C2=A0is likely not a generic CDN endpoint, as has =
been clearly stated by Mark Nottingham.<br><div><br></div><div>Bernard&#39;=
s comments above point to a tighter coupling between HTTP/3 and WebTranspor=
t than I think is practical in production, unless I misunderstood(which I m=
ay have, it&#39;s been a long day).</div><div><br></div><div>All of this ma=
kes me think we should punt the HTTP based WebTransport options down the ro=
ad a year or so and focus on QuicTransport=C2=A0initially.=C2=A0 It&#39;s n=
ot to say we won&#39;t do them, but they&#39;re clearly more complex than=
=C2=A0QuicTransport=C2=A0and it&#39;d be good to have real deployment exper=
ience prior to starting so we know what the requirements are and where the =
dragons are lurking.=C2=A0 Also, the W3C should design APIs that make it ea=
sy to detect failure to establish a QUIC-based=C2=A0WebTransport, and this =
ensures those are well exercised.=C2=A0 Maybe we DO require pooling under c=
ertain conditions and describe those, but there are likely privacy concerns=
 under some circumstances and I&#39;m not enough of an expert to know what =
would be acceptable to all clients.</div><div><br></div><div>Some=C2=A0peop=
le in the WG may think we have to release a TCP based WebTransport at the s=
ame time as a QUIC based one, but I don&#39;t think that&#39;s true and eve=
n if we standardized them at the same time, it doesn&#39;t mean both will a=
chieve wide deployment at the same time.=C2=A0 As I said at the mic, I don&=
#39;t see any reason YouTube would deploy a TCP based WebTransport given it=
 will have to maintain an HTTP/1.1 option for basically forever and they&#3=
9;ve spent a good bit of effort to make sure that works as well as it can.=
=C2=A0 It&#39;s clear to me there are compelling use cases right now for Qu=
icTransport, but=C2=A0the driving use cases for the fallback are not clear =
to me.=C2=A0 Consistency is intellectually appealing, but doesn&#39;t drive=
 deployments.</div></div><div><br></div><div>Ian</div></div><br><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020=
 at 6:36 PM Bernard Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com" ta=
rget=3D"_blank">bernard.aboba@gmail.com</a>&gt; wrote:<br></div><blockquote=
 class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px so=
lid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><d=
iv dir=3D"ltr">David said:=C2=A0<div><br></div><div>&quot;Where does this c=
ome from? A lot of QUIC servers are implementing QUIC datagrams, and once y=
ou have those the delta with h3 datagrams is negligible. Additionally, mult=
iple h3 server implementers=C2=A0have indicated they want to support WebTra=
nsport. It&#39;s starting to feel like the pushback on HTTP3Transport=C2=A0=
is purely based on a perception of complexity from folks who haven&#39;t tr=
ied to implement it? If that&#39;s the case, then we should get some implem=
entation experience to confirm or debunk that theory.&quot;</div><div><br><=
/div><div>[BA] The pooling use cases often involve an interaction between a=
n HTTP/3 request/response and WebTransport.=C2=A0 so the HTTP/3 Request doe=
sn&#39;t just elicit an HTTP/3 Response.=C2=A0 It also causes something els=
e to happen, something that isn&#39;t specified in the HTTP/3 protocol, suc=
h as eliciting a datagram flow or bi/unidirectional stream from the server.=
=C2=A0 This is what is contemplated in several of the &quot;Live Event&quot=
; use cases, where the HTTP/3 Request/Response would be requesting the desi=
red Event. The major advantage over HLS is avoiding Head-of-Line blocking, =
reducing video freezes and stalls.=C2=A0 So developers understand the value=
 that support for datagrams and server-initiated streams can provide - the =
question is whether they&#39;ll have all the interoperable pieces in place =
to deploy it.=C2=A0 </div><div><br></div><div>Just because a generic HTTP/3=
 server supports QUIC and WebTransport, doesn&#39;t mean that it will suppo=
rt these use cases.=C2=A0 I&#39;ve been asked whether better interoperabili=
ty and wider ecosystem support could be achieved by extending HTTP/3 in a w=
ay more in keeping with the existing protocol design - such as by allowing =
an HTTP/3 Request to specify a resource to be returned in a flow of datagra=
ms.=C2=A0</div><div><br></div><div>The situation might be more tenable if t=
he node.js framework had HTTP/3 and QUIC modules on the horizon.<br></div><=
/div></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"g=
mail_attr">On Mon, Nov 16, 2020 at 1:00 PM David Schinazi &lt;<a href=3D"ma=
ilto:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmail.com</=
a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0p=
x 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><d=
iv dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote"><d=
iv dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 12:40 PM Bernar=
d Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com" target=3D"_blank">be=
rnard.aboba@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_qu=
ote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,20=
4);padding-left:1ex"><div dir=3D"ltr">Luke said:=C2=A0<div><br></div><div>&=
quot;<span style=3D"color:rgb(80,0,80)">My primary concern is that Http3Tra=
nsport requires non-generic modifications to the HTTP/3 layer mostly to sup=
port connection pooling. I&#39;m worried that this will limit support for H=
ttp3Transport and complicates any HTTP/3 implementation that does support i=
t.</span>&quot;</div><div><br></div><div>[BA] I have also heard this concer=
n from developers. The concerns primarily arise from the pooling of HTTP/3 =
Request/Responses with WebTransport. This does enable some interesting use =
cases, such as a Request/Response (e.g. gRPC) that can result in a server s=
ending datagrams or initiating bi-directional or uni-directional streams.=
=C2=A0 So there is perceived value, but the question is whether that value =
will be widely supported across the HTTP/3 ecosystem.=C2=A0</div><div><br><=
/div><div>At this point, most generic HTTP/3 servers are not expected to su=
pport HTTP/3 datagrams (not part of the HTTP/3 protocol) or Http3Transport =
(perceived as a niche protocol), so that pooling would only be possible whe=
n using a framework.=C2=A0 node.js will not have=C2=A0QUIC support for 12-1=
8 months (held up by OpenSSL) so even framework support is expected to be l=
imited.</div></div></blockquote><div><br></div><div>Where does this come fr=
om? A lot of QUIC servers are implementing QUIC datagrams, and once you hav=
e those the delta with h3 datagrams is negligible. Additionally, multiple h=
3 server implementers=C2=A0have indicated they want to support WebTransport=
. It&#39;s starting to feel like the pushback on HTTP3Transport=C2=A0is pur=
ely based on a perception of complexity from folks who haven&#39;t tried to=
 implement it? If that&#39;s the case, then we should get some implementati=
on experience to confirm or debunk that theory.</div><div>=C2=A0</div><bloc=
kquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:=
1px solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"><di=
v dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:37 AM David S=
chinazi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_blank">d=
schinazi.ietf@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_=
quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,=
204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div=
 class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16=
, 2020 at 11:34 AM Luke Curley &lt;<a href=3D"mailto:kixelated@gmail.com" t=
arget=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid=
 rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">We&#39;re on the same =
page that there&#39;s code in HTTP/3 that could be leveraged for QuicTransp=
ort in the form of the header parsing. I think there&#39;s a path to merge =
QuicTransport and Http3Transport by leveraging HTTP/3 for the handshake and=
 QUIC for stream delivery.<div><br></div><div>My primary concern is that Ht=
tp3Transport requires non-generic modifications to the HTTP/3 layer mostly =
to support connection pooling. I&#39;m worried that this will limit support=
 for Http3Transport and complicates any HTTP/3 implementation that does sup=
port it.</div></div></blockquote><div><br></div><div>Hi Luke,</div><div><br=
></div><div>I&#39;m curious, could you elaborate on what these &quot;non-ge=
neric modifications to the HTTP/3 layer&quot; are please?</div><div><br></d=
iv><div>Thanks,</div><div>David</div><div>=C2=A0</div><blockquote class=3D"=
gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20=
4,204,204);padding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" cl=
ass=3D"gmail_attr">On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue &lt;<a href=
=3D"mailto:lucaspardue.24.7@gmail.com" target=3D"_blank">lucaspardue.24.7@g=
mail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D=
"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le=
ft:1ex"><div dir=3D"auto"><div>Hi Luke,</div><div dir=3D"auto"><br><div cla=
ss=3D"gmail_quote" dir=3D"auto"><div dir=3D"ltr" class=3D"gmail_attr">On Mo=
n, 16 Nov 2020, 12:26 Luke Curley, &lt;<a href=3D"mailto:kixelated@gmail.co=
m" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquot=
e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s=
olid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Just to clari=
fy, when I say &quot;QuicTransport is simpler&quot; I really mean &quot;Qui=
cTransport has greater interoperability&quot;. You can take any QUIC implem=
entation (+ datagram extension) and add a thin layer to support QuicTranspo=
rt. It&#39;s a nice layering of protocols and it&#39;s something that I wan=
t to see in general as QUIC replaces TCP.</div></div></blockquote></div></d=
iv><div dir=3D"auto"><br></div><div dir=3D"auto">Thanks for the clarificati=
on. I appreciate the sentiment. But given the development of QUIC its kind =
of surprising that people would find it easier to identify an implementatio=
n that supports QUIC and datagram but does not support HTTP/3.</div><div di=
r=3D"auto"><br></div><div dir=3D"auto">Thr situation for a more clean-room =
implementation is different, I agree. However, by the time you&#39;ve done =
all the hard stuff with QUIC, a very focused HTTP/3 layer ends up quite thi=
n too. You can ignore dynamic compression, server push and extensibility po=
ints.</div><div dir=3D"auto"><br></div><div dir=3D"auto">I also see the cur=
rent design being the thin end of the wedge. The proposal I linked talks ab=
out HTTP-like header parsing. So its &quot;just&quot; a thin layer to do so=
me parsing. Then folks will probably want some want to tweak parameter, aco=
ntrol channel, a way to do graceful close, a sprinkle of GREASE. To extrapo=
late forward, what would be the delta be between some final product QuicTra=
nsport and HTTP/3. Too small a delta and we&#39;ve wasted years of effort.<=
/div><div dir=3D"auto"><br></div><div dir=3D"auto">Cheers</div><div dir=3D"=
auto">Lucas</div><div dir=3D"auto"><br></div><div dir=3D"auto"><br></div><d=
iv dir=3D"auto"><div class=3D"gmail_quote" dir=3D"auto"><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex"><br><div class=3D"gmail_quote"><div dir=3D=
"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue &lt=
;<a href=3D"mailto:lucaspardue.24.7@gmail.com" rel=3D"noreferrer" target=3D=
"_blank">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Hi folks,</div><di=
v><br></div><div>To follow up on one thread of discussion during IETF 109. =
To over simplify what we&#39;ve heard a few folks say, they prefer QuicTran=
sport because it simpler and they don&#39;t need pooling.</div><div><br></d=
iv><div>I&#39;d like to push more on this, what is the measurable complexit=
y of HTTP/3 over QUIC plus a new application mapping that needs to be defin=
ed? Let&#39;s isolate pooling as a variable and ignore it.</div><div><br></=
div><div>Victor mentioned his proposal for a unified header semantic across=
 all transports, this is <a href=3D"https://github.com/ietf-wg-webtrans/dra=
ft-ietf-webtrans-overview/pull/4/files" rel=3D"noreferrer" target=3D"_blank=
">https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/f=
iles</a>. Taking a closer look at it, I have some concerns that I added as =
comments.  HTTP has semantics for a reason. If QuicTransport is going to st=
art borrowing HTTP piecemeal, I really wonder how simple people might feel =
it is. I think it&#39;s important to avoid something that looks like HTTP b=
ut behaves differently. Is it really much of a stretch to just do HTTP/3 bu=
t give it a different ALPN so that we avoid problems related to cross-proto=
col pooling?</div><div><br></div><div>Cheers,</div><div>Lucas<br></div></di=
v>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>

--0000000000001f165e05b4488a4e--


From nobody Mon Nov 16 23:40:47 2020
Return-Path: <dschinazi.ietf@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D8EBF3A1162 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 23:40:45 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 Pc7nzgul9WP9 for <webtransport@ietfa.amsl.com>; Mon, 16 Nov 2020 23:40:42 -0800 (PST)
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) (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 5B04A3A1164 for <webtransport@ietf.org>; Mon, 16 Nov 2020 23:40:42 -0800 (PST)
Received: by mail-lj1-x22a.google.com with SMTP id s9so23109424ljo.11 for <webtransport@ietf.org>; Mon, 16 Nov 2020 23:40:42 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=f6mu/WvsS1mg7PyayDC9xAS9W3DfWaXGqDaTH8Md9MI=; b=uO4ZZnqmBoRTEssnxQfc0nIPEjQrNIOZeSlPvOiFnYKCCeim0+Cetd3t9uE3kVvsDJ KLf/l2L524XO2dy375x1EIAylNB2QjzMKN7mf718GC6WlsSKpNgaFo6Exnv/9ka4KwtF Ev3JPYUkkmCzqdqTvxTY5g3qaACjMbyxBy9Cr/Un57QUV2yURF1k4VO2z5D4uExdLZej QEGMXIX4hMUFF0coIBPpHvaNu4TuwPEOA/FyXuTmvIj2dYmn+3+cO2IAAE8qKGlQ1n/K qbrrvgPbgldJePuirjt3PlBad/z3A3t/Z99MEtcabrUChIiiPp4Tzy+golw6+y1+CoDQ jjUg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=f6mu/WvsS1mg7PyayDC9xAS9W3DfWaXGqDaTH8Md9MI=; b=tbikUAeMBE3ttx1lpmyV2MTIzh26GGFEbCefwUbNaElc8Ea7hNjo+GJ7Fi6OJeCvZJ o9fX4NpoQOG299l+/MVId3Bv2mm17O3GmfP3Nsl/lrywMcff+bFZ0YqnIIGFtnaBFZtL xTYoWjBsIqce1rhhtL4sdNJ3vzEhQRnb2+/ELM1L+HhCU1j4mZVbr09f7HHMIzJj42HV +tD7pqiQlylVzVXNHnTBK+BkgyQnXm4u5s0ey900Ghk0O+q+J4Od606dpwrmelwkxBYz D6Ko+1BP4mLkleVOWw1fPv/HKW4qa3deKBMteVsOeHcQIYHX1mc9YoXs0Ga6x9LvRgYO 77pg==
X-Gm-Message-State: AOAM533446IwuFDfkj021EcQNv1nJzywQG8sV+35r0gPvv3vsPe0QbTK fzVvsUqOP9CeRSSfepljVKlCUlAZFzOLgNmOlCI=
X-Google-Smtp-Source: ABdhPJzSzasWlZvJHONf5wK6WBUM/ZDxJimhWtZvBl2+sfe7ERw2B0DKaTacBXFLBi11FeiGDOEJLia4M8ZIYreg568=
X-Received: by 2002:a2e:b529:: with SMTP id z9mr1230604ljm.307.1605598840322;  Mon, 16 Nov 2020 23:40:40 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com> <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com> <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com> <CAOW+2dsVSTcvYsKB7XB7GJy6eo4sTr70LJcKWtoQ1KLhVKpmOA@mail.gmail.com> <CAKcm_gPUfBUVz8Kh-jbHeUDCOAfF6FsjLHYsF6aZDgbCkMUw8Q@mail.gmail.com> <CAPDSy+6TCOJwxDgS+tWyshDnMDrwGYSYVQMSw3rdgj_GtE2E5g@mail.gmail.com> <CAHVo=Zk51+BAZxY6+-iUaM9cqFApnsyAeeoJ4YmqqA-uR3ojJw@mail.gmail.com> <CAPDSy+76Z9UF4Mjey-R_Kpi7vWqzJ86K9kw-Z=2aPfcz=YCgEw@mail.gmail.com> <CAHVo=Z=bCVnS7RMYM-Sjz0S1MQ7T0TKNe4FQANAGhzsyGJKmXg@mail.gmail.com>
In-Reply-To: <CAHVo=Z=bCVnS7RMYM-Sjz0S1MQ7T0TKNe4FQANAGhzsyGJKmXg@mail.gmail.com>
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Mon, 16 Nov 2020 23:40:28 -0800
Message-ID: <CAPDSy+7KHsBqY-VGraWw5kG_DHU+3X4Ex0oMsJ2HzNa7HqJO2g@mail.gmail.com>
To: Luke Curley <kixelated@gmail.com>
Cc: Ian Swett <ianswett@google.com>, Bernard Aboba <bernard.aboba@gmail.com>,  WebTransport <webtransport@ietf.org>, Lucas Pardue <lucaspardue.24.7@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000877db105b4489cc3"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/0T54i9_46M3Gsn0MKXYlwdVL1C0>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2020 07:40:46 -0000

--000000000000877db105b4489cc3
Content-Type: text/plain; charset="UTF-8"

On Mon, Nov 16, 2020 at 11:35 PM Luke Curley <kixelated@gmail.com> wrote:

> Hey David, I gave a quick presentation on my use-case yesterday. We're
> using HLS so all media delivery is currently HTTP-based and we would love
> to use HTTP/3.
>

And it was a great presentation! Your use case makes sense to me.


> However, reducing latency requires a tighter feedback loop and some form
> of push. The HTTP request/response model just complicates
> things, especially when HTTP push is brought into the equation.
> QuicTransport is much simpler and allows us to build something closer to
> RTMP on top.
>

I don't understand this, can you clarify? What does the HTTP
request/response model have to do with the Http3Transport vs QuicTransport
question?


> It also means that we can use the same protocol for both distribution and
> contribution.
>

I apologize, but I don't understand this either. What same protocol?

On Mon, Nov 16, 2020 at 9:29 PM David Schinazi <dschinazi.ietf@gmail.com>
> wrote:
>
>>
>>
>> On Mon, Nov 16, 2020 at 6:02 PM Luke Curley <kixelated@gmail.com> wrote:
>>
>>> I think that's a good starting summary David. Some things worth
>>> mentioning:
>>>
>>> For 1 and 4, Twitch is using QuicTransport for both native applications
>>> (ex. mobile, desktop, devices) and web applications. It's minor, but we
>>> benefit from the ability to use any QUIC library (technically we don't
>>> implement datagrams...) instead only those with HTTP/3 and Http3Transport
>>> support. I think this context was missing in the previous discussions.
>>>
>>
>> Can you clarify which implementations you were considering that support
>> QUIC+DATAGRAM but not HTTP/3?
>>
>>
>>> For 3, QuicTransport can support 0-RTT if we declare the path/origin
>>> handshake to be idempotent
>>> <https://github.com/vasilvv/webtransport/issues/16>... unless the new
>>> connection is routed to a different host. Both pooled Http3Transport and a
>>> new QuicTransport connection could take the same number of round trips.
>>>
>>
>> 0-RTT state isn't saved across ALPNs, even if it's to the same host. So
>> Http3Transport would get inline 0-RTT but QuicTransport would not get 0-RTT
>> unless you've already performed a QuicTransport handshake in recent history.
>>
>>
>>> For 4 and 5, I'm worried about flow control
>>> <https://github.com/vasilvv/webtransport/issues/22>. tl;dr a
>>> Http3Transport session could easily exhaust flow control limits for the
>>> entire connection. This seems especially negative if pooling is performed
>>> transparently (ex. a Http3Transport session may silently break HTTP/3 or
>>> other sessions).
>>>
>>
>> Unintentionally hitting the connection-level flow control limit is a
>> serious implementation bug. I wouldn't expect this to still be a problem
>> once implementations mature. I wouldn't want to base our protocol choices
>> based on a bug in non-production-ready implementations.
>>
>>
>>> On Mon, Nov 16, 2020 at 5:10 PM David Schinazi <dschinazi.ietf@gmail.com>
>>> wrote:
>>>
>>>> I'd like us to take a step back, I think we're conflating many
>>>> different topics here, and it's making it impossible to reason about this
>>>> (at least for someone running on not enough sleep like I am this week).
>>>>
>>>> Topic 1: the complexity of implementing Http3Transport as opposed to
>>>> QuicTransport on the client
>>>>     From my perspective, all browsers interested in WebTransport are
>>>> implementing HTTP/3, so I don't see much complexity there.
>>>>     Please reply here if you know of complexities I'm not seeing
>>>>
>>>> Topic 2: the complexity of implementing Http3Transport as opposed to
>>>> QuicTransport on the server
>>>>     As far as I know, most server-side QUIC stacks also support HTTP/3,
>>>> and for QuicTransport they already have DATAGRAM support so I think the
>>>> delta is negligible.
>>>>     Please reply here if you know of complexities I'm not seeing
>>>>
>>>> Topic 3: the benefits of pooling WebTransport
>>>>     This allows saving round trips to get WebTransport up and running
>>>>     This allows sharing congestion control state
>>>>     This allows letting the QUIC implementation prioritize DATAGRAMs vs
>>>> HTTP requests instead of relying on the kernel or routers which have less
>>>> information
>>>>     Overall, I think pooling is beneficial (though not an absolute
>>>> must-have)
>>>>     Please reply here if you know of benefits I'm not seeing
>>>>
>>>> Topic 4: the difficulty of pooling Http3Transport on the client
>>>>     It appears that all browsers that are interested in WebTransport
>>>> are implementing pooling in their HTTP/3 stack so additionally pooling
>>>> WebTransport should not introduce more complexity
>>>>     Please reply here if you know of complexities I'm not seeing
>>>>
>>>> Topic 5: the difficulty of pooling Http3Transport on the server
>>>>     This one is trickier. If you have frontends that know how to route
>>>> HTTP requests to backends, DATAGRAM support is going to be a whole new
>>>> world.
>>>>     However, and I think this is really important: implementing this on
>>>> the server is OPTIONAL.
>>>>     The server can easily use a different hostname (and different TLS
>>>> certificates) for HTTP vs WebTransport and clients will not pool the two
>>>> together.
>>>>     Once you use different domain names per WebTransport object,
>>>> Http3Transport has the exact same pooling properties as QuicTransport.
>>>>     Please reply here if you know of complexities I'm not seeing
>>>>
>>>> What am I missing?
>>>>
>>>> Thanks,
>>>> David
>>>>
>>>>
>>>> On Mon, Nov 16, 2020 at 4:45 PM Ian Swett <ianswett@google.com> wrote:
>>>>
>>>>> I'm *very* concerned about any functionality that *requires*
>>>>> pooling.  Pooling is a client-specific optimization and pooling policy is
>>>>> subject to change(within reason) at any time.  If applications are saying
>>>>> "it'd be cool if we could share congestion control and loss recovery state
>>>>> between H3 and WebTransport most of the time", then I can see there being
>>>>> real(albeit small) benefits, just like there would be for putting
>>>>> DataChannels and RTP into one QUIC connection for WebRTC.  If people are
>>>>> intending to rely on pooling so an HTTP(hopefully H3) request can trigger a
>>>>> WebTransport response, I think we're in a world of pain and
>>>>> over-optimization.
>>>>>
>>>>> This is more obvious in light of the fact that a WebTransport
>>>>> endpoint is likely not a generic CDN endpoint, as has been clearly stated
>>>>> by Mark Nottingham.
>>>>>
>>>>> Bernard's comments above point to a tighter coupling between HTTP/3
>>>>> and WebTransport than I think is practical in production, unless I
>>>>> misunderstood(which I may have, it's been a long day).
>>>>>
>>>>> All of this makes me think we should punt the HTTP based WebTransport
>>>>> options down the road a year or so and focus on QuicTransport initially.
>>>>> It's not to say we won't do them, but they're clearly more complex
>>>>> than QuicTransport and it'd be good to have real deployment experience
>>>>> prior to starting so we know what the requirements are and where the
>>>>> dragons are lurking.  Also, the W3C should design APIs that make it easy to
>>>>> detect failure to establish a QUIC-based WebTransport, and this ensures
>>>>> those are well exercised.  Maybe we DO require pooling under certain
>>>>> conditions and describe those, but there are likely privacy concerns under
>>>>> some circumstances and I'm not enough of an expert to know what would be
>>>>> acceptable to all clients.
>>>>>
>>>>> Some people in the WG may think we have to release a TCP based
>>>>> WebTransport at the same time as a QUIC based one, but I don't think that's
>>>>> true and even if we standardized them at the same time, it doesn't mean
>>>>> both will achieve wide deployment at the same time.  As I said at the mic,
>>>>> I don't see any reason YouTube would deploy a TCP based WebTransport given
>>>>> it will have to maintain an HTTP/1.1 option for basically forever and
>>>>> they've spent a good bit of effort to make sure that works as well as it
>>>>> can.  It's clear to me there are compelling use cases right now for
>>>>> QuicTransport, but the driving use cases for the fallback are not clear to
>>>>> me.  Consistency is intellectually appealing, but doesn't drive deployments.
>>>>>
>>>>> Ian
>>>>>
>>>>> On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba <bernard.aboba@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> David said:
>>>>>>
>>>>>> "Where does this come from? A lot of QUIC servers are implementing
>>>>>> QUIC datagrams, and once you have those the delta with h3 datagrams is
>>>>>> negligible. Additionally, multiple h3 server implementers have indicated
>>>>>> they want to support WebTransport. It's starting to feel like the pushback
>>>>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>>>>> who haven't tried to implement it? If that's the case, then we should get
>>>>>> some implementation experience to confirm or debunk that theory."
>>>>>>
>>>>>> [BA] The pooling use cases often involve an interaction between an
>>>>>> HTTP/3 request/response and WebTransport.  so the HTTP/3 Request doesn't
>>>>>> just elicit an HTTP/3 Response.  It also causes something else to happen,
>>>>>> something that isn't specified in the HTTP/3 protocol, such as eliciting a
>>>>>> datagram flow or bi/unidirectional stream from the server.  This is what is
>>>>>> contemplated in several of the "Live Event" use cases, where the HTTP/3
>>>>>> Request/Response would be requesting the desired Event. The major advantage
>>>>>> over HLS is avoiding Head-of-Line blocking, reducing video freezes and
>>>>>> stalls.  So developers understand the value that support for datagrams and
>>>>>> server-initiated streams can provide - the question is whether they'll have
>>>>>> all the interoperable pieces in place to deploy it.
>>>>>>
>>>>>> Just because a generic HTTP/3 server supports QUIC and WebTransport,
>>>>>> doesn't mean that it will support these use cases.  I've been asked whether
>>>>>> better interoperability and wider ecosystem support could be achieved by
>>>>>> extending HTTP/3 in a way more in keeping with the existing protocol design
>>>>>> - such as by allowing an HTTP/3 Request to specify a resource to be
>>>>>> returned in a flow of datagrams.
>>>>>>
>>>>>> The situation might be more tenable if the node.js framework had
>>>>>> HTTP/3 and QUIC modules on the horizon.
>>>>>>
>>>>>> On Mon, Nov 16, 2020 at 1:00 PM David Schinazi <
>>>>>> dschinazi.ietf@gmail.com> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba <
>>>>>>> bernard.aboba@gmail.com> wrote:
>>>>>>>
>>>>>>>> Luke said:
>>>>>>>>
>>>>>>>> "My primary concern is that Http3Transport requires non-generic
>>>>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>>>>> HTTP/3 implementation that does support it."
>>>>>>>>
>>>>>>>> [BA] I have also heard this concern from developers. The concerns
>>>>>>>> primarily arise from the pooling of HTTP/3 Request/Responses with
>>>>>>>> WebTransport. This does enable some interesting use cases, such as a
>>>>>>>> Request/Response (e.g. gRPC) that can result in a server sending datagrams
>>>>>>>> or initiating bi-directional or uni-directional streams.  So there is
>>>>>>>> perceived value, but the question is whether that value will be widely
>>>>>>>> supported across the HTTP/3 ecosystem.
>>>>>>>>
>>>>>>>> At this point, most generic HTTP/3 servers are not expected to
>>>>>>>> support HTTP/3 datagrams (not part of the HTTP/3 protocol) or
>>>>>>>> Http3Transport (perceived as a niche protocol), so that pooling would only
>>>>>>>> be possible when using a framework.  node.js will not have QUIC support for
>>>>>>>> 12-18 months (held up by OpenSSL) so even framework support is expected to
>>>>>>>> be limited.
>>>>>>>>
>>>>>>>
>>>>>>> Where does this come from? A lot of QUIC servers are implementing
>>>>>>> QUIC datagrams, and once you have those the delta with h3 datagrams is
>>>>>>> negligible. Additionally, multiple h3 server implementers have indicated
>>>>>>> they want to support WebTransport. It's starting to feel like the pushback
>>>>>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>>>>>> who haven't tried to implement it? If that's the case, then we should get
>>>>>>> some implementation experience to confirm or debunk that theory.
>>>>>>>
>>>>>>>
>>>>>>>> On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <
>>>>>>>> dschinazi.ietf@gmail.com> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> We're on the same page that there's code in HTTP/3 that could be
>>>>>>>>>> leveraged for QuicTransport in the form of the header parsing. I think
>>>>>>>>>> there's a path to merge QuicTransport and Http3Transport by leveraging
>>>>>>>>>> HTTP/3 for the handshake and QUIC for stream delivery.
>>>>>>>>>>
>>>>>>>>>> My primary concern is that Http3Transport requires non-generic
>>>>>>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>>>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>>>>>>> HTTP/3 implementation that does support it.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Hi Luke,
>>>>>>>>>
>>>>>>>>> I'm curious, could you elaborate on what these "non-generic
>>>>>>>>> modifications to the HTTP/3 layer" are please?
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> David
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <
>>>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Luke,
>>>>>>>>>>>
>>>>>>>>>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Just to clarify, when I say "QuicTransport is simpler" I really
>>>>>>>>>>>> mean "QuicTransport has greater interoperability". You can take any QUIC
>>>>>>>>>>>> implementation (+ datagram extension) and add a thin layer to support
>>>>>>>>>>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>>>>>>>>>>> want to see in general as QUIC replaces TCP.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Thanks for the clarification. I appreciate the sentiment. But
>>>>>>>>>>> given the development of QUIC its kind of surprising that people would find
>>>>>>>>>>> it easier to identify an implementation that supports QUIC and datagram but
>>>>>>>>>>> does not support HTTP/3.
>>>>>>>>>>>
>>>>>>>>>>> Thr situation for a more clean-room implementation is different,
>>>>>>>>>>> I agree. However, by the time you've done all the hard stuff with QUIC, a
>>>>>>>>>>> very focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
>>>>>>>>>>> compression, server push and extensibility points.
>>>>>>>>>>>
>>>>>>>>>>> I also see the current design being the thin end of the wedge.
>>>>>>>>>>> The proposal I linked talks about HTTP-like header parsing. So its "just" a
>>>>>>>>>>> thin layer to do some parsing. Then folks will probably want some want to
>>>>>>>>>>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>>>>>>>>>>> of GREASE. To extrapolate forward, what would be the delta be between some
>>>>>>>>>>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>>>>>>>>>>> years of effort.
>>>>>>>>>>>
>>>>>>>>>>> Cheers
>>>>>>>>>>> Lucas
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>>>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi folks,
>>>>>>>>>>>>>
>>>>>>>>>>>>> To follow up on one thread of discussion during IETF 109. To
>>>>>>>>>>>>> over simplify what we've heard a few folks say, they prefer QuicTransport
>>>>>>>>>>>>> because it simpler and they don't need pooling.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I'd like to push more on this, what is the measurable
>>>>>>>>>>>>> complexity of HTTP/3 over QUIC plus a new application mapping that needs to
>>>>>>>>>>>>> be defined? Let's isolate pooling as a variable and ignore it.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Victor mentioned his proposal for a unified header semantic
>>>>>>>>>>>>> across all transports, this is
>>>>>>>>>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>>>>>>>>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>>>>>>>>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>>>>>>>>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>>>>>>>>>>> is. I think it's important to avoid something that looks like HTTP but
>>>>>>>>>>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>>>>>>>>>>> give it a different ALPN so that we avoid problems related to
>>>>>>>>>>>>> cross-protocol pooling?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Cheers,
>>>>>>>>>>>>> Lucas
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Webtransport mailing list
>>>>>>>>>>>>> Webtransport@ietf.org
>>>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>> Webtransport mailing list
>>>>>>>>>> Webtransport@ietf.org
>>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Webtransport mailing list
>>>>>>>>> Webtransport@ietf.org
>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>
>>>>>>>> --
>>>>>> Webtransport mailing list
>>>>>> Webtransport@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>
>>>>>

--000000000000877db105b4489cc3
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><div class=3D"gmail_quote"><div=
 dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:35 PM Luke Cur=
ley &lt;<a href=3D"mailto:kixelated@gmail.com">kixelated@gmail.com</a>&gt; =
wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0=
px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=
=3D"ltr">Hey David, I gave a quick presentation on my use-case yesterday. W=
e&#39;re using HLS so=C2=A0all media delivery is currently HTTP-based and w=
e would love to use HTTP/3.=C2=A0</div></blockquote><div><br></div><div>And=
 it was a great presentation! Your use case makes sense to me.</div><div>=
=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0=
.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"l=
tr"><div>However, reducing latency requires a tighter feedback loop and som=
e form of push. The HTTP request/response model just complicates things,=C2=
=A0especially when HTTP push is brought into the equation. QuicTransport is=
 much simpler and allows us to build something closer to RTMP on top.</div>=
</div></blockquote><div><br></div><div>I don&#39;t understand this, can you=
 clarify? What does the HTTP request/response model have to do with the Htt=
p3Transport vs QuicTransport question?<br></div><div>=C2=A0</div><blockquot=
e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s=
olid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>It also means=
 that we can use the same protocol for both distribution and contribution.<=
/div></div></blockquote><div><br></div><div></div><div>I apologize, but I d=
on&#39;t understand this either. What same protocol?</div><div><br></div><b=
lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le=
ft:1px solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 9:29 PM David=
 Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_blank"=
>dschinazi.ietf@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmai=
l_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,20=
4,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><d=
iv class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov =
16, 2020 at 6:02 PM Luke Curley &lt;<a href=3D"mailto:kixelated@gmail.com" =
target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquote c=
lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px soli=
d rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">I think that&#39;s a =
good starting summary David. Some things worth mentioning:<div><br></div><d=
iv>For 1 and 4, Twitch is using QuicTransport for both native applications =
(ex. mobile, desktop, devices) and web applications. It&#39;s minor, but we=
 benefit from the ability to use any QUIC library (technically we don&#39;t=
 implement datagrams...) instead only those with HTTP/3 and Http3Transport =
support. I think this context was missing in the previous discussions.</div=
></div></blockquote><div><br></div><div>Can you clarify which implementatio=
ns you were considering that support QUIC+DATAGRAM but not HTTP/3?</div><di=
v>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px=
 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D=
"ltr"><div>For 3, QuicTransport can support 0-RTT if we <a href=3D"https://=
github.com/vasilvv/webtransport/issues/16" target=3D"_blank">declare the pa=
th/origin handshake to be=C2=A0idempotent</a>... unless the new connection =
is routed to a different host. Both pooled Http3Transport and a new QuicTra=
nsport connection could take the same number of round trips.</div></div></b=
lockquote><div><br></div><div>0-RTT state isn&#39;t saved across ALPNs, eve=
n if it&#39;s to the same host. So Http3Transport=C2=A0would get inline 0-R=
TT but QuicTransport would not get 0-RTT unless you&#39;ve already performe=
d a QuicTransport handshake in recent history.</div><div>=C2=A0</div><block=
quote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1=
px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>For 4 and=
 5, <a href=3D"https://github.com/vasilvv/webtransport/issues/22" target=3D=
"_blank">I&#39;m worried about flow control</a>. tl;dr a Http3Transport ses=
sion could easily exhaust flow control limits for the entire connection. Th=
is seems especially negative if pooling is performed transparently (ex. a H=
ttp3Transport session may silently break HTTP/3 or other sessions).</div></=
div></blockquote><div><br></div><div>Unintentionally hitting the connection=
-level=C2=A0flow control limit is a serious implementation bug. I wouldn&#3=
9;t expect this to still be a problem once implementations mature. I wouldn=
&#39;t want to base our protocol choices based on a bug in non-production-r=
eady implementations.</div><div>=C2=A0</div><blockquote class=3D"gmail_quot=
e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)=
;padding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gma=
il_attr">On Mon, Nov 16, 2020 at 5:10 PM David Schinazi &lt;<a href=3D"mail=
to:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmail.com</a>=
&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div=
 dir=3D"ltr">I&#39;d like us to take a step back, I think we&#39;re conflat=
ing many different topics here, and it&#39;s making it impossible to reason=
 about this (at least for someone running on not enough sleep like I am thi=
s week).<div><br></div><div>Topic 1: the complexity of implementing=C2=A0Ht=
tp3Transport=C2=A0as opposed to QuicTransport=C2=A0on the client</div><div>=
=C2=A0 =C2=A0 From my perspective, all browsers interested in WebTransport =
are implementing HTTP/3, so I don&#39;t see much complexity there.</div><di=
v>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#39;m not s=
eeing</div><div><div><br></div><div>Topic 2: the complexity of implementing=
=C2=A0Http3Transport=C2=A0as opposed to QuicTransport=C2=A0on the server</d=
iv></div><div>=C2=A0 =C2=A0 As far as I know, most server-side QUIC stacks =
also support HTTP/3, and for QuicTransport=C2=A0they already have DATAGRAM =
support so I think the delta is negligible.</div><div>=C2=A0 =C2=A0 Please =
reply here if you know of complexities I&#39;m not seeing</div><div></div><=
div><br></div><div>Topic 3: the benefits of pooling WebTransport</div><div>=
=C2=A0 =C2=A0 This allows saving round trips to get WebTransport up and run=
ning</div><div>=C2=A0 =C2=A0 This allows sharing congestion control state</=
div><div>=C2=A0 =C2=A0 This allows letting the QUIC implementation prioriti=
ze DATAGRAMs vs HTTP requests instead of relying on the kernel or routers w=
hich have less information</div><div>=C2=A0 =C2=A0 Overall, I think pooling=
 is beneficial (though not an absolute must-have)</div><div>=C2=A0 =C2=A0 P=
lease reply here if you know of benefits I&#39;m not seeing<br></div><div><=
br></div><div>Topic 4: the difficulty of pooling Http3Transport=C2=A0on the=
 client</div><div>=C2=A0 =C2=A0 It appears that all browsers that are inter=
ested in WebTransport are implementing pooling in their HTTP/3 stack so add=
itionally pooling WebTransport should not introduce more complexity</div><d=
iv>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#39;m not =
seeing</div><div></div><div><div><br></div><div>Topic 5: the difficulty of =
pooling Http3Transport=C2=A0on the server</div></div><div>=C2=A0 =C2=A0 Thi=
s one is trickier. If you have frontends that know how to route HTTP=C2=A0r=
equests to backends, DATAGRAM support is going to be a whole new world.</di=
v><div>=C2=A0 =C2=A0 However, and I think this is really important: impleme=
nting this on the server is OPTIONAL.</div><div>=C2=A0 =C2=A0 The server ca=
n easily use a different hostname (and different TLS certificates) for HTTP=
 vs WebTransport and clients will not pool the two together.</div><div>=C2=
=A0 =C2=A0 Once you use different domain names per WebTransport object, Htt=
p3Transport=C2=A0has the exact same pooling properties as QuicTransport.</d=
iv><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#39;m=
 not seeing<br></div><div><br></div><div>What am I missing?</div><div><br><=
/div><div>Thanks,</div><div>David</div><div><br></div></div><br><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020=
 at 4:45 PM Ian Swett &lt;<a href=3D"mailto:ianswett@google.com" target=3D"=
_blank">ianswett@google.com</a>&gt; wrote:<br></div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,=
204,204);padding-left:1ex"><div dir=3D"ltr">I&#39;m <b>very</b> concerned a=
bout any functionality that <b>requires</b> pooling.=C2=A0 Pooling is a cli=
ent-specific optimization and pooling policy is subject to change(within re=
ason) at any time.=C2=A0 If applications=C2=A0are saying &quot;it&#39;d be =
cool if we could share congestion control and loss recovery state between H=
3 and WebTransport most of the time&quot;, then I can see there being real(=
albeit small) benefits, just like there would be for putting DataChannels a=
nd RTP into one QUIC connection for WebRTC.=C2=A0 If people are intending t=
o rely on pooling so an HTTP(hopefully H3) request can trigger a WebTranspo=
rt response, I think we&#39;re in a world of pain and over-optimization.<di=
v><br></div><div>This is more obvious in light of the fact that a WebTransp=
ort endpoint=C2=A0is likely not a generic CDN endpoint, as has been clearly=
 stated by Mark Nottingham.<br><div><br></div><div>Bernard&#39;s comments a=
bove point to a tighter coupling between HTTP/3 and WebTransport than I thi=
nk is practical in production, unless I misunderstood(which I may have, it&=
#39;s been a long day).</div><div><br></div><div>All of this makes me think=
 we should punt the HTTP based WebTransport options down the road a year or=
 so and focus on QuicTransport=C2=A0initially.=C2=A0 It&#39;s not to say we=
 won&#39;t do them, but they&#39;re clearly more complex than=C2=A0QuicTran=
sport=C2=A0and it&#39;d be good to have real deployment experience prior to=
 starting so we know what the requirements are and where the dragons are lu=
rking.=C2=A0 Also, the W3C should design APIs that make it easy to detect f=
ailure to establish a QUIC-based=C2=A0WebTransport, and this ensures those =
are well exercised.=C2=A0 Maybe we DO require pooling under certain conditi=
ons and describe those, but there are likely privacy concerns under some ci=
rcumstances and I&#39;m not enough of an expert to know what would be accep=
table to all clients.</div><div><br></div><div>Some=C2=A0people in the WG m=
ay think we have to release a TCP based WebTransport at the same time as a =
QUIC based one, but I don&#39;t think that&#39;s true and even if we standa=
rdized them at the same time, it doesn&#39;t mean both will achieve wide de=
ployment at the same time.=C2=A0 As I said at the mic, I don&#39;t see any =
reason YouTube would deploy a TCP based WebTransport given it will have to =
maintain an HTTP/1.1 option for basically forever and they&#39;ve spent a g=
ood bit of effort to make sure that works as well as it can.=C2=A0 It&#39;s=
 clear to me there are compelling use cases right now for QuicTransport, bu=
t=C2=A0the driving use cases for the fallback are not clear to me.=C2=A0 Co=
nsistency is intellectually appealing, but doesn&#39;t drive deployments.</=
div></div><div><br></div><div>Ian</div></div><br><div class=3D"gmail_quote"=
><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 6:36 PM Bern=
ard Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com" target=3D"_blank">=
bernard.aboba@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_=
quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,=
204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">D=
avid said:=C2=A0<div><br></div><div>&quot;Where does this come from? A lot =
of QUIC servers are implementing QUIC datagrams, and once you have those th=
e delta with h3 datagrams is negligible. Additionally, multiple h3 server i=
mplementers=C2=A0have indicated they want to support WebTransport. It&#39;s=
 starting to feel like the pushback on HTTP3Transport=C2=A0is purely based =
on a perception of complexity from folks who haven&#39;t tried to implement=
 it? If that&#39;s the case, then we should get some implementation experie=
nce to confirm or debunk that theory.&quot;</div><div><br></div><div>[BA] T=
he pooling use cases often involve an interaction between an HTTP/3 request=
/response and WebTransport.=C2=A0 so the HTTP/3 Request doesn&#39;t just el=
icit an HTTP/3 Response.=C2=A0 It also causes something else to happen, som=
ething that isn&#39;t specified in the HTTP/3 protocol, such as eliciting a=
 datagram flow or bi/unidirectional stream from the server.=C2=A0 This is w=
hat is contemplated in several of the &quot;Live Event&quot; use cases, whe=
re the HTTP/3 Request/Response would be requesting the desired Event. The m=
ajor advantage over HLS is avoiding Head-of-Line blocking, reducing video f=
reezes and stalls.=C2=A0 So developers understand the value that support fo=
r datagrams and server-initiated streams can provide - the question is whet=
her they&#39;ll have all the interoperable pieces in place to deploy it.=C2=
=A0 </div><div><br></div><div>Just because a generic HTTP/3 server supports=
 QUIC and WebTransport, doesn&#39;t mean that it will support these use cas=
es.=C2=A0 I&#39;ve been asked whether better interoperability and wider eco=
system support could be achieved by extending HTTP/3 in a way more in keepi=
ng with the existing protocol design - such as by allowing an HTTP/3 Reques=
t to specify a resource to be returned in a flow of datagrams.=C2=A0</div><=
div><br></div><div>The situation might be more tenable if the node.js frame=
work had HTTP/3 and QUIC modules on the horizon.<br></div></div></div></div=
><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mo=
n, Nov 16, 2020 at 1:00 PM David Schinazi &lt;<a href=3D"mailto:dschinazi.i=
etf@gmail.com" target=3D"_blank">dschinazi.ietf@gmail.com</a>&gt; wrote:<br=
></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;=
border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><=
div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" c=
lass=3D"gmail_attr">On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba &lt;<a h=
ref=3D"mailto:bernard.aboba@gmail.com" target=3D"_blank">bernard.aboba@gmai=
l.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex"><div dir=3D"ltr">Luke said:=C2=A0<div><br></div><div>&quot;<span style=
=3D"color:rgb(80,0,80)">My primary concern is that Http3Transport requires =
non-generic modifications to the HTTP/3 layer mostly to support connection =
pooling. I&#39;m worried that this will limit support for Http3Transport an=
d complicates any HTTP/3 implementation that does support it.</span>&quot;<=
/div><div><br></div><div>[BA] I have also heard this concern from developer=
s. The concerns primarily arise from the pooling of HTTP/3 Request/Response=
s with WebTransport. This does enable some interesting use cases, such as a=
 Request/Response (e.g. gRPC) that can result in a server sending datagrams=
 or initiating bi-directional or uni-directional streams.=C2=A0 So there is=
 perceived value, but the question is whether that value will be widely sup=
ported across the HTTP/3 ecosystem.=C2=A0</div><div><br></div><div>At this =
point, most generic HTTP/3 servers are not expected to support HTTP/3 datag=
rams (not part of the HTTP/3 protocol) or Http3Transport (perceived as a ni=
che protocol), so that pooling would only be possible when using a framewor=
k.=C2=A0 node.js will not have=C2=A0QUIC support for 12-18 months (held up =
by OpenSSL) so even framework support is expected to be limited.</div></div=
></blockquote><div><br></div><div>Where does this come from? A lot of QUIC =
servers are implementing QUIC datagrams, and once you have those the delta =
with h3 datagrams is negligible. Additionally, multiple h3 server implement=
ers=C2=A0have indicated they want to support WebTransport. It&#39;s startin=
g to feel like the pushback on HTTP3Transport=C2=A0is purely based on a per=
ception of complexity from folks who haven&#39;t tried to implement it? If =
that&#39;s the case, then we should get some implementation experience to c=
onfirm or debunk that theory.</div><div>=C2=A0</div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,=
204,204);padding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" clas=
s=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:37 AM David Schinazi &lt;<a hre=
f=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmai=
l.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_qu=
ote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:34 AM=
 Luke Curley &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D"_blank">k=
ixelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote=
" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);=
padding-left:1ex"><div dir=3D"ltr">We&#39;re on the same page that there&#3=
9;s code in HTTP/3 that could be leveraged for QuicTransport in the form of=
 the header parsing. I think there&#39;s a path to merge QuicTransport and =
Http3Transport by leveraging HTTP/3 for the handshake and QUIC for stream d=
elivery.<div><br></div><div>My primary concern is that Http3Transport requi=
res non-generic modifications to the HTTP/3 layer mostly to support connect=
ion pooling. I&#39;m worried that this will limit support for Http3Transpor=
t and complicates any HTTP/3 implementation that does support it.</div></di=
v></blockquote><div><br></div><div>Hi Luke,</div><div><br></div><div>I&#39;=
m curious, could you elaborate on what these &quot;non-generic modification=
s to the HTTP/3 layer&quot; are please?</div><div><br></div><div>Thanks,</d=
iv><div>David</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr"=
>On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue &lt;<a href=3D"mailto:lucaspa=
rdue.24.7@gmail.com" target=3D"_blank">lucaspardue.24.7@gmail.com</a>&gt; w=
rote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p=
x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=
=3D"auto"><div>Hi Luke,</div><div dir=3D"auto"><br><div class=3D"gmail_quot=
e" dir=3D"auto"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, 16 Nov 2020, =
12:26 Luke Curley, &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D"_bl=
ank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex"><div dir=3D"ltr"><div>Just to clarify, when I say &=
quot;QuicTransport is simpler&quot; I really mean &quot;QuicTransport has g=
reater interoperability&quot;. You can take any QUIC implementation (+ data=
gram extension) and add a thin layer to support QuicTransport. It&#39;s a n=
ice layering of protocols and it&#39;s something that I want to see in gene=
ral as QUIC replaces TCP.</div></div></blockquote></div></div><div dir=3D"a=
uto"><br></div><div dir=3D"auto">Thanks for the clarification. I appreciate=
 the sentiment. But given the development of QUIC its kind of surprising th=
at people would find it easier to identify an implementation that supports =
QUIC and datagram but does not support HTTP/3.</div><div dir=3D"auto"><br><=
/div><div dir=3D"auto">Thr situation for a more clean-room implementation i=
s different, I agree. However, by the time you&#39;ve done all the hard stu=
ff with QUIC, a very focused HTTP/3 layer ends up quite thin too. You can i=
gnore dynamic compression, server push and extensibility points.</div><div =
dir=3D"auto"><br></div><div dir=3D"auto">I also see the current design bein=
g the thin end of the wedge. The proposal I linked talks about HTTP-like he=
ader parsing. So its &quot;just&quot; a thin layer to do some parsing. Then=
 folks will probably want some want to tweak parameter, acontrol channel, a=
 way to do graceful close, a sprinkle of GREASE. To extrapolate forward, wh=
at would be the delta be between some final product QuicTransport and HTTP/=
3. Too small a delta and we&#39;ve wasted years of effort.</div><div dir=3D=
"auto"><br></div><div dir=3D"auto">Cheers</div><div dir=3D"auto">Lucas</div=
><div dir=3D"auto"><br></div><div dir=3D"auto"><br></div><div dir=3D"auto">=
<div class=3D"gmail_quote" dir=3D"auto"><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad=
ding-left:1ex"><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gma=
il_attr">On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue &lt;<a href=3D"mailto=
:lucaspardue.24.7@gmail.com" rel=3D"noreferrer" target=3D"_blank">lucaspard=
ue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex"><div dir=3D"ltr"><div>Hi folks,</div><div><br></div><div>T=
o follow up on one thread of discussion during IETF 109. To over simplify w=
hat we&#39;ve heard a few folks say, they prefer QuicTransport because it s=
impler and they don&#39;t need pooling.</div><div><br></div><div>I&#39;d li=
ke to push more on this, what is the measurable complexity of HTTP/3 over Q=
UIC plus a new application mapping that needs to be defined? Let&#39;s isol=
ate pooling as a variable and ignore it.</div><div><br></div><div>Victor me=
ntioned his proposal for a unified header semantic across all transports, t=
his is <a href=3D"https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-o=
verview/pull/4/files" rel=3D"noreferrer" target=3D"_blank">https://github.c=
om/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files</a>. Taking a=
 closer look at it, I have some concerns that I added as comments.  HTTP ha=
s semantics for a reason. If QuicTransport is going to start borrowing HTTP=
 piecemeal, I really wonder how simple people might feel it is. I think it&=
#39;s important to avoid something that looks like HTTP but behaves differe=
ntly. Is it really much of a stretch to just do HTTP/3 but give it a differ=
ent ALPN so that we avoid problems related to cross-protocol pooling?</div>=
<div><br></div><div>Cheers,</div><div>Lucas<br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
</blockquote></div></div>

--000000000000877db105b4489cc3--


From nobody Tue Nov 17 00:39:55 2020
Return-Path: <kixelated@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 984403A0985 for <webtransport@ietfa.amsl.com>; Tue, 17 Nov 2020 00:39:54 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 JTtaFufCYH-g for <webtransport@ietfa.amsl.com>; Tue, 17 Nov 2020 00:39:51 -0800 (PST)
Received: from mail-oo1-xc29.google.com (mail-oo1-xc29.google.com [IPv6:2607:f8b0:4864:20::c29]) (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 E12073A0982 for <webtransport@ietf.org>; Tue, 17 Nov 2020 00:39:50 -0800 (PST)
Received: by mail-oo1-xc29.google.com with SMTP id q28so4564879oof.1 for <webtransport@ietf.org>; Tue, 17 Nov 2020 00:39:50 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Fwv37+QubMaCUucH0N5JZo9Ov2g7fA/euZvz337PHNs=; b=KxQTLCsbN4zFvEnhUjPTtah75suefvtimkdvyW4YlnloKCKqSoSAJVLi3eDAWTOFqW OwpvWJWYF+GXcievz1cLPYD1/RpC7XAt4Upz3jJPSgVakHhOXgL2EbkRs9foxTHJ0fdt svPWjnzGaYrjoXuRvVzwd6i1ZL7mcRX3PjPqHFpjUj7WNYEHU6blZKg3OVi+3CJMietJ jsD7zwgG5uRP/6Zpc8TCSQvxZZfaJGzXB8xobxHh9Hja/DVQckRUZTDgBBXL6gEiErVI 6jhNfhjdf/V6QX8v2X9auohBhVrunmIpeW71kV68eh4gTI2Rqm8vTTjI0oAFmFmHEp1z ETHQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Fwv37+QubMaCUucH0N5JZo9Ov2g7fA/euZvz337PHNs=; b=s9+pVGilxtK4lawv9lBM/3rTshv+CbuPD/dIwi0SBe5tV0cQ7JLQWW1WjQPrl3wW4H tk0Vvx4CD3IqD0iP2xyr2Kp1n9U4ERHkencDuMtHkGQpOkPkNR6KY/w013O+lIx2fT4l ETq+c7NTpvemQAP5Nh3mDYF1gSYXST919tA0x7LABVQXR6Qw0czp7gq5AStH+of4MQqG CgIz6Fq1bkQAZO86EOVoxrk6MA46ly7YFs10GhHTWpnRDK3gYEFv4BYhtoSA8ZWRciVK LvDkeYpalUl6kWJP9ePfF6mSFhpk3H3YiWmqWt1dN86kufD3s2JHffD0MMir2Asc5zJN mKcA==
X-Gm-Message-State: AOAM533QomQphcRswGG+hYd0n9cY0jzr2N4UbI5pHiuoY6H2C5dM+Bx+ RrqA9MuE1tvXaNgpLYHxtjD6SmZ9MfGzgyZrQI0=
X-Google-Smtp-Source: ABdhPJwUxYOGOUa7W7u8RjkIP0QYcwewpzUKKPKBUPnEcsR/pxxWYwHkEUMdSGE4ilTl6UXnL6FnsqCVjEUR5IlTt0Y=
X-Received: by 2002:a4a:d043:: with SMTP id x3mr2295054oor.19.1605602389832; Tue, 17 Nov 2020 00:39:49 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com> <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com> <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com> <CAOW+2dsVSTcvYsKB7XB7GJy6eo4sTr70LJcKWtoQ1KLhVKpmOA@mail.gmail.com> <CAKcm_gPUfBUVz8Kh-jbHeUDCOAfF6FsjLHYsF6aZDgbCkMUw8Q@mail.gmail.com> <CAPDSy+6TCOJwxDgS+tWyshDnMDrwGYSYVQMSw3rdgj_GtE2E5g@mail.gmail.com> <CAHVo=Zk51+BAZxY6+-iUaM9cqFApnsyAeeoJ4YmqqA-uR3ojJw@mail.gmail.com> <CAPDSy+76Z9UF4Mjey-R_Kpi7vWqzJ86K9kw-Z=2aPfcz=YCgEw@mail.gmail.com> <CAHVo=Z=bCVnS7RMYM-Sjz0S1MQ7T0TKNe4FQANAGhzsyGJKmXg@mail.gmail.com> <CAPDSy+7KHsBqY-VGraWw5kG_DHU+3X4Ex0oMsJ2HzNa7HqJO2g@mail.gmail.com>
In-Reply-To: <CAPDSy+7KHsBqY-VGraWw5kG_DHU+3X4Ex0oMsJ2HzNa7HqJO2g@mail.gmail.com>
From: Luke Curley <kixelated@gmail.com>
Date: Tue, 17 Nov 2020 00:39:39 -0800
Message-ID: <CAHVo=ZnUVaWuSYGUwoWCz3MxFUo7c2DCGaxEa0tAWkkNSedhog@mail.gmail.com>
To: David Schinazi <dschinazi.ietf@gmail.com>
Cc: Ian Swett <ianswett@google.com>, Bernard Aboba <bernard.aboba@gmail.com>,  WebTransport <webtransport@ietf.org>, Lucas Pardue <lucaspardue.24.7@gmail.com>
Content-Type: multipart/alternative; boundary="00000000000018bc6f05b44970b5"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/tt6E-dJ0KYU5t8fZ1HVT5BM5zpQ>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2020 08:39:55 -0000

--00000000000018bc6f05b44970b5
Content-Type: text/plain; charset="UTF-8"

Sorry, I didn't correctly understand your question until after I hit
send... I thought you were asking about HTTP/3 versus QuicTransport.

QuicTransport can be supported at the application layer for an arbitrary*
QUIC library. For example, a kernel or hardware device could expose an
accelerated QUIC API (...we care a lot about performance). The simple
QuicTransport handshake would be done in user-space.

Http3Transport, on the other hand, requires explicit support in an HTTP/3
library. While it's not difficult to implement, explicit Http3Transport
support will be more limited than generic QUIC support. Native clients will
have fewer and potentially worse implementations to choose from.

Again, I feel like this is only a minor benefit for QuicTransport. I'm
brand new to the IETF process and I may be overvaluing certain properties.


* Datagrams are currently required for QuicTransport, although it's a very
generic extension and could even be optional.

On Mon, Nov 16, 2020 at 11:40 PM David Schinazi <dschinazi.ietf@gmail.com>
wrote:

>
> On Mon, Nov 16, 2020 at 11:35 PM Luke Curley <kixelated@gmail.com> wrote:
>
>> Hey David, I gave a quick presentation on my use-case yesterday. We're
>> using HLS so all media delivery is currently HTTP-based and we would love
>> to use HTTP/3.
>>
>
> And it was a great presentation! Your use case makes sense to me.
>
>
>> However, reducing latency requires a tighter feedback loop and some form
>> of push. The HTTP request/response model just complicates
>> things, especially when HTTP push is brought into the equation.
>> QuicTransport is much simpler and allows us to build something closer to
>> RTMP on top.
>>
>
> I don't understand this, can you clarify? What does the HTTP
> request/response model have to do with the Http3Transport vs QuicTransport
> question?
>
>
>> It also means that we can use the same protocol for both distribution and
>> contribution.
>>
>
> I apologize, but I don't understand this either. What same protocol?
>
> On Mon, Nov 16, 2020 at 9:29 PM David Schinazi <dschinazi.ietf@gmail.com>
>> wrote:
>>
>>>
>>>
>>> On Mon, Nov 16, 2020 at 6:02 PM Luke Curley <kixelated@gmail.com> wrote:
>>>
>>>> I think that's a good starting summary David. Some things worth
>>>> mentioning:
>>>>
>>>> For 1 and 4, Twitch is using QuicTransport for both native applications
>>>> (ex. mobile, desktop, devices) and web applications. It's minor, but we
>>>> benefit from the ability to use any QUIC library (technically we don't
>>>> implement datagrams...) instead only those with HTTP/3 and Http3Transport
>>>> support. I think this context was missing in the previous discussions.
>>>>
>>>
>>> Can you clarify which implementations you were considering that support
>>> QUIC+DATAGRAM but not HTTP/3?
>>>
>>>
>>>> For 3, QuicTransport can support 0-RTT if we declare the path/origin
>>>> handshake to be idempotent
>>>> <https://github.com/vasilvv/webtransport/issues/16>... unless the new
>>>> connection is routed to a different host. Both pooled Http3Transport and a
>>>> new QuicTransport connection could take the same number of round trips.
>>>>
>>>
>>> 0-RTT state isn't saved across ALPNs, even if it's to the same host. So
>>> Http3Transport would get inline 0-RTT but QuicTransport would not get 0-RTT
>>> unless you've already performed a QuicTransport handshake in recent history.
>>>
>>>
>>>> For 4 and 5, I'm worried about flow control
>>>> <https://github.com/vasilvv/webtransport/issues/22>. tl;dr a
>>>> Http3Transport session could easily exhaust flow control limits for the
>>>> entire connection. This seems especially negative if pooling is performed
>>>> transparently (ex. a Http3Transport session may silently break HTTP/3 or
>>>> other sessions).
>>>>
>>>
>>> Unintentionally hitting the connection-level flow control limit is a
>>> serious implementation bug. I wouldn't expect this to still be a problem
>>> once implementations mature. I wouldn't want to base our protocol choices
>>> based on a bug in non-production-ready implementations.
>>>
>>>
>>>> On Mon, Nov 16, 2020 at 5:10 PM David Schinazi <
>>>> dschinazi.ietf@gmail.com> wrote:
>>>>
>>>>> I'd like us to take a step back, I think we're conflating many
>>>>> different topics here, and it's making it impossible to reason about this
>>>>> (at least for someone running on not enough sleep like I am this week).
>>>>>
>>>>> Topic 1: the complexity of implementing Http3Transport as opposed to
>>>>> QuicTransport on the client
>>>>>     From my perspective, all browsers interested in WebTransport are
>>>>> implementing HTTP/3, so I don't see much complexity there.
>>>>>     Please reply here if you know of complexities I'm not seeing
>>>>>
>>>>> Topic 2: the complexity of implementing Http3Transport as opposed to
>>>>> QuicTransport on the server
>>>>>     As far as I know, most server-side QUIC stacks also support
>>>>> HTTP/3, and for QuicTransport they already have DATAGRAM support so I think
>>>>> the delta is negligible.
>>>>>     Please reply here if you know of complexities I'm not seeing
>>>>>
>>>>> Topic 3: the benefits of pooling WebTransport
>>>>>     This allows saving round trips to get WebTransport up and running
>>>>>     This allows sharing congestion control state
>>>>>     This allows letting the QUIC implementation prioritize DATAGRAMs
>>>>> vs HTTP requests instead of relying on the kernel or routers which have
>>>>> less information
>>>>>     Overall, I think pooling is beneficial (though not an absolute
>>>>> must-have)
>>>>>     Please reply here if you know of benefits I'm not seeing
>>>>>
>>>>> Topic 4: the difficulty of pooling Http3Transport on the client
>>>>>     It appears that all browsers that are interested in WebTransport
>>>>> are implementing pooling in their HTTP/3 stack so additionally pooling
>>>>> WebTransport should not introduce more complexity
>>>>>     Please reply here if you know of complexities I'm not seeing
>>>>>
>>>>> Topic 5: the difficulty of pooling Http3Transport on the server
>>>>>     This one is trickier. If you have frontends that know how to route
>>>>> HTTP requests to backends, DATAGRAM support is going to be a whole new
>>>>> world.
>>>>>     However, and I think this is really important: implementing this
>>>>> on the server is OPTIONAL.
>>>>>     The server can easily use a different hostname (and different TLS
>>>>> certificates) for HTTP vs WebTransport and clients will not pool the two
>>>>> together.
>>>>>     Once you use different domain names per WebTransport object,
>>>>> Http3Transport has the exact same pooling properties as QuicTransport.
>>>>>     Please reply here if you know of complexities I'm not seeing
>>>>>
>>>>> What am I missing?
>>>>>
>>>>> Thanks,
>>>>> David
>>>>>
>>>>>
>>>>> On Mon, Nov 16, 2020 at 4:45 PM Ian Swett <ianswett@google.com> wrote:
>>>>>
>>>>>> I'm *very* concerned about any functionality that *requires*
>>>>>> pooling.  Pooling is a client-specific optimization and pooling policy is
>>>>>> subject to change(within reason) at any time.  If applications are saying
>>>>>> "it'd be cool if we could share congestion control and loss recovery state
>>>>>> between H3 and WebTransport most of the time", then I can see there being
>>>>>> real(albeit small) benefits, just like there would be for putting
>>>>>> DataChannels and RTP into one QUIC connection for WebRTC.  If people are
>>>>>> intending to rely on pooling so an HTTP(hopefully H3) request can trigger a
>>>>>> WebTransport response, I think we're in a world of pain and
>>>>>> over-optimization.
>>>>>>
>>>>>> This is more obvious in light of the fact that a WebTransport
>>>>>> endpoint is likely not a generic CDN endpoint, as has been clearly stated
>>>>>> by Mark Nottingham.
>>>>>>
>>>>>> Bernard's comments above point to a tighter coupling between HTTP/3
>>>>>> and WebTransport than I think is practical in production, unless I
>>>>>> misunderstood(which I may have, it's been a long day).
>>>>>>
>>>>>> All of this makes me think we should punt the HTTP based WebTransport
>>>>>> options down the road a year or so and focus on QuicTransport initially.
>>>>>> It's not to say we won't do them, but they're clearly more complex
>>>>>> than QuicTransport and it'd be good to have real deployment experience
>>>>>> prior to starting so we know what the requirements are and where the
>>>>>> dragons are lurking.  Also, the W3C should design APIs that make it easy to
>>>>>> detect failure to establish a QUIC-based WebTransport, and this ensures
>>>>>> those are well exercised.  Maybe we DO require pooling under certain
>>>>>> conditions and describe those, but there are likely privacy concerns under
>>>>>> some circumstances and I'm not enough of an expert to know what would be
>>>>>> acceptable to all clients.
>>>>>>
>>>>>> Some people in the WG may think we have to release a TCP based
>>>>>> WebTransport at the same time as a QUIC based one, but I don't think that's
>>>>>> true and even if we standardized them at the same time, it doesn't mean
>>>>>> both will achieve wide deployment at the same time.  As I said at the mic,
>>>>>> I don't see any reason YouTube would deploy a TCP based WebTransport given
>>>>>> it will have to maintain an HTTP/1.1 option for basically forever and
>>>>>> they've spent a good bit of effort to make sure that works as well as it
>>>>>> can.  It's clear to me there are compelling use cases right now for
>>>>>> QuicTransport, but the driving use cases for the fallback are not clear to
>>>>>> me.  Consistency is intellectually appealing, but doesn't drive deployments.
>>>>>>
>>>>>> Ian
>>>>>>
>>>>>> On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba <
>>>>>> bernard.aboba@gmail.com> wrote:
>>>>>>
>>>>>>> David said:
>>>>>>>
>>>>>>> "Where does this come from? A lot of QUIC servers are implementing
>>>>>>> QUIC datagrams, and once you have those the delta with h3 datagrams is
>>>>>>> negligible. Additionally, multiple h3 server implementers have indicated
>>>>>>> they want to support WebTransport. It's starting to feel like the pushback
>>>>>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>>>>>> who haven't tried to implement it? If that's the case, then we should get
>>>>>>> some implementation experience to confirm or debunk that theory."
>>>>>>>
>>>>>>> [BA] The pooling use cases often involve an interaction between an
>>>>>>> HTTP/3 request/response and WebTransport.  so the HTTP/3 Request doesn't
>>>>>>> just elicit an HTTP/3 Response.  It also causes something else to happen,
>>>>>>> something that isn't specified in the HTTP/3 protocol, such as eliciting a
>>>>>>> datagram flow or bi/unidirectional stream from the server.  This is what is
>>>>>>> contemplated in several of the "Live Event" use cases, where the HTTP/3
>>>>>>> Request/Response would be requesting the desired Event. The major advantage
>>>>>>> over HLS is avoiding Head-of-Line blocking, reducing video freezes and
>>>>>>> stalls.  So developers understand the value that support for datagrams and
>>>>>>> server-initiated streams can provide - the question is whether they'll have
>>>>>>> all the interoperable pieces in place to deploy it.
>>>>>>>
>>>>>>> Just because a generic HTTP/3 server supports QUIC and WebTransport,
>>>>>>> doesn't mean that it will support these use cases.  I've been asked whether
>>>>>>> better interoperability and wider ecosystem support could be achieved by
>>>>>>> extending HTTP/3 in a way more in keeping with the existing protocol design
>>>>>>> - such as by allowing an HTTP/3 Request to specify a resource to be
>>>>>>> returned in a flow of datagrams.
>>>>>>>
>>>>>>> The situation might be more tenable if the node.js framework had
>>>>>>> HTTP/3 and QUIC modules on the horizon.
>>>>>>>
>>>>>>> On Mon, Nov 16, 2020 at 1:00 PM David Schinazi <
>>>>>>> dschinazi.ietf@gmail.com> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba <
>>>>>>>> bernard.aboba@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Luke said:
>>>>>>>>>
>>>>>>>>> "My primary concern is that Http3Transport requires non-generic
>>>>>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>>>>>> HTTP/3 implementation that does support it."
>>>>>>>>>
>>>>>>>>> [BA] I have also heard this concern from developers. The concerns
>>>>>>>>> primarily arise from the pooling of HTTP/3 Request/Responses with
>>>>>>>>> WebTransport. This does enable some interesting use cases, such as a
>>>>>>>>> Request/Response (e.g. gRPC) that can result in a server sending datagrams
>>>>>>>>> or initiating bi-directional or uni-directional streams.  So there is
>>>>>>>>> perceived value, but the question is whether that value will be widely
>>>>>>>>> supported across the HTTP/3 ecosystem.
>>>>>>>>>
>>>>>>>>> At this point, most generic HTTP/3 servers are not expected to
>>>>>>>>> support HTTP/3 datagrams (not part of the HTTP/3 protocol) or
>>>>>>>>> Http3Transport (perceived as a niche protocol), so that pooling would only
>>>>>>>>> be possible when using a framework.  node.js will not have QUIC support for
>>>>>>>>> 12-18 months (held up by OpenSSL) so even framework support is expected to
>>>>>>>>> be limited.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Where does this come from? A lot of QUIC servers are implementing
>>>>>>>> QUIC datagrams, and once you have those the delta with h3 datagrams is
>>>>>>>> negligible. Additionally, multiple h3 server implementers have indicated
>>>>>>>> they want to support WebTransport. It's starting to feel like the pushback
>>>>>>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>>>>>>> who haven't tried to implement it? If that's the case, then we should get
>>>>>>>> some implementation experience to confirm or debunk that theory.
>>>>>>>>
>>>>>>>>
>>>>>>>>> On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <
>>>>>>>>> dschinazi.ietf@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> We're on the same page that there's code in HTTP/3 that could be
>>>>>>>>>>> leveraged for QuicTransport in the form of the header parsing. I think
>>>>>>>>>>> there's a path to merge QuicTransport and Http3Transport by leveraging
>>>>>>>>>>> HTTP/3 for the handshake and QUIC for stream delivery.
>>>>>>>>>>>
>>>>>>>>>>> My primary concern is that Http3Transport requires non-generic
>>>>>>>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>>>>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>>>>>>>> HTTP/3 implementation that does support it.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Hi Luke,
>>>>>>>>>>
>>>>>>>>>> I'm curious, could you elaborate on what these "non-generic
>>>>>>>>>> modifications to the HTTP/3 layer" are please?
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> David
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <
>>>>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Luke,
>>>>>>>>>>>>
>>>>>>>>>>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Just to clarify, when I say "QuicTransport is simpler" I
>>>>>>>>>>>>> really mean "QuicTransport has greater interoperability". You can take any
>>>>>>>>>>>>> QUIC implementation (+ datagram extension) and add a thin layer to support
>>>>>>>>>>>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>>>>>>>>>>>> want to see in general as QUIC replaces TCP.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks for the clarification. I appreciate the sentiment. But
>>>>>>>>>>>> given the development of QUIC its kind of surprising that people would find
>>>>>>>>>>>> it easier to identify an implementation that supports QUIC and datagram but
>>>>>>>>>>>> does not support HTTP/3.
>>>>>>>>>>>>
>>>>>>>>>>>> Thr situation for a more clean-room implementation is
>>>>>>>>>>>> different, I agree. However, by the time you've done all the hard stuff
>>>>>>>>>>>> with QUIC, a very focused HTTP/3 layer ends up quite thin too. You can
>>>>>>>>>>>> ignore dynamic compression, server push and extensibility points.
>>>>>>>>>>>>
>>>>>>>>>>>> I also see the current design being the thin end of the wedge.
>>>>>>>>>>>> The proposal I linked talks about HTTP-like header parsing. So its "just" a
>>>>>>>>>>>> thin layer to do some parsing. Then folks will probably want some want to
>>>>>>>>>>>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>>>>>>>>>>>> of GREASE. To extrapolate forward, what would be the delta be between some
>>>>>>>>>>>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>>>>>>>>>>>> years of effort.
>>>>>>>>>>>>
>>>>>>>>>>>> Cheers
>>>>>>>>>>>> Lucas
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>>>>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi folks,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> To follow up on one thread of discussion during IETF 109. To
>>>>>>>>>>>>>> over simplify what we've heard a few folks say, they prefer QuicTransport
>>>>>>>>>>>>>> because it simpler and they don't need pooling.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I'd like to push more on this, what is the measurable
>>>>>>>>>>>>>> complexity of HTTP/3 over QUIC plus a new application mapping that needs to
>>>>>>>>>>>>>> be defined? Let's isolate pooling as a variable and ignore it.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Victor mentioned his proposal for a unified header semantic
>>>>>>>>>>>>>> across all transports, this is
>>>>>>>>>>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>>>>>>>>>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>>>>>>>>>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>>>>>>>>>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>>>>>>>>>>>> is. I think it's important to avoid something that looks like HTTP but
>>>>>>>>>>>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>>>>>>>>>>>> give it a different ALPN so that we avoid problems related to
>>>>>>>>>>>>>> cross-protocol pooling?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Cheers,
>>>>>>>>>>>>>> Lucas
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Webtransport mailing list
>>>>>>>>>>>>>> Webtransport@ietf.org
>>>>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>> Webtransport mailing list
>>>>>>>>>>> Webtransport@ietf.org
>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Webtransport mailing list
>>>>>>>>>> Webtransport@ietf.org
>>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>>
>>>>>>>>> --
>>>>>>> Webtransport mailing list
>>>>>>> Webtransport@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>
>>>>>>

--00000000000018bc6f05b44970b5
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Sorry, I didn&#39;t correctly understand your question unt=
il after I hit send... I thought you were asking about HTTP/3 versus QuicTr=
ansport.<div><br></div><div>QuicTransport can be supported at the applicati=
on layer for an arbitrary* QUIC library. For example, a kernel or hardware =
device could expose an accelerated=C2=A0QUIC API (...we care a lot about pe=
rformance). The simple QuicTransport handshake would be done in user-space.=
</div><div><br></div><div>Http3Transport, on the other hand, requires expli=
cit support in an HTTP/3 library. While it&#39;s not difficult to implement=
, explicit Http3Transport support will be more limited than generic QUIC su=
pport. Native clients will have fewer and potentially worse implementations=
 to choose from.</div><div><br></div><div>Again, I feel like this is only a=
 minor benefit for QuicTransport. I&#39;m brand new to the IETF process and=
 I may be overvaluing certain properties.</div><div><br></div><div><br></di=
v><div><div>* Datagrams are currently required for QuicTransport, although =
it&#39;s a very generic extension and could even be optional.</div></div><d=
iv></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gma=
il_attr">On Mon, Nov 16, 2020 at 11:40 PM David Schinazi &lt;<a href=3D"mai=
lto:dschinazi.ietf@gmail.com">dschinazi.ietf@gmail.com</a>&gt; wrote:<br></=
div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bor=
der-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div=
 dir=3D"ltr"><br></div><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D=
"gmail_attr">On Mon, Nov 16, 2020 at 11:35 PM Luke Curley &lt;<a href=3D"ma=
ilto:kixelated@gmail.com" target=3D"_blank">kixelated@gmail.com</a>&gt; wro=
te:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"=
ltr">Hey David, I gave a quick presentation on my use-case yesterday. We&#3=
9;re using HLS so=C2=A0all media delivery is currently HTTP-based and we wo=
uld love to use HTTP/3.=C2=A0</div></blockquote><div><br></div><div>And it =
was a great presentation! Your use case makes sense to me.</div><div>=C2=A0=
</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;b=
order-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><d=
iv>However, reducing latency requires a tighter feedback loop and some form=
 of push. The HTTP request/response model just complicates things,=C2=A0esp=
ecially when HTTP push is brought into the equation. QuicTransport is much =
simpler and allows us to build something closer to RTMP on top.</div></div>=
</blockquote><div><br></div><div>I don&#39;t understand this, can you clari=
fy? What does the HTTP request/response model have to do with the Http3Tran=
sport vs QuicTransport question?<br></div><div>=C2=A0</div><blockquote clas=
s=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid r=
gb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>It also means that =
we can use the same protocol for both distribution and contribution.</div><=
/div></blockquote><div><br></div><div></div><div>I apologize, but I don&#39=
;t understand this either. What same protocol?</div><div><br></div><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px=
 solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"><div d=
ir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 9:29 PM David Schin=
azi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_blank">dschi=
nazi.ietf@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quot=
e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)=
;padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div cla=
ss=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 20=
20 at 6:02 PM Luke Curley &lt;<a href=3D"mailto:kixelated@gmail.com" target=
=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex"><div dir=3D"ltr">I think that&#39;s a good=
 starting summary David. Some things worth mentioning:<div><br></div><div>F=
or 1 and 4, Twitch is using QuicTransport for both native applications (ex.=
 mobile, desktop, devices) and web applications. It&#39;s minor, but we ben=
efit from the ability to use any QUIC library (technically we don&#39;t imp=
lement datagrams...) instead only those with HTTP/3 and Http3Transport supp=
ort. I think this context was missing in the previous discussions.</div></d=
iv></blockquote><div><br></div><div>Can you clarify which implementations y=
ou were considering that support QUIC+DATAGRAM but not HTTP/3?</div><div>=
=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0=
.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"l=
tr"><div>For 3, QuicTransport can support 0-RTT if we <a href=3D"https://gi=
thub.com/vasilvv/webtransport/issues/16" target=3D"_blank">declare the path=
/origin handshake to be=C2=A0idempotent</a>... unless the new connection is=
 routed to a different host. Both pooled Http3Transport and a new QuicTrans=
port connection could take the same number of round trips.</div></div></blo=
ckquote><div><br></div><div>0-RTT state isn&#39;t saved across ALPNs, even =
if it&#39;s to the same host. So Http3Transport=C2=A0would get inline 0-RTT=
 but QuicTransport would not get 0-RTT unless you&#39;ve already performed =
a QuicTransport handshake in recent history.</div><div>=C2=A0</div><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px=
 solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>For 4 and 5=
, <a href=3D"https://github.com/vasilvv/webtransport/issues/22" target=3D"_=
blank">I&#39;m worried about flow control</a>. tl;dr a Http3Transport sessi=
on could easily exhaust flow control limits for the entire connection. This=
 seems especially negative if pooling is performed transparently (ex. a Htt=
p3Transport session may silently break HTTP/3 or other sessions).</div></di=
v></blockquote><div><br></div><div>Unintentionally hitting the connection-l=
evel=C2=A0flow control limit is a serious implementation bug. I wouldn&#39;=
t expect this to still be a problem once implementations mature. I wouldn&#=
39;t want to base our protocol choices based on a bug in non-production-rea=
dy implementations.</div><div>=C2=A0</div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail=
_attr">On Mon, Nov 16, 2020 at 5:10 PM David Schinazi &lt;<a href=3D"mailto=
:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmail.com</a>&g=
t; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p=
x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div d=
ir=3D"ltr">I&#39;d like us to take a step back, I think we&#39;re conflatin=
g many different topics here, and it&#39;s making it impossible to reason a=
bout this (at least for someone running on not enough sleep like I am this =
week).<div><br></div><div>Topic 1: the complexity of implementing=C2=A0Http=
3Transport=C2=A0as opposed to QuicTransport=C2=A0on the client</div><div>=
=C2=A0 =C2=A0 From my perspective, all browsers interested in WebTransport =
are implementing HTTP/3, so I don&#39;t see much complexity there.</div><di=
v>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#39;m not s=
eeing</div><div><div><br></div><div>Topic 2: the complexity of implementing=
=C2=A0Http3Transport=C2=A0as opposed to QuicTransport=C2=A0on the server</d=
iv></div><div>=C2=A0 =C2=A0 As far as I know, most server-side QUIC stacks =
also support HTTP/3, and for QuicTransport=C2=A0they already have DATAGRAM =
support so I think the delta is negligible.</div><div>=C2=A0 =C2=A0 Please =
reply here if you know of complexities I&#39;m not seeing</div><div></div><=
div><br></div><div>Topic 3: the benefits of pooling WebTransport</div><div>=
=C2=A0 =C2=A0 This allows saving round trips to get WebTransport up and run=
ning</div><div>=C2=A0 =C2=A0 This allows sharing congestion control state</=
div><div>=C2=A0 =C2=A0 This allows letting the QUIC implementation prioriti=
ze DATAGRAMs vs HTTP requests instead of relying on the kernel or routers w=
hich have less information</div><div>=C2=A0 =C2=A0 Overall, I think pooling=
 is beneficial (though not an absolute must-have)</div><div>=C2=A0 =C2=A0 P=
lease reply here if you know of benefits I&#39;m not seeing<br></div><div><=
br></div><div>Topic 4: the difficulty of pooling Http3Transport=C2=A0on the=
 client</div><div>=C2=A0 =C2=A0 It appears that all browsers that are inter=
ested in WebTransport are implementing pooling in their HTTP/3 stack so add=
itionally pooling WebTransport should not introduce more complexity</div><d=
iv>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#39;m not =
seeing</div><div></div><div><div><br></div><div>Topic 5: the difficulty of =
pooling Http3Transport=C2=A0on the server</div></div><div>=C2=A0 =C2=A0 Thi=
s one is trickier. If you have frontends that know how to route HTTP=C2=A0r=
equests to backends, DATAGRAM support is going to be a whole new world.</di=
v><div>=C2=A0 =C2=A0 However, and I think this is really important: impleme=
nting this on the server is OPTIONAL.</div><div>=C2=A0 =C2=A0 The server ca=
n easily use a different hostname (and different TLS certificates) for HTTP=
 vs WebTransport and clients will not pool the two together.</div><div>=C2=
=A0 =C2=A0 Once you use different domain names per WebTransport object, Htt=
p3Transport=C2=A0has the exact same pooling properties as QuicTransport.</d=
iv><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#39;m=
 not seeing<br></div><div><br></div><div>What am I missing?</div><div><br><=
/div><div>Thanks,</div><div>David</div><div><br></div></div><br><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020=
 at 4:45 PM Ian Swett &lt;<a href=3D"mailto:ianswett@google.com" target=3D"=
_blank">ianswett@google.com</a>&gt; wrote:<br></div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,=
204,204);padding-left:1ex"><div dir=3D"ltr">I&#39;m <b>very</b> concerned a=
bout any functionality that <b>requires</b> pooling.=C2=A0 Pooling is a cli=
ent-specific optimization and pooling policy is subject to change(within re=
ason) at any time.=C2=A0 If applications=C2=A0are saying &quot;it&#39;d be =
cool if we could share congestion control and loss recovery state between H=
3 and WebTransport most of the time&quot;, then I can see there being real(=
albeit small) benefits, just like there would be for putting DataChannels a=
nd RTP into one QUIC connection for WebRTC.=C2=A0 If people are intending t=
o rely on pooling so an HTTP(hopefully H3) request can trigger a WebTranspo=
rt response, I think we&#39;re in a world of pain and over-optimization.<di=
v><br></div><div>This is more obvious in light of the fact that a WebTransp=
ort endpoint=C2=A0is likely not a generic CDN endpoint, as has been clearly=
 stated by Mark Nottingham.<br><div><br></div><div>Bernard&#39;s comments a=
bove point to a tighter coupling between HTTP/3 and WebTransport than I thi=
nk is practical in production, unless I misunderstood(which I may have, it&=
#39;s been a long day).</div><div><br></div><div>All of this makes me think=
 we should punt the HTTP based WebTransport options down the road a year or=
 so and focus on QuicTransport=C2=A0initially.=C2=A0 It&#39;s not to say we=
 won&#39;t do them, but they&#39;re clearly more complex than=C2=A0QuicTran=
sport=C2=A0and it&#39;d be good to have real deployment experience prior to=
 starting so we know what the requirements are and where the dragons are lu=
rking.=C2=A0 Also, the W3C should design APIs that make it easy to detect f=
ailure to establish a QUIC-based=C2=A0WebTransport, and this ensures those =
are well exercised.=C2=A0 Maybe we DO require pooling under certain conditi=
ons and describe those, but there are likely privacy concerns under some ci=
rcumstances and I&#39;m not enough of an expert to know what would be accep=
table to all clients.</div><div><br></div><div>Some=C2=A0people in the WG m=
ay think we have to release a TCP based WebTransport at the same time as a =
QUIC based one, but I don&#39;t think that&#39;s true and even if we standa=
rdized them at the same time, it doesn&#39;t mean both will achieve wide de=
ployment at the same time.=C2=A0 As I said at the mic, I don&#39;t see any =
reason YouTube would deploy a TCP based WebTransport given it will have to =
maintain an HTTP/1.1 option for basically forever and they&#39;ve spent a g=
ood bit of effort to make sure that works as well as it can.=C2=A0 It&#39;s=
 clear to me there are compelling use cases right now for QuicTransport, bu=
t=C2=A0the driving use cases for the fallback are not clear to me.=C2=A0 Co=
nsistency is intellectually appealing, but doesn&#39;t drive deployments.</=
div></div><div><br></div><div>Ian</div></div><br><div class=3D"gmail_quote"=
><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 6:36 PM Bern=
ard Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com" target=3D"_blank">=
bernard.aboba@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_=
quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,=
204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">D=
avid said:=C2=A0<div><br></div><div>&quot;Where does this come from? A lot =
of QUIC servers are implementing QUIC datagrams, and once you have those th=
e delta with h3 datagrams is negligible. Additionally, multiple h3 server i=
mplementers=C2=A0have indicated they want to support WebTransport. It&#39;s=
 starting to feel like the pushback on HTTP3Transport=C2=A0is purely based =
on a perception of complexity from folks who haven&#39;t tried to implement=
 it? If that&#39;s the case, then we should get some implementation experie=
nce to confirm or debunk that theory.&quot;</div><div><br></div><div>[BA] T=
he pooling use cases often involve an interaction between an HTTP/3 request=
/response and WebTransport.=C2=A0 so the HTTP/3 Request doesn&#39;t just el=
icit an HTTP/3 Response.=C2=A0 It also causes something else to happen, som=
ething that isn&#39;t specified in the HTTP/3 protocol, such as eliciting a=
 datagram flow or bi/unidirectional stream from the server.=C2=A0 This is w=
hat is contemplated in several of the &quot;Live Event&quot; use cases, whe=
re the HTTP/3 Request/Response would be requesting the desired Event. The m=
ajor advantage over HLS is avoiding Head-of-Line blocking, reducing video f=
reezes and stalls.=C2=A0 So developers understand the value that support fo=
r datagrams and server-initiated streams can provide - the question is whet=
her they&#39;ll have all the interoperable pieces in place to deploy it.=C2=
=A0 </div><div><br></div><div>Just because a generic HTTP/3 server supports=
 QUIC and WebTransport, doesn&#39;t mean that it will support these use cas=
es.=C2=A0 I&#39;ve been asked whether better interoperability and wider eco=
system support could be achieved by extending HTTP/3 in a way more in keepi=
ng with the existing protocol design - such as by allowing an HTTP/3 Reques=
t to specify a resource to be returned in a flow of datagrams.=C2=A0</div><=
div><br></div><div>The situation might be more tenable if the node.js frame=
work had HTTP/3 and QUIC modules on the horizon.<br></div></div></div></div=
><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mo=
n, Nov 16, 2020 at 1:00 PM David Schinazi &lt;<a href=3D"mailto:dschinazi.i=
etf@gmail.com" target=3D"_blank">dschinazi.ietf@gmail.com</a>&gt; wrote:<br=
></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;=
border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><=
div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" c=
lass=3D"gmail_attr">On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba &lt;<a h=
ref=3D"mailto:bernard.aboba@gmail.com" target=3D"_blank">bernard.aboba@gmai=
l.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex"><div dir=3D"ltr">Luke said:=C2=A0<div><br></div><div>&quot;<span style=
=3D"color:rgb(80,0,80)">My primary concern is that Http3Transport requires =
non-generic modifications to the HTTP/3 layer mostly to support connection =
pooling. I&#39;m worried that this will limit support for Http3Transport an=
d complicates any HTTP/3 implementation that does support it.</span>&quot;<=
/div><div><br></div><div>[BA] I have also heard this concern from developer=
s. The concerns primarily arise from the pooling of HTTP/3 Request/Response=
s with WebTransport. This does enable some interesting use cases, such as a=
 Request/Response (e.g. gRPC) that can result in a server sending datagrams=
 or initiating bi-directional or uni-directional streams.=C2=A0 So there is=
 perceived value, but the question is whether that value will be widely sup=
ported across the HTTP/3 ecosystem.=C2=A0</div><div><br></div><div>At this =
point, most generic HTTP/3 servers are not expected to support HTTP/3 datag=
rams (not part of the HTTP/3 protocol) or Http3Transport (perceived as a ni=
che protocol), so that pooling would only be possible when using a framewor=
k.=C2=A0 node.js will not have=C2=A0QUIC support for 12-18 months (held up =
by OpenSSL) so even framework support is expected to be limited.</div></div=
></blockquote><div><br></div><div>Where does this come from? A lot of QUIC =
servers are implementing QUIC datagrams, and once you have those the delta =
with h3 datagrams is negligible. Additionally, multiple h3 server implement=
ers=C2=A0have indicated they want to support WebTransport. It&#39;s startin=
g to feel like the pushback on HTTP3Transport=C2=A0is purely based on a per=
ception of complexity from folks who haven&#39;t tried to implement it? If =
that&#39;s the case, then we should get some implementation experience to c=
onfirm or debunk that theory.</div><div>=C2=A0</div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,=
204,204);padding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" clas=
s=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:37 AM David Schinazi &lt;<a hre=
f=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmai=
l.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_qu=
ote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:34 AM=
 Luke Curley &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D"_blank">k=
ixelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote=
" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);=
padding-left:1ex"><div dir=3D"ltr">We&#39;re on the same page that there&#3=
9;s code in HTTP/3 that could be leveraged for QuicTransport in the form of=
 the header parsing. I think there&#39;s a path to merge QuicTransport and =
Http3Transport by leveraging HTTP/3 for the handshake and QUIC for stream d=
elivery.<div><br></div><div>My primary concern is that Http3Transport requi=
res non-generic modifications to the HTTP/3 layer mostly to support connect=
ion pooling. I&#39;m worried that this will limit support for Http3Transpor=
t and complicates any HTTP/3 implementation that does support it.</div></di=
v></blockquote><div><br></div><div>Hi Luke,</div><div><br></div><div>I&#39;=
m curious, could you elaborate on what these &quot;non-generic modification=
s to the HTTP/3 layer&quot; are please?</div><div><br></div><div>Thanks,</d=
iv><div>David</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr"=
>On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue &lt;<a href=3D"mailto:lucaspa=
rdue.24.7@gmail.com" target=3D"_blank">lucaspardue.24.7@gmail.com</a>&gt; w=
rote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p=
x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=
=3D"auto"><div>Hi Luke,</div><div dir=3D"auto"><br><div class=3D"gmail_quot=
e" dir=3D"auto"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, 16 Nov 2020, =
12:26 Luke Curley, &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D"_bl=
ank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex"><div dir=3D"ltr"><div>Just to clarify, when I say &=
quot;QuicTransport is simpler&quot; I really mean &quot;QuicTransport has g=
reater interoperability&quot;. You can take any QUIC implementation (+ data=
gram extension) and add a thin layer to support QuicTransport. It&#39;s a n=
ice layering of protocols and it&#39;s something that I want to see in gene=
ral as QUIC replaces TCP.</div></div></blockquote></div></div><div dir=3D"a=
uto"><br></div><div dir=3D"auto">Thanks for the clarification. I appreciate=
 the sentiment. But given the development of QUIC its kind of surprising th=
at people would find it easier to identify an implementation that supports =
QUIC and datagram but does not support HTTP/3.</div><div dir=3D"auto"><br><=
/div><div dir=3D"auto">Thr situation for a more clean-room implementation i=
s different, I agree. However, by the time you&#39;ve done all the hard stu=
ff with QUIC, a very focused HTTP/3 layer ends up quite thin too. You can i=
gnore dynamic compression, server push and extensibility points.</div><div =
dir=3D"auto"><br></div><div dir=3D"auto">I also see the current design bein=
g the thin end of the wedge. The proposal I linked talks about HTTP-like he=
ader parsing. So its &quot;just&quot; a thin layer to do some parsing. Then=
 folks will probably want some want to tweak parameter, acontrol channel, a=
 way to do graceful close, a sprinkle of GREASE. To extrapolate forward, wh=
at would be the delta be between some final product QuicTransport and HTTP/=
3. Too small a delta and we&#39;ve wasted years of effort.</div><div dir=3D=
"auto"><br></div><div dir=3D"auto">Cheers</div><div dir=3D"auto">Lucas</div=
><div dir=3D"auto"><br></div><div dir=3D"auto"><br></div><div dir=3D"auto">=
<div class=3D"gmail_quote" dir=3D"auto"><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad=
ding-left:1ex"><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gma=
il_attr">On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue &lt;<a href=3D"mailto=
:lucaspardue.24.7@gmail.com" rel=3D"noreferrer" target=3D"_blank">lucaspard=
ue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex"><div dir=3D"ltr"><div>Hi folks,</div><div><br></div><div>T=
o follow up on one thread of discussion during IETF 109. To over simplify w=
hat we&#39;ve heard a few folks say, they prefer QuicTransport because it s=
impler and they don&#39;t need pooling.</div><div><br></div><div>I&#39;d li=
ke to push more on this, what is the measurable complexity of HTTP/3 over Q=
UIC plus a new application mapping that needs to be defined? Let&#39;s isol=
ate pooling as a variable and ignore it.</div><div><br></div><div>Victor me=
ntioned his proposal for a unified header semantic across all transports, t=
his is <a href=3D"https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-o=
verview/pull/4/files" rel=3D"noreferrer" target=3D"_blank">https://github.c=
om/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files</a>. Taking a=
 closer look at it, I have some concerns that I added as comments.  HTTP ha=
s semantics for a reason. If QuicTransport is going to start borrowing HTTP=
 piecemeal, I really wonder how simple people might feel it is. I think it&=
#39;s important to avoid something that looks like HTTP but behaves differe=
ntly. Is it really much of a stretch to just do HTTP/3 but give it a differ=
ent ALPN so that we avoid problems related to cross-protocol pooling?</div>=
<div><br></div><div>Cheers,</div><div>Lucas<br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>

--00000000000018bc6f05b44970b5--


From nobody Tue Nov 17 00:53:21 2020
Return-Path: <ricea@chromium.org>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C37803A09F5 for <webtransport@ietfa.amsl.com>; Tue, 17 Nov 2020 00:53:19 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level: 
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=chromium.org
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 guq4bPqEP9ER for <webtransport@ietfa.amsl.com>; Tue, 17 Nov 2020 00:53:16 -0800 (PST)
Received: from mail-io1-xd2d.google.com (mail-io1-xd2d.google.com [IPv6:2607:f8b0:4864:20::d2d]) (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 01D903A09C3 for <webtransport@ietf.org>; Tue, 17 Nov 2020 00:53:15 -0800 (PST)
Received: by mail-io1-xd2d.google.com with SMTP id t8so20291898iov.8 for <webtransport@ietf.org>; Tue, 17 Nov 2020 00:53:15 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=PF9+dwxlUa8PvX3UR9ZURA6ypL98Ib1hz33v3HaQcVI=; b=LwIiRkYzGls1Er6VDKMfuSOYyqKc2/Df4U8mAasq51UJXP3XLQgj0YsL76U8HI58/S h86cTbm9/HnID4qS5FHi9urX4y/7w5rSKG5rXNqkmX7alDtiuHgzTFTKKSxJonHyhHVB ve4CP3/Lpy4ENKX7ggeuJYp3XpmAOED3oAZo4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=PF9+dwxlUa8PvX3UR9ZURA6ypL98Ib1hz33v3HaQcVI=; b=bhgGLZF51YhBzMWpP5jl/wq5xcpJWdvJBHJRMYH/3A34SWhSjJWZHcyjZnITTnsQQh tEgfOLAPNsf/8/O3h7sOVKg2Btb6pnd8ODGvZQBnF5dAGBbW/t06x++IdkPXwNhr1hD5 W83owsJ8iEEkgKKHruUx5kJfOeGUur1vH/wYvmJ+ttEuuwyTskI7an7akegJlPqL3/PB XuhKs5NEO7HPz2XFd/7lL8VoNil/kA5cjuYkCXGEN5ixilXE7M1NdGM9zdEARAmJroA6 WdceduaxBreeZhgQ8eSyirSovu8hZkGETKNb1OfMm5g/htpNCwhfHOaIv9ERVtAZVEUe g7cA==
X-Gm-Message-State: AOAM533ejtTqvSXQ7qyOk3TjZwaKoh7u1atxAYBeFiW6J8N2EyPO0R6R dViYjmQS25AVjZiK6IK9owo8IHujLPinijuDCLpGmg==
X-Google-Smtp-Source: ABdhPJzZom2EzbRFDw873RWtoirprQb+LgXTa2lXMkuWrIWTXuy2Rl+bEHwbrFdhGe11lclCYJ4n5IYLquSYcAzeVr4=
X-Received: by 2002:a02:a1dc:: with SMTP id o28mr2699126jah.109.1605603194962;  Tue, 17 Nov 2020 00:53:14 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com> <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com> <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com> <CAOW+2dsVSTcvYsKB7XB7GJy6eo4sTr70LJcKWtoQ1KLhVKpmOA@mail.gmail.com> <CAKcm_gPUfBUVz8Kh-jbHeUDCOAfF6FsjLHYsF6aZDgbCkMUw8Q@mail.gmail.com> <CAPDSy+6TCOJwxDgS+tWyshDnMDrwGYSYVQMSw3rdgj_GtE2E5g@mail.gmail.com> <CANatvzyVcFCoRRBg3me_KZ4d6RdffA2D2fSnAUP0yasORW17+g@mail.gmail.com>
In-Reply-To: <CANatvzyVcFCoRRBg3me_KZ4d6RdffA2D2fSnAUP0yasORW17+g@mail.gmail.com>
From: Adam Rice <ricea@chromium.org>
Date: Tue, 17 Nov 2020 17:53:04 +0900
Message-ID: <CAC_ixdy760un5v2XN9xhdRU9mrhy=qzfE=tC7+KeW=f2cEHS0Q@mail.gmail.com>
To: Kazuho Oku <kazuhooku@gmail.com>
Cc: David Schinazi <dschinazi.ietf@gmail.com>, Bernard Aboba <bernard.aboba@gmail.com>,  Ian Swett <ianswett@google.com>, Luke Curley <kixelated@gmail.com>,  WebTransport <webtransport@ietf.org>, Lucas Pardue <lucaspardue.24.7@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000161ada05b449a063"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/x-ApNAaYBU0o5mrhayZ_0pxvTCs>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2020 08:53:20 -0000

--000000000000161ada05b449a063
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

>
> From the perspective of a HTTP server-side deployment that intends to
> support WebTransport, it would be helpful if the handshake used HTTP
> request-response, because then we could reuse all the stuff that we have
> for HTTP. I think doing so has been helpful with websockets.


In my opinion, the expectation of working like HTTP has been detrimental to
websockets. First it led to feature creep, with cookies, HTTP auth, and
many miscellaneous HTTP features being added to WebSockets. Now people
are demanding
the ability to add arbitrary headers
<https://github.com/whatwg/html/issues/3062>, which would require a CORS
preflight.

Secondly, it led to great implementation complexity. Initially in Chrome we
had a parallel implementation of much of the HTTP stack, which became
unsustainable as more features were added. Then we started sharing the
existing HTTP stack, which led to it being littered with branches where
WebSockets require different behaviour, and a nasty layering violation to
implement "Upgrade".

I recommend doing nothing that would create an expectation that
QuicTransport would have HTTP semantics.

On Tue, 17 Nov 2020 at 11:00, Kazuho Oku <kazuhooku@gmail.com> wrote:

> David, thank you for breaking down the topics.
>
> My responses inline.
>
> 2020=E5=B9=B411=E6=9C=8817=E6=97=A5(=E7=81=AB) 10:10 David Schinazi <dsch=
inazi.ietf@gmail.com>:
>
>> I'd like us to take a step back, I think we're conflating many different
>> topics here, and it's making it impossible to reason about this (at leas=
t
>> for someone running on not enough sleep like I am this week).
>>
>> Topic 1: the complexity of implementing Http3Transport as opposed to
>> QuicTransport on the client
>>     From my perspective, all browsers interested in WebTransport are
>> implementing HTTP/3, so I don't see much complexity there.
>>     Please reply here if you know of complexities I'm not seeing
>>
>> Topic 2: the complexity of implementing Http3Transport as opposed to
>> QuicTransport on the server
>>     As far as I know, most server-side QUIC stacks also support HTTP/3,
>> and for QuicTransport they already have DATAGRAM support so I think the
>> delta is negligible.
>>     Please reply here if you know of complexities I'm not seeing
>>
>
> I might insert:
>
> Topic 2b: the complexity of implementing QuicTransport as opposed to
> Http3Transport on the server.
>
> IIUC, status quo of QuicTransport is much like HTTP/0.9, that upgrades th=
e
> connection to use datagrams once the server acknowledges the request.
>
> By saying HTTP/0.9, I am pointing out that there are no header fields, an=
d
> the problem is that things like authentication are missing, as Lucas
> pointed out elsewhere.
>
> From the perspective of a HTTP server-side deployment that intends to
> support WebTransport, it would be helpful if the handshake used HTTP
> request-response, because then we could reuse all the stuff that we have
> for HTTP. I think doing so has been helpful with websockets.
>
> I do understand the concern that wire encoding of HTTP/3 seems complicate=
d
> to people who are only interested in implementing WebTransport. We should
> try to accommodate that concern. However, I think there's value in adopti=
ng
> the semantics of HTTP [1] to the handshake of WebTransport, and that the
> natural path forward would be to use (a subset of) HTTP/3 for the purpose=
.
>
>
>> Topic 3: the benefits of pooling WebTransport
>>     This allows saving round trips to get WebTransport up and running
>>     This allows sharing congestion control state
>>     This allows letting the QUIC implementation prioritize DATAGRAMs vs
>> HTTP requests instead of relying on the kernel or routers which have les=
s
>> information
>>     Overall, I think pooling is beneficial (though not an absolute
>> must-have)
>>     Please reply here if you know of benefits I'm not seeing
>>
>> Topic 4: the difficulty of pooling Http3Transport on the client
>>     It appears that all browsers that are interested in WebTransport are
>> implementing pooling in their HTTP/3 stack so additionally pooling
>> WebTransport should not introduce more complexity
>>     Please reply here if you know of complexities I'm not seeing
>>
>> Topic 5: the difficulty of pooling Http3Transport on the server
>>     This one is trickier. If you have frontends that know how to route
>> HTTP requests to backends, DATAGRAM support is going to be a whole new
>> world.
>>     However, and I think this is really important: implementing this on
>> the server is OPTIONAL.
>>     The server can easily use a different hostname (and different TLS
>> certificates) for HTTP vs WebTransport and clients will not pool the two
>> together.
>>     Once you use different domain names per WebTransport object,
>> Http3Transport has the exact same pooling properties as QuicTransport.
>>     Please reply here if you know of complexities I'm not seeing
>>
>
> I think pooling is optional to both the client and server, regardless of
> the protocol that we choose. That was the case for websockets until RFC
> 8441 was standardized, and even after that, endpoints have the option to
> use dedicated connection.
>
> [1] https://httpwg.org/http-core/draft-ietf-httpbis-semantics-latest.html
>
>
>> What am I missing?
>>
>> Thanks,
>> David
>>
>>
>> On Mon, Nov 16, 2020 at 4:45 PM Ian Swett <ianswett@google.com> wrote:
>>
>>> I'm *very* concerned about any functionality that *requires* pooling.
>>> Pooling is a client-specific optimization and pooling policy is subject=
 to
>>> change(within reason) at any time.  If applications are saying "it'd be
>>> cool if we could share congestion control and loss recovery state betwe=
en
>>> H3 and WebTransport most of the time", then I can see there being
>>> real(albeit small) benefits, just like there would be for putting
>>> DataChannels and RTP into one QUIC connection for WebRTC.  If people ar=
e
>>> intending to rely on pooling so an HTTP(hopefully H3) request can trigg=
er a
>>> WebTransport response, I think we're in a world of pain and
>>> over-optimization.
>>>
>>> This is more obvious in light of the fact that a WebTransport
>>> endpoint is likely not a generic CDN endpoint, as has been clearly stat=
ed
>>> by Mark Nottingham.
>>>
>>> Bernard's comments above point to a tighter coupling between HTTP/3 and
>>> WebTransport than I think is practical in production, unless I
>>> misunderstood(which I may have, it's been a long day).
>>>
>>> All of this makes me think we should punt the HTTP based WebTransport
>>> options down the road a year or so and focus on QuicTransport initially=
.
>>> It's not to say we won't do them, but they're clearly more complex
>>> than QuicTransport and it'd be good to have real deployment experience
>>> prior to starting so we know what the requirements are and where the
>>> dragons are lurking.  Also, the W3C should design APIs that make it eas=
y to
>>> detect failure to establish a QUIC-based WebTransport, and this ensures
>>> those are well exercised.  Maybe we DO require pooling under certain
>>> conditions and describe those, but there are likely privacy concerns un=
der
>>> some circumstances and I'm not enough of an expert to know what would b=
e
>>> acceptable to all clients.
>>>
>>> Some people in the WG may think we have to release a TCP based
>>> WebTransport at the same time as a QUIC based one, but I don't think th=
at's
>>> true and even if we standardized them at the same time, it doesn't mean
>>> both will achieve wide deployment at the same time.  As I said at the m=
ic,
>>> I don't see any reason YouTube would deploy a TCP based WebTransport gi=
ven
>>> it will have to maintain an HTTP/1.1 option for basically forever and
>>> they've spent a good bit of effort to make sure that works as well as i=
t
>>> can.  It's clear to me there are compelling use cases right now for
>>> QuicTransport, but the driving use cases for the fallback are not clear=
 to
>>> me.  Consistency is intellectually appealing, but doesn't drive deploym=
ents.
>>>
>>> Ian
>>>
>>> On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba <bernard.aboba@gmail.com>
>>> wrote:
>>>
>>>> David said:
>>>>
>>>> "Where does this come from? A lot of QUIC servers are implementing QUI=
C
>>>> datagrams, and once you have those the delta with h3 datagrams is
>>>> negligible. Additionally, multiple h3 server implementers have indicat=
ed
>>>> they want to support WebTransport. It's starting to feel like the push=
back
>>>> on HTTP3Transport is purely based on a perception of complexity from f=
olks
>>>> who haven't tried to implement it? If that's the case, then we should =
get
>>>> some implementation experience to confirm or debunk that theory."
>>>>
>>>> [BA] The pooling use cases often involve an interaction between an
>>>> HTTP/3 request/response and WebTransport.  so the HTTP/3 Request doesn=
't
>>>> just elicit an HTTP/3 Response.  It also causes something else to happ=
en,
>>>> something that isn't specified in the HTTP/3 protocol, such as eliciti=
ng a
>>>> datagram flow or bi/unidirectional stream from the server.  This is wh=
at is
>>>> contemplated in several of the "Live Event" use cases, where the HTTP/=
3
>>>> Request/Response would be requesting the desired Event. The major adva=
ntage
>>>> over HLS is avoiding Head-of-Line blocking, reducing video freezes and
>>>> stalls.  So developers understand the value that support for datagrams=
 and
>>>> server-initiated streams can provide - the question is whether they'll=
 have
>>>> all the interoperable pieces in place to deploy it.
>>>>
>>>> Just because a generic HTTP/3 server supports QUIC and WebTransport,
>>>> doesn't mean that it will support these use cases.  I've been asked wh=
ether
>>>> better interoperability and wider ecosystem support could be achieved =
by
>>>> extending HTTP/3 in a way more in keeping with the existing protocol d=
esign
>>>> - such as by allowing an HTTP/3 Request to specify a resource to be
>>>> returned in a flow of datagrams.
>>>>
>>>> The situation might be more tenable if the node.js framework had HTTP/=
3
>>>> and QUIC modules on the horizon.
>>>>
>>>> On Mon, Nov 16, 2020 at 1:00 PM David Schinazi <
>>>> dschinazi.ietf@gmail.com> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba <
>>>>> bernard.aboba@gmail.com> wrote:
>>>>>
>>>>>> Luke said:
>>>>>>
>>>>>> "My primary concern is that Http3Transport requires non-generic
>>>>>> modifications to the HTTP/3 layer mostly to support connection pooli=
ng. I'm
>>>>>> worried that this will limit support for Http3Transport and complica=
tes any
>>>>>> HTTP/3 implementation that does support it."
>>>>>>
>>>>>> [BA] I have also heard this concern from developers. The concerns
>>>>>> primarily arise from the pooling of HTTP/3 Request/Responses with
>>>>>> WebTransport. This does enable some interesting use cases, such as a
>>>>>> Request/Response (e.g. gRPC) that can result in a server sending dat=
agrams
>>>>>> or initiating bi-directional or uni-directional streams.  So there i=
s
>>>>>> perceived value, but the question is whether that value will be wide=
ly
>>>>>> supported across the HTTP/3 ecosystem.
>>>>>>
>>>>>> At this point, most generic HTTP/3 servers are not expected to
>>>>>> support HTTP/3 datagrams (not part of the HTTP/3 protocol) or
>>>>>> Http3Transport (perceived as a niche protocol), so that pooling woul=
d only
>>>>>> be possible when using a framework.  node.js will not have QUIC supp=
ort for
>>>>>> 12-18 months (held up by OpenSSL) so even framework support is expec=
ted to
>>>>>> be limited.
>>>>>>
>>>>>
>>>>> Where does this come from? A lot of QUIC servers are implementing QUI=
C
>>>>> datagrams, and once you have those the delta with h3 datagrams is
>>>>> negligible. Additionally, multiple h3 server implementers have indica=
ted
>>>>> they want to support WebTransport. It's starting to feel like the pus=
hback
>>>>> on HTTP3Transport is purely based on a perception of complexity from =
folks
>>>>> who haven't tried to implement it? If that's the case, then we should=
 get
>>>>> some implementation experience to confirm or debunk that theory.
>>>>>
>>>>>
>>>>>> On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <
>>>>>> dschinazi.ietf@gmail.com> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> We're on the same page that there's code in HTTP/3 that could be
>>>>>>>> leveraged for QuicTransport in the form of the header parsing. I t=
hink
>>>>>>>> there's a path to merge QuicTransport and Http3Transport by levera=
ging
>>>>>>>> HTTP/3 for the handshake and QUIC for stream delivery.
>>>>>>>>
>>>>>>>> My primary concern is that Http3Transport requires non-generic
>>>>>>>> modifications to the HTTP/3 layer mostly to support connection poo=
ling. I'm
>>>>>>>> worried that this will limit support for Http3Transport and compli=
cates any
>>>>>>>> HTTP/3 implementation that does support it.
>>>>>>>>
>>>>>>>
>>>>>>> Hi Luke,
>>>>>>>
>>>>>>> I'm curious, could you elaborate on what these "non-generic
>>>>>>> modifications to the HTTP/3 layer" are please?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> David
>>>>>>>
>>>>>>>
>>>>>>>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <
>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Hi Luke,
>>>>>>>>>
>>>>>>>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Just to clarify, when I say "QuicTransport is simpler" I really
>>>>>>>>>> mean "QuicTransport has greater interoperability". You can take =
any QUIC
>>>>>>>>>> implementation (+ datagram extension) and add a thin layer to su=
pport
>>>>>>>>>> QuicTransport. It's a nice layering of protocols and it's someth=
ing that I
>>>>>>>>>> want to see in general as QUIC replaces TCP.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks for the clarification. I appreciate the sentiment. But
>>>>>>>>> given the development of QUIC its kind of surprising that people =
would find
>>>>>>>>> it easier to identify an implementation that supports QUIC and da=
tagram but
>>>>>>>>> does not support HTTP/3.
>>>>>>>>>
>>>>>>>>> Thr situation for a more clean-room implementation is different, =
I
>>>>>>>>> agree. However, by the time you've done all the hard stuff with Q=
UIC, a
>>>>>>>>> very focused HTTP/3 layer ends up quite thin too. You can ignore =
dynamic
>>>>>>>>> compression, server push and extensibility points.
>>>>>>>>>
>>>>>>>>> I also see the current design being the thin end of the wedge. Th=
e
>>>>>>>>> proposal I linked talks about HTTP-like header parsing. So its "j=
ust" a
>>>>>>>>> thin layer to do some parsing. Then folks will probably want some=
 want to
>>>>>>>>> tweak parameter, acontrol channel, a way to do graceful close, a =
sprinkle
>>>>>>>>> of GREASE. To extrapolate forward, what would be the delta be bet=
ween some
>>>>>>>>> final product QuicTransport and HTTP/3. Too small a delta and we'=
ve wasted
>>>>>>>>> years of effort.
>>>>>>>>>
>>>>>>>>> Cheers
>>>>>>>>> Lucas
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi folks,
>>>>>>>>>>>
>>>>>>>>>>> To follow up on one thread of discussion during IETF 109. To
>>>>>>>>>>> over simplify what we've heard a few folks say, they prefer Qui=
cTransport
>>>>>>>>>>> because it simpler and they don't need pooling.
>>>>>>>>>>>
>>>>>>>>>>> I'd like to push more on this, what is the measurable complexit=
y
>>>>>>>>>>> of HTTP/3 over QUIC plus a new application mapping that needs t=
o be
>>>>>>>>>>> defined? Let's isolate pooling as a variable and ignore it.
>>>>>>>>>>>
>>>>>>>>>>> Victor mentioned his proposal for a unified header semantic
>>>>>>>>>>> across all transports, this is
>>>>>>>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overvie=
w/pull/4/files.
>>>>>>>>>>> Taking a closer look at it, I have some concerns that I added a=
s comments.
>>>>>>>>>>> HTTP has semantics for a reason. If QuicTransport is going to s=
tart
>>>>>>>>>>> borrowing HTTP piecemeal, I really wonder how simple people mig=
ht feel it
>>>>>>>>>>> is. I think it's important to avoid something that looks like H=
TTP but
>>>>>>>>>>> behaves differently. Is it really much of a stretch to just do =
HTTP/3 but
>>>>>>>>>>> give it a different ALPN so that we avoid problems related to
>>>>>>>>>>> cross-protocol pooling?
>>>>>>>>>>>
>>>>>>>>>>> Cheers,
>>>>>>>>>>> Lucas
>>>>>>>>>>> --
>>>>>>>>>>> Webtransport mailing list
>>>>>>>>>>> Webtransport@ietf.org
>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>> Webtransport mailing list
>>>>>>>> Webtransport@ietf.org
>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>
>>>>>>> --
>>>>>>> Webtransport mailing list
>>>>>>> Webtransport@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>
>>>>>> --
>>>> Webtransport mailing list
>>>> Webtransport@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>
>>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
>
>
> --
> Kazuho Oku
> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>

--000000000000161ada05b449a063
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px =
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">From the=
 perspective of a HTTP server-side deployment that intends to support WebTr=
ansport, it would be helpful if the handshake used HTTP request-response, b=
ecause then we could reuse all the stuff that we have for HTTP. I think doi=
ng so has been helpful with websockets.=C2=A0</blockquote><div><br></div><d=
iv>In my opinion, the expectation of working like HTTP has been detrimental=
 to websockets. First it led to feature creep, with cookies, HTTP auth, and=
 many miscellaneous HTTP features being added to WebSockets. Now people are=
 <a href=3D"https://github.com/whatwg/html/issues/3062">demanding the abili=
ty to add arbitrary headers</a>, which would require a CORS preflight.<br><=
/div><div><br></div><div>Secondly, it led to great implementation complexit=
y. Initially in Chrome we had a parallel implementation of much of the HTTP=
 stack, which became unsustainable as more features were added. Then we sta=
rted sharing the existing HTTP stack, which led to it being littered with b=
ranches where WebSockets require different behaviour, and a nasty layering =
violation to implement &quot;Upgrade&quot;.</div><div><br></div><div>I reco=
mmend doing nothing that would create an expectation that QuicTransport=C2=
=A0would have HTTP semantics.</div></div><br><div class=3D"gmail_quote"><di=
v dir=3D"ltr" class=3D"gmail_attr">On Tue, 17 Nov 2020 at 11:00, Kazuho Oku=
 &lt;<a href=3D"mailto:kazuhooku@gmail.com">kazuhooku@gmail.com</a>&gt; wro=
te:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"=
ltr"><div>David, thank you for breaking down the topics.</div><div><br></di=
v><div>My responses inline.<br></div><br><div class=3D"gmail_quote"><div di=
r=3D"ltr" class=3D"gmail_attr">2020=E5=B9=B411=E6=9C=8817=E6=97=A5(=E7=81=
=AB) 10:10 David Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com" t=
arget=3D"_blank">dschinazi.ietf@gmail.com</a>&gt;:<br></div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">I&#39;d like us to take=
 a step back, I think we&#39;re conflating many different topics here, and =
it&#39;s making it impossible to reason about this (at least for someone ru=
nning on not enough sleep like I am this week).<div><br></div><div>Topic 1:=
 the complexity of implementing=C2=A0Http3Transport=C2=A0as opposed to Quic=
Transport=C2=A0on the client</div><div>=C2=A0 =C2=A0 From my perspective, a=
ll browsers interested in WebTransport are implementing HTTP/3, so I don&#3=
9;t see much complexity there.</div><div>=C2=A0 =C2=A0 Please reply here if=
 you know of complexities I&#39;m not seeing</div><div><div><br></div><div>=
Topic 2: the complexity of implementing=C2=A0Http3Transport=C2=A0as opposed=
 to QuicTransport=C2=A0on the server</div></div><div>=C2=A0 =C2=A0 As far a=
s I know, most server-side QUIC stacks also support HTTP/3, and for QuicTra=
nsport=C2=A0they already have DATAGRAM support so I think the delta is negl=
igible.</div><div>=C2=A0 =C2=A0 Please reply here if you know of complexiti=
es I&#39;m not seeing</div></div></blockquote><div><br></div><div>I might i=
nsert:</div><div><br></div><div>Topic 2b: the complexity of implementing Qu=
icTransport as opposed to Http3Transport on the server.</div><div><br></div=
><div>IIUC, status quo of QuicTransport is much like HTTP/0.9, that upgrade=
s the connection to use datagrams once the server acknowledges the request.=
</div><div><br></div><div>By saying HTTP/0.9, I am pointing out that there =
are no header fields, and the problem is that things like authentication ar=
e missing, as Lucas pointed out elsewhere.<br></div><div><br></div><div>Fro=
m the perspective of a HTTP server-side deployment that intends to support =
WebTransport, it would be helpful if the handshake used HTTP request-respon=
se, because then we could reuse all the stuff that we have for HTTP. I thin=
k doing so has been helpful with websockets.</div><div><br></div><div>I do =
understand the concern that wire encoding of HTTP/3 seems complicated to pe=
ople who are only interested in implementing WebTransport. We should try to=
 accommodate that concern. However, I think there&#39;s value in adopting t=
he semantics of HTTP [1] to the handshake of WebTransport, and that the nat=
ural path forward would be to use (a subset of) HTTP/3 for the purpose.<br>=
</div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div=
 dir=3D"ltr"><div></div><div><br></div><div>Topic 3: the benefits of poolin=
g WebTransport</div><div>=C2=A0 =C2=A0 This allows saving round trips to ge=
t WebTransport up and running</div><div>=C2=A0 =C2=A0 This allows sharing c=
ongestion control state</div><div>=C2=A0 =C2=A0 This allows letting the QUI=
C implementation prioritize DATAGRAMs vs HTTP requests instead of relying o=
n the kernel or routers which have less information</div><div>=C2=A0 =C2=A0=
 Overall, I think pooling is beneficial (though not an absolute must-have)<=
/div><div>=C2=A0 =C2=A0 Please reply here if you know of benefits I&#39;m n=
ot seeing<br></div><div><br></div><div>Topic 4: the difficulty of pooling H=
ttp3Transport=C2=A0on the client</div><div>=C2=A0 =C2=A0 It appears that al=
l browsers that are interested in WebTransport are implementing pooling in =
their HTTP/3 stack so additionally pooling WebTransport should not introduc=
e more complexity</div><div>=C2=A0 =C2=A0 Please reply here if you know of =
complexities I&#39;m not seeing</div><div></div><div><div><br></div><div>To=
pic 5: the difficulty of pooling Http3Transport=C2=A0on the server</div></d=
iv><div>=C2=A0 =C2=A0 This one is trickier. If you have frontends that know=
 how to route HTTP=C2=A0requests to backends, DATAGRAM support is going to =
be a whole new world.</div><div>=C2=A0 =C2=A0 However, and I think this is =
really important: implementing this on the server is OPTIONAL.</div><div>=
=C2=A0 =C2=A0 The server can easily use a different hostname (and different=
 TLS certificates) for HTTP vs WebTransport and clients will not pool the t=
wo together.</div><div>=C2=A0 =C2=A0 Once you use different domain names pe=
r WebTransport object, Http3Transport=C2=A0has the exact same pooling prope=
rties as QuicTransport.</div><div>=C2=A0 =C2=A0 Please reply here if you kn=
ow of complexities I&#39;m not seeing<br></div></div></blockquote><div><br>=
</div><div>I think pooling is optional to both the client and server, regar=
dless of the protocol that we choose. That was the case for websockets unti=
l RFC 8441 was standardized, and even after that, endpoints have the option=
 to use dedicated connection.<br></div><div><br> </div><div>[1] <a href=3D"=
https://httpwg.org/http-core/draft-ietf-httpbis-semantics-latest.html" targ=
et=3D"_blank">https://httpwg.org/http-core/draft-ietf-httpbis-semantics-lat=
est.html</a></div><div><br></div><blockquote class=3D"gmail_quote" style=3D=
"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le=
ft:1ex"><div dir=3D"ltr"><div></div><div><br></div><div>What am I missing?<=
/div><div><br></div><div>Thanks,</div><div>David</div><div><br></div></div>=
<br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon=
, Nov 16, 2020 at 4:45 PM Ian Swett &lt;<a href=3D"mailto:ianswett@google.c=
om" target=3D"_blank">ianswett@google.com</a>&gt; wrote:<br></div><blockquo=
te class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px =
solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">I&#39;m <b>very</=
b> concerned about any functionality that <b>requires</b> pooling.=C2=A0 Po=
oling is a client-specific optimization and pooling policy is subject to ch=
ange(within reason) at any time.=C2=A0 If applications=C2=A0are saying &quo=
t;it&#39;d be cool if we could share congestion control and loss recovery s=
tate between H3 and WebTransport most of the time&quot;, then I can see the=
re being real(albeit small) benefits, just like there would be for putting =
DataChannels and RTP into one QUIC connection for WebRTC.=C2=A0 If people a=
re intending to rely on pooling so an HTTP(hopefully H3) request can trigge=
r a WebTransport response, I think we&#39;re in a world of pain and over-op=
timization.<div><br></div><div>This is more obvious in light of the fact th=
at a WebTransport endpoint=C2=A0is likely not a generic CDN endpoint, as ha=
s been clearly stated by Mark Nottingham.<br><div><br></div><div>Bernard&#3=
9;s comments above point to a tighter coupling between HTTP/3 and WebTransp=
ort than I think is practical in production, unless I misunderstood(which I=
 may have, it&#39;s been a long day).</div><div><br></div><div>All of this =
makes me think we should punt the HTTP based WebTransport options down the =
road a year or so and focus on QuicTransport=C2=A0initially.=C2=A0 It&#39;s=
 not to say we won&#39;t do them, but they&#39;re clearly more complex than=
=C2=A0QuicTransport=C2=A0and it&#39;d be good to have real deployment exper=
ience prior to starting so we know what the requirements are and where the =
dragons are lurking.=C2=A0 Also, the W3C should design APIs that make it ea=
sy to detect failure to establish a QUIC-based=C2=A0WebTransport, and this =
ensures those are well exercised.=C2=A0 Maybe we DO require pooling under c=
ertain conditions and describe those, but there are likely privacy concerns=
 under some circumstances and I&#39;m not enough of an expert to know what =
would be acceptable to all clients.</div><div><br></div><div>Some=C2=A0peop=
le in the WG may think we have to release a TCP based WebTransport at the s=
ame time as a QUIC based one, but I don&#39;t think that&#39;s true and eve=
n if we standardized them at the same time, it doesn&#39;t mean both will a=
chieve wide deployment at the same time.=C2=A0 As I said at the mic, I don&=
#39;t see any reason YouTube would deploy a TCP based WebTransport given it=
 will have to maintain an HTTP/1.1 option for basically forever and they&#3=
9;ve spent a good bit of effort to make sure that works as well as it can.=
=C2=A0 It&#39;s clear to me there are compelling use cases right now for Qu=
icTransport, but=C2=A0the driving use cases for the fallback are not clear =
to me.=C2=A0 Consistency is intellectually appealing, but doesn&#39;t drive=
 deployments.</div></div><div><br></div><div>Ian</div></div><br><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020=
 at 6:36 PM Bernard Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com" ta=
rget=3D"_blank">bernard.aboba@gmail.com</a>&gt; wrote:<br></div><blockquote=
 class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px so=
lid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><d=
iv dir=3D"ltr">David said:=C2=A0<div><br></div><div>&quot;Where does this c=
ome from? A lot of QUIC servers are implementing QUIC datagrams, and once y=
ou have those the delta with h3 datagrams is negligible. Additionally, mult=
iple h3 server implementers=C2=A0have indicated they want to support WebTra=
nsport. It&#39;s starting to feel like the pushback on HTTP3Transport=C2=A0=
is purely based on a perception of complexity from folks who haven&#39;t tr=
ied to implement it? If that&#39;s the case, then we should get some implem=
entation experience to confirm or debunk that theory.&quot;</div><div><br><=
/div><div>[BA] The pooling use cases often involve an interaction between a=
n HTTP/3 request/response and WebTransport.=C2=A0 so the HTTP/3 Request doe=
sn&#39;t just elicit an HTTP/3 Response.=C2=A0 It also causes something els=
e to happen, something that isn&#39;t specified in the HTTP/3 protocol, suc=
h as eliciting a datagram flow or bi/unidirectional stream from the server.=
=C2=A0 This is what is contemplated in several of the &quot;Live Event&quot=
; use cases, where the HTTP/3 Request/Response would be requesting the desi=
red Event. The major advantage over HLS is avoiding Head-of-Line blocking, =
reducing video freezes and stalls.=C2=A0 So developers understand the value=
 that support for datagrams and server-initiated streams can provide - the =
question is whether they&#39;ll have all the interoperable pieces in place =
to deploy it.=C2=A0 </div><div><br></div><div>Just because a generic HTTP/3=
 server supports QUIC and WebTransport, doesn&#39;t mean that it will suppo=
rt these use cases.=C2=A0 I&#39;ve been asked whether better interoperabili=
ty and wider ecosystem support could be achieved by extending HTTP/3 in a w=
ay more in keeping with the existing protocol design - such as by allowing =
an HTTP/3 Request to specify a resource to be returned in a flow of datagra=
ms.=C2=A0</div><div><br></div><div>The situation might be more tenable if t=
he node.js framework had HTTP/3 and QUIC modules on the horizon.<br></div><=
/div></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"g=
mail_attr">On Mon, Nov 16, 2020 at 1:00 PM David Schinazi &lt;<a href=3D"ma=
ilto:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmail.com</=
a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0p=
x 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><d=
iv dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote"><d=
iv dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 12:40 PM Bernar=
d Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com" target=3D"_blank">be=
rnard.aboba@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_qu=
ote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,20=
4);padding-left:1ex"><div dir=3D"ltr">Luke said:=C2=A0<div><br></div><div>&=
quot;<span style=3D"color:rgb(80,0,80)">My primary concern is that Http3Tra=
nsport requires non-generic modifications to the HTTP/3 layer mostly to sup=
port connection pooling. I&#39;m worried that this will limit support for H=
ttp3Transport and complicates any HTTP/3 implementation that does support i=
t.</span>&quot;</div><div><br></div><div>[BA] I have also heard this concer=
n from developers. The concerns primarily arise from the pooling of HTTP/3 =
Request/Responses with WebTransport. This does enable some interesting use =
cases, such as a Request/Response (e.g. gRPC) that can result in a server s=
ending datagrams or initiating bi-directional or uni-directional streams.=
=C2=A0 So there is perceived value, but the question is whether that value =
will be widely supported across the HTTP/3 ecosystem.=C2=A0</div><div><br><=
/div><div>At this point, most generic HTTP/3 servers are not expected to su=
pport HTTP/3 datagrams (not part of the HTTP/3 protocol) or Http3Transport =
(perceived as a niche protocol), so that pooling would only be possible whe=
n using a framework.=C2=A0 node.js will not have=C2=A0QUIC support for 12-1=
8 months (held up by OpenSSL) so even framework support is expected to be l=
imited.</div></div></blockquote><div><br></div><div>Where does this come fr=
om? A lot of QUIC servers are implementing QUIC datagrams, and once you hav=
e those the delta with h3 datagrams is negligible. Additionally, multiple h=
3 server implementers=C2=A0have indicated they want to support WebTransport=
. It&#39;s starting to feel like the pushback on HTTP3Transport=C2=A0is pur=
ely based on a perception of complexity from folks who haven&#39;t tried to=
 implement it? If that&#39;s the case, then we should get some implementati=
on experience to confirm or debunk that theory.</div><div>=C2=A0</div><bloc=
kquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:=
1px solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"><di=
v dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:37 AM David S=
chinazi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_blank">d=
schinazi.ietf@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_=
quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,=
204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div=
 class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16=
, 2020 at 11:34 AM Luke Curley &lt;<a href=3D"mailto:kixelated@gmail.com" t=
arget=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid=
 rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">We&#39;re on the same =
page that there&#39;s code in HTTP/3 that could be leveraged for QuicTransp=
ort in the form of the header parsing. I think there&#39;s a path to merge =
QuicTransport and Http3Transport by leveraging HTTP/3 for the handshake and=
 QUIC for stream delivery.<div><br></div><div>My primary concern is that Ht=
tp3Transport requires non-generic modifications to the HTTP/3 layer mostly =
to support connection pooling. I&#39;m worried that this will limit support=
 for Http3Transport and complicates any HTTP/3 implementation that does sup=
port it.</div></div></blockquote><div><br></div><div>Hi Luke,</div><div><br=
></div><div>I&#39;m curious, could you elaborate on what these &quot;non-ge=
neric modifications to the HTTP/3 layer&quot; are please?</div><div><br></d=
iv><div>Thanks,</div><div>David</div><div>=C2=A0</div><blockquote class=3D"=
gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20=
4,204,204);padding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" cl=
ass=3D"gmail_attr">On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue &lt;<a href=
=3D"mailto:lucaspardue.24.7@gmail.com" target=3D"_blank">lucaspardue.24.7@g=
mail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D=
"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le=
ft:1ex"><div dir=3D"auto"><div>Hi Luke,</div><div dir=3D"auto"><br><div cla=
ss=3D"gmail_quote" dir=3D"auto"><div dir=3D"ltr" class=3D"gmail_attr">On Mo=
n, 16 Nov 2020, 12:26 Luke Curley, &lt;<a href=3D"mailto:kixelated@gmail.co=
m" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquot=
e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s=
olid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Just to clari=
fy, when I say &quot;QuicTransport is simpler&quot; I really mean &quot;Qui=
cTransport has greater interoperability&quot;. You can take any QUIC implem=
entation (+ datagram extension) and add a thin layer to support QuicTranspo=
rt. It&#39;s a nice layering of protocols and it&#39;s something that I wan=
t to see in general as QUIC replaces TCP.</div></div></blockquote></div></d=
iv><div dir=3D"auto"><br></div><div dir=3D"auto">Thanks for the clarificati=
on. I appreciate the sentiment. But given the development of QUIC its kind =
of surprising that people would find it easier to identify an implementatio=
n that supports QUIC and datagram but does not support HTTP/3.</div><div di=
r=3D"auto"><br></div><div dir=3D"auto">Thr situation for a more clean-room =
implementation is different, I agree. However, by the time you&#39;ve done =
all the hard stuff with QUIC, a very focused HTTP/3 layer ends up quite thi=
n too. You can ignore dynamic compression, server push and extensibility po=
ints.</div><div dir=3D"auto"><br></div><div dir=3D"auto">I also see the cur=
rent design being the thin end of the wedge. The proposal I linked talks ab=
out HTTP-like header parsing. So its &quot;just&quot; a thin layer to do so=
me parsing. Then folks will probably want some want to tweak parameter, aco=
ntrol channel, a way to do graceful close, a sprinkle of GREASE. To extrapo=
late forward, what would be the delta be between some final product QuicTra=
nsport and HTTP/3. Too small a delta and we&#39;ve wasted years of effort.<=
/div><div dir=3D"auto"><br></div><div dir=3D"auto">Cheers</div><div dir=3D"=
auto">Lucas</div><div dir=3D"auto"><br></div><div dir=3D"auto"><br></div><d=
iv dir=3D"auto"><div class=3D"gmail_quote" dir=3D"auto"><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex"><br><div class=3D"gmail_quote"><div dir=3D=
"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue &lt=
;<a href=3D"mailto:lucaspardue.24.7@gmail.com" rel=3D"noreferrer" target=3D=
"_blank">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Hi folks,</div><di=
v><br></div><div>To follow up on one thread of discussion during IETF 109. =
To over simplify what we&#39;ve heard a few folks say, they prefer QuicTran=
sport because it simpler and they don&#39;t need pooling.</div><div><br></d=
iv><div>I&#39;d like to push more on this, what is the measurable complexit=
y of HTTP/3 over QUIC plus a new application mapping that needs to be defin=
ed? Let&#39;s isolate pooling as a variable and ignore it.</div><div><br></=
div><div>Victor mentioned his proposal for a unified header semantic across=
 all transports, this is <a href=3D"https://github.com/ietf-wg-webtrans/dra=
ft-ietf-webtrans-overview/pull/4/files" rel=3D"noreferrer" target=3D"_blank=
">https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/f=
iles</a>. Taking a closer look at it, I have some concerns that I added as =
comments.  HTTP has semantics for a reason. If QuicTransport is going to st=
art borrowing HTTP piecemeal, I really wonder how simple people might feel =
it is. I think it&#39;s important to avoid something that looks like HTTP b=
ut behaves differently. Is it really much of a stretch to just do HTTP/3 bu=
t give it a different ALPN so that we avoid problems related to cross-proto=
col pooling?</div><div><br></div><div>Cheers,</div><div>Lucas<br></div></di=
v>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div><br clear=3D"all"><br>-- <br><div dir=3D"ltr">Kazuho Oku=
</div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>

--000000000000161ada05b449a063--


From nobody Tue Nov 17 00:58:41 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1B9D33A0A20 for <webtransport@ietfa.amsl.com>; Tue, 17 Nov 2020 00:58:39 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 Srq5_QfQkIgj for <webtransport@ietfa.amsl.com>; Tue, 17 Nov 2020 00:58:36 -0800 (PST)
Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com [IPv6:2a00:1450:4864:20::129]) (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 A7E1C3A0A1F for <webtransport@ietf.org>; Tue, 17 Nov 2020 00:58:35 -0800 (PST)
Received: by mail-lf1-x129.google.com with SMTP id j205so29059545lfj.6 for <webtransport@ietf.org>; Tue, 17 Nov 2020 00:58:35 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=jmwxSmpXlXF4IXs6xnRR1rCMY3sM9jXw3owJq2Dd4lU=; b=cRzuBZq3AWh5qHWV/Uumiiq9ftJTCpjJ5EmgQSJWKi3aCRJC7klIDX9ZkpuSANxUKP bMvSQzo5FHEFSmgyQbAnXvjHB92Ii44UzeSJ0Buf7RFV8lKNKbpjhECvN9NtniU3ob0O xsqhFnG2bedfGywln9cpvoJNOfofcPKopvGu8/3hF2zJXowkr6kxTby78Am7cqGd8e3T KAyHt0S1idRaB1GAxZvfzeLrtT/udsJPh1vqrTijfBymB1jPddLnc8H9VBXfbHecnrsq U3dD6EoNmyBedpFXAKkwjnssu/MluFSPd0NFw4cAL3COxg4MzGT1BhCHjDHrlSlqzIa0 nGnQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=jmwxSmpXlXF4IXs6xnRR1rCMY3sM9jXw3owJq2Dd4lU=; b=IcN3dVcOvDrz1UkfVMzMdwp7QWzk8T3B3PPZuh8GtIU5njPXApwKSyOFBQ8g1qprdb qqDJCN8wMHtD7nLd+NwfLvyVSXqak6mz9syVtmQhIuoyXS7dBQQcDXA31ZoMKdiszMos nOIxglO+Jkp5HsFfiYqjF81DNGIDi655pXr0jhvZ208P7qCOGJR5JbyrE7+qesfwxX6R 2hqffl8CsqLBZO6aR2HqBCK5qwJzIe3bxjpTydm5wTCN5I4IVPq8vm+SCPYMCDIjbWl8 /eVIvhnZInsla+wuTlwkT17IXau0kgxaDx46Y1TfGjYAiS8Li0GbwAT6Hhlvl04J7svh W5CA==
X-Gm-Message-State: AOAM531PVgbpKZ83zp6kRVHS762CxPQBG+pytsSnZYS3YXLS3xRkz440 qpUvdmIGwlz0l+qqySZl9uQ73Fvey5z01dVcaF4=
X-Google-Smtp-Source: ABdhPJwd4zYC0hT99UNYpPo4+MhJvASEf5sOUytNE/GGQeyefC/ekQHYYdW685vMW8envJtGEnuSaUAUZju1/L7ldM4=
X-Received: by 2002:a19:88c:: with SMTP id 134mr1240371lfi.560.1605603513723;  Tue, 17 Nov 2020 00:58:33 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com> <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com> <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com> <CAOW+2dsVSTcvYsKB7XB7GJy6eo4sTr70LJcKWtoQ1KLhVKpmOA@mail.gmail.com> <CAKcm_gPUfBUVz8Kh-jbHeUDCOAfF6FsjLHYsF6aZDgbCkMUw8Q@mail.gmail.com>
In-Reply-To: <CAKcm_gPUfBUVz8Kh-jbHeUDCOAfF6FsjLHYsF6aZDgbCkMUw8Q@mail.gmail.com>
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Tue, 17 Nov 2020 00:58:23 -0800
Message-ID: <CAOW+2dvNCGVXHT0WsR2pqKPXVboUhNx3CL9Q6d8mCfUw=7StCA@mail.gmail.com>
To: Ian Swett <ianswett@google.com>
Cc: David Schinazi <dschinazi.ietf@gmail.com>, WebTransport <webtransport@ietf.org>,  Luke Curley <kixelated@gmail.com>, Lucas Pardue <lucaspardue.24.7@gmail.com>
Content-Type: multipart/alternative; boundary="00000000000015ee6805b449b37c"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/dVEnLNBIton5cfHSa9eGropqBic>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2020 08:58:39 -0000

--00000000000015ee6805b449b37c
Content-Type: text/plain; charset="UTF-8"

Ian said:

"If people are intending to rely on pooling so an HTTP(hopefully H3)
request can trigger a WebTransport response, I think we're in a world of
pain and over-optimization. This is more obvious in light of the fact that
a WebTransport endpoint is likely not a generic CDN endpoint, as has been
clearly stated by Mark Nottingham.

Bernard's comments above point to a tighter coupling between HTTP/3 and
WebTransport than I think is practical in production, unless I
misunderstood(which I may have, it's been a long day)."

[BA] The developers I have talked to (about the "event streaming" use
case) have exactly this concern - that a tight coupling between HTTP/3 and
Http3Transport would be potentially brittle and non-interoperable.
QuicTransport offers the same potential benefits (avoidance of HoL
blocking, ability to mix reliable request/response with datagrams), but
because it is simpler there are a wider range of tools available and
interop risks seem lower. Only perceived downside is the amount of cloud
infrastructure (e.g. load balancing, caching, etc.) they would need to
build themselves.

"As I said at the mic, I don't see any reason YouTube would deploy a TCP
based WebTransport given it will have to maintain an HTTP/1.1 option for
basically forever and they've spent a good bit of effort to make sure that
works as well as it can."

[BA] I have heard similar things with respect to "fallback" from
developers. From their perspective, it is ideally something very solid and
widely deployed, not itself a new(er) technology.  Depending on the use
case, the "fallback" was often the technology that they were already using,
which they hoped that QuicTransport could eventually replace.  But
since the fallback technology was the current incumbent, there was little
interest in introducing a new fallback technology (HTTP/2) and a new
incumbent (QuicTransport) at the same time. That was considered to be
unnecessary risk.

On Mon, Nov 16, 2020 at 4:45 PM Ian Swett <ianswett@google.com> wrote:

> I'm *very* concerned about any functionality that *requires* pooling.
> Pooling is a client-specific optimization and pooling policy is subject to
> change(within reason) at any time.  If applications are saying "it'd be
> cool if we could share congestion control and loss recovery state between
> H3 and WebTransport most of the time", then I can see there being
> real(albeit small) benefits, just like there would be for putting
> DataChannels and RTP into one QUIC connection for WebRTC.  If people are
> intending to rely on pooling so an HTTP(hopefully H3) request can trigger a
> WebTransport response, I think we're in a world of pain and
> over-optimization.
>
> This is more obvious in light of the fact that a WebTransport endpoint is
> likely not a generic CDN endpoint, as has been clearly stated by Mark
> Nottingham.
>
> Bernard's comments above point to a tighter coupling between HTTP/3 and
> WebTransport than I think is practical in production, unless I
> misunderstood(which I may have, it's been a long day).
>
> All of this makes me think we should punt the HTTP based WebTransport
> options down the road a year or so and focus on QuicTransport initially.
> It's not to say we won't do them, but they're clearly more complex
> than QuicTransport and it'd be good to have real deployment experience
> prior to starting so we know what the requirements are and where the
> dragons are lurking.  Also, the W3C should design APIs that make it easy to
> detect failure to establish a QUIC-based WebTransport, and this ensures
> those are well exercised.  Maybe we DO require pooling under certain
> conditions and describe those, but there are likely privacy concerns under
> some circumstances and I'm not enough of an expert to know what would be
> acceptable to all clients.
>
> Some people in the WG may think we have to release a TCP based
> WebTransport at the same time as a QUIC based one, but I don't think that's
> true and even if we standardized them at the same time, it doesn't mean
> both will achieve wide deployment at the same time.  As I said at the mic,
> I don't see any reason YouTube would deploy a TCP based WebTransport given
> it will have to maintain an HTTP/1.1 option for basically forever and
> they've spent a good bit of effort to make sure that works as well as it
> can.  It's clear to me there are compelling use cases right now for
> QuicTransport, but the driving use cases for the fallback are not clear to
> me.  Consistency is intellectually appealing, but doesn't drive deployments.
>
> Ian
>
> On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba <bernard.aboba@gmail.com>
> wrote:
>
>> David said:
>>
>> "Where does this come from? A lot of QUIC servers are implementing QUIC
>> datagrams, and once you have those the delta with h3 datagrams is
>> negligible. Additionally, multiple h3 server implementers have indicated
>> they want to support WebTransport. It's starting to feel like the pushback
>> on HTTP3Transport is purely based on a perception of complexity from folks
>> who haven't tried to implement it? If that's the case, then we should get
>> some implementation experience to confirm or debunk that theory."
>>
>> [BA] The pooling use cases often involve an interaction between an HTTP/3
>> request/response and WebTransport.  so the HTTP/3 Request doesn't just
>> elicit an HTTP/3 Response.  It also causes something else to happen,
>> something that isn't specified in the HTTP/3 protocol, such as eliciting a
>> datagram flow or bi/unidirectional stream from the server.  This is what is
>> contemplated in several of the "Live Event" use cases, where the HTTP/3
>> Request/Response would be requesting the desired Event. The major advantage
>> over HLS is avoiding Head-of-Line blocking, reducing video freezes and
>> stalls.  So developers understand the value that support for datagrams and
>> server-initiated streams can provide - the question is whether they'll have
>> all the interoperable pieces in place to deploy it.
>>
>> Just because a generic HTTP/3 server supports QUIC and WebTransport,
>> doesn't mean that it will support these use cases.  I've been asked whether
>> better interoperability and wider ecosystem support could be achieved by
>> extending HTTP/3 in a way more in keeping with the existing protocol design
>> - such as by allowing an HTTP/3 Request to specify a resource to be
>> returned in a flow of datagrams.
>>
>> The situation might be more tenable if the node.js framework had HTTP/3
>> and QUIC modules on the horizon.
>>
>> On Mon, Nov 16, 2020 at 1:00 PM David Schinazi <dschinazi.ietf@gmail.com>
>> wrote:
>>
>>>
>>>
>>> On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba <bernard.aboba@gmail.com>
>>> wrote:
>>>
>>>> Luke said:
>>>>
>>>> "My primary concern is that Http3Transport requires non-generic
>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>> worried that this will limit support for Http3Transport and complicates any
>>>> HTTP/3 implementation that does support it."
>>>>
>>>> [BA] I have also heard this concern from developers. The concerns
>>>> primarily arise from the pooling of HTTP/3 Request/Responses with
>>>> WebTransport. This does enable some interesting use cases, such as a
>>>> Request/Response (e.g. gRPC) that can result in a server sending datagrams
>>>> or initiating bi-directional or uni-directional streams.  So there is
>>>> perceived value, but the question is whether that value will be widely
>>>> supported across the HTTP/3 ecosystem.
>>>>
>>>> At this point, most generic HTTP/3 servers are not expected to support
>>>> HTTP/3 datagrams (not part of the HTTP/3 protocol) or Http3Transport
>>>> (perceived as a niche protocol), so that pooling would only be possible
>>>> when using a framework.  node.js will not have QUIC support for 12-18
>>>> months (held up by OpenSSL) so even framework support is expected to be
>>>> limited.
>>>>
>>>
>>> Where does this come from? A lot of QUIC servers are implementing QUIC
>>> datagrams, and once you have those the delta with h3 datagrams is
>>> negligible. Additionally, multiple h3 server implementers have indicated
>>> they want to support WebTransport. It's starting to feel like the pushback
>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>> who haven't tried to implement it? If that's the case, then we should get
>>> some implementation experience to confirm or debunk that theory.
>>>
>>>
>>>> On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <
>>>> dschinazi.ietf@gmail.com> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <kixelated@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> We're on the same page that there's code in HTTP/3 that could be
>>>>>> leveraged for QuicTransport in the form of the header parsing. I think
>>>>>> there's a path to merge QuicTransport and Http3Transport by leveraging
>>>>>> HTTP/3 for the handshake and QUIC for stream delivery.
>>>>>>
>>>>>> My primary concern is that Http3Transport requires non-generic
>>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>>> HTTP/3 implementation that does support it.
>>>>>>
>>>>>
>>>>> Hi Luke,
>>>>>
>>>>> I'm curious, could you elaborate on what these "non-generic
>>>>> modifications to the HTTP/3 layer" are please?
>>>>>
>>>>> Thanks,
>>>>> David
>>>>>
>>>>>
>>>>>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <
>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>
>>>>>>> Hi Luke,
>>>>>>>
>>>>>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com> wrote:
>>>>>>>
>>>>>>>> Just to clarify, when I say "QuicTransport is simpler" I really
>>>>>>>> mean "QuicTransport has greater interoperability". You can take any QUIC
>>>>>>>> implementation (+ datagram extension) and add a thin layer to support
>>>>>>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>>>>>>> want to see in general as QUIC replaces TCP.
>>>>>>>>
>>>>>>>
>>>>>>> Thanks for the clarification. I appreciate the sentiment. But given
>>>>>>> the development of QUIC its kind of surprising that people would find it
>>>>>>> easier to identify an implementation that supports QUIC and datagram but
>>>>>>> does not support HTTP/3.
>>>>>>>
>>>>>>> Thr situation for a more clean-room implementation is different, I
>>>>>>> agree. However, by the time you've done all the hard stuff with QUIC, a
>>>>>>> very focused HTTP/3 layer ends up quite thin too. You can ignore dynamic
>>>>>>> compression, server push and extensibility points.
>>>>>>>
>>>>>>> I also see the current design being the thin end of the wedge. The
>>>>>>> proposal I linked talks about HTTP-like header parsing. So its "just" a
>>>>>>> thin layer to do some parsing. Then folks will probably want some want to
>>>>>>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>>>>>>> of GREASE. To extrapolate forward, what would be the delta be between some
>>>>>>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>>>>>>> years of effort.
>>>>>>>
>>>>>>> Cheers
>>>>>>> Lucas
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Hi folks,
>>>>>>>>>
>>>>>>>>> To follow up on one thread of discussion during IETF 109. To over
>>>>>>>>> simplify what we've heard a few folks say, they prefer QuicTransport
>>>>>>>>> because it simpler and they don't need pooling.
>>>>>>>>>
>>>>>>>>> I'd like to push more on this, what is the measurable complexity
>>>>>>>>> of HTTP/3 over QUIC plus a new application mapping that needs to be
>>>>>>>>> defined? Let's isolate pooling as a variable and ignore it.
>>>>>>>>>
>>>>>>>>> Victor mentioned his proposal for a unified header semantic across
>>>>>>>>> all transports, this is
>>>>>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>>>>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>>>>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>>>>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>>>>>>> is. I think it's important to avoid something that looks like HTTP but
>>>>>>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>>>>>>> give it a different ALPN so that we avoid problems related to
>>>>>>>>> cross-protocol pooling?
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>> Lucas
>>>>>>>>> --
>>>>>>>>> Webtransport mailing list
>>>>>>>>> Webtransport@ietf.org
>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>
>>>>>>>> --
>>>>>> Webtransport mailing list
>>>>>> Webtransport@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>
>>>>> --
>>>>> Webtransport mailing list
>>>>> Webtransport@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>
>>>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
>

--00000000000015ee6805b449b37c
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Ian said:=C2=A0<div><br></div><div>&quot;If people are int=
ending to rely on pooling so an HTTP(hopefully H3) request can trigger a We=
bTransport response, I think we&#39;re in a world of pain and over-optimiza=
tion. This is more obvious in light of the fact that a WebTransport endpoin=
t=C2=A0is likely not a generic CDN endpoint, as has been clearly stated by =
Mark Nottingham.</div><div><div><br></div><div>Bernard&#39;s comments above=
 point to a tighter coupling between HTTP/3 and WebTransport than I think i=
s practical in production, unless I misunderstood(which I may have, it&#39;=
s been a long day).&quot;</div><div><br></div><div>[BA] The developers I ha=
ve talked to (about the &quot;event streaming&quot; use case)=C2=A0have=C2=
=A0exactly this concern - that a tight coupling between HTTP/3 and Http3Tra=
nsport would be potentially brittle and non-interoperable. QuicTransport of=
fers the same potential benefits (avoidance of HoL blocking, ability to mix=
 reliable request/response with datagrams), but because it is simpler there=
 are a wider range of tools available and interop risks seem lower. Only pe=
rceived downside is the amount of cloud infrastructure (e.g. load balancing=
, caching, etc.) they would need to build themselves.=C2=A0</div><div><br><=
/div><div>&quot;As I said at the mic, I don&#39;t see any reason YouTube wo=
uld deploy a TCP based WebTransport given it will have to maintain an HTTP/=
1.1 option for basically forever and they&#39;ve spent a good bit of effort=
 to make sure that works as well as it can.&quot;</div><div><br></div><div>=
[BA] I have heard similar things with respect to &quot;fallback&quot; from =
developers. From their perspective, it is ideally=C2=A0something very solid=
 and widely deployed, not itself a new(er) technology.=C2=A0 Depending on t=
he use case, the &quot;fallback&quot; was often the technology that they we=
re already using, which they hoped that QuicTransport could eventually repl=
ace.=C2=A0 But since=C2=A0the=C2=A0fallback technology was the current incu=
mbent, there was little interest in introducing a new fallback technology (=
HTTP/2) and a new incumbent (QuicTransport) at the same time. That was cons=
idered to be unnecessary risk.=C2=A0</div></div></div><br><div class=3D"gma=
il_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 4:4=
5 PM Ian Swett &lt;<a href=3D"mailto:ianswett@google.com">ianswett@google.c=
om</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margi=
n:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex=
"><div dir=3D"ltr">I&#39;m <b>very</b> concerned about any functionality th=
at <b>requires</b> pooling.=C2=A0 Pooling is a client-specific optimization=
 and pooling policy is subject to change(within reason) at any time.=C2=A0 =
If applications=C2=A0are saying &quot;it&#39;d be cool if we could share co=
ngestion control and loss recovery state between H3 and WebTransport most o=
f the time&quot;, then I can see there being real(albeit small) benefits, j=
ust like there would be for putting DataChannels and RTP into one QUIC conn=
ection for WebRTC.=C2=A0 If people are intending to rely on pooling so an H=
TTP(hopefully H3) request can trigger a WebTransport response, I think we&#=
39;re in a world of pain and over-optimization.<div><br></div><div>This is =
more obvious in light of the fact that a WebTransport endpoint=C2=A0is like=
ly not a generic CDN endpoint, as has been clearly stated by Mark Nottingha=
m.<br><div><br></div><div>Bernard&#39;s comments above point to a tighter c=
oupling between HTTP/3 and WebTransport than I think is practical in produc=
tion, unless I misunderstood(which I may have, it&#39;s been a long day).</=
div><div><br></div><div>All of this makes me think we should punt the HTTP =
based WebTransport options down the road a year or so and focus on QuicTran=
sport=C2=A0initially.=C2=A0 It&#39;s not to say we won&#39;t do them, but t=
hey&#39;re clearly more complex than=C2=A0QuicTransport=C2=A0and it&#39;d b=
e good to have real deployment experience prior to starting so we know what=
 the requirements are and where the dragons are lurking.=C2=A0 Also, the W3=
C should design APIs that make it easy to detect failure to establish a QUI=
C-based=C2=A0WebTransport, and this ensures those are well exercised.=C2=A0=
 Maybe we DO require pooling under certain conditions and describe those, b=
ut there are likely privacy concerns under some circumstances and I&#39;m n=
ot enough of an expert to know what would be acceptable to all clients.</di=
v><div><br></div><div>Some=C2=A0people in the WG may think we have to relea=
se a TCP based WebTransport at the same time as a QUIC based one, but I don=
&#39;t think that&#39;s true and even if we standardized them at the same t=
ime, it doesn&#39;t mean both will achieve wide deployment at the same time=
.=C2=A0 As I said at the mic, I don&#39;t see any reason YouTube would depl=
oy a TCP based WebTransport given it will have to maintain an HTTP/1.1 opti=
on for basically forever and they&#39;ve spent a good bit of effort to make=
 sure that works as well as it can.=C2=A0 It&#39;s clear to me there are co=
mpelling use cases right now for QuicTransport, but=C2=A0the driving use ca=
ses for the fallback are not clear to me.=C2=A0 Consistency is intellectual=
ly appealing, but doesn&#39;t drive deployments.</div></div><div><br></div>=
<div>Ian</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=
=3D"gmail_attr">On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba &lt;<a href=
=3D"mailto:bernard.aboba@gmail.com" target=3D"_blank">bernard.aboba@gmail.c=
om</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margi=
n:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex=
"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">David said:=C2=A0<div>=
<br></div><div>&quot;Where does this come from? A lot of QUIC servers are i=
mplementing QUIC datagrams, and once you have those the delta with h3 datag=
rams is negligible. Additionally, multiple h3 server implementers=C2=A0have=
 indicated they want to support WebTransport. It&#39;s starting to feel lik=
e the pushback on HTTP3Transport=C2=A0is purely based on a perception of co=
mplexity from folks who haven&#39;t tried to implement it? If that&#39;s th=
e case, then we should get some implementation experience to confirm or deb=
unk that theory.&quot;</div><div><br></div><div>[BA] The pooling use cases =
often involve an interaction between an HTTP/3 request/response and WebTran=
sport.=C2=A0 so the HTTP/3 Request doesn&#39;t just elicit an HTTP/3 Respon=
se.=C2=A0 It also causes something else to happen, something that isn&#39;t=
 specified in the HTTP/3 protocol, such as eliciting a datagram flow or bi/=
unidirectional stream from the server.=C2=A0 This is what is contemplated i=
n several of the &quot;Live Event&quot; use cases, where the HTTP/3 Request=
/Response would be requesting the desired Event. The major advantage over H=
LS is avoiding Head-of-Line blocking, reducing video freezes and stalls.=C2=
=A0 So developers understand the value that support for datagrams and serve=
r-initiated streams can provide - the question is whether they&#39;ll have =
all the interoperable pieces in place to deploy it.=C2=A0 </div><div><br></=
div><div>Just because a generic HTTP/3 server supports QUIC and WebTranspor=
t, doesn&#39;t mean that it will support these use cases.=C2=A0 I&#39;ve be=
en asked whether better interoperability and wider ecosystem support could =
be achieved by extending HTTP/3 in a way more in keeping with the existing =
protocol design - such as by allowing an HTTP/3 Request to specify a resour=
ce to be returned in a flow of datagrams.=C2=A0</div><div><br></div><div>Th=
e situation might be more tenable if the node.js framework had HTTP/3 and Q=
UIC modules on the horizon.<br></div></div></div></div><br><div class=3D"gm=
ail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 1:=
00 PM David Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com" target=
=3D"_blank">dschinazi.ietf@gmail.com</a>&gt; wrote:<br></div><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid=
 rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br><=
/div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">O=
n Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba &lt;<a href=3D"mailto:bernard=
.aboba@gmail.com" target=3D"_blank">bernard.aboba@gmail.com</a>&gt; wrote:<=
br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8e=
x;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"=
>Luke said:=C2=A0<div><br></div><div>&quot;<span style=3D"color:rgb(80,0,80=
)">My primary concern is that Http3Transport requires non-generic modificat=
ions to the HTTP/3 layer mostly to support connection pooling. I&#39;m worr=
ied that this will limit support for Http3Transport and complicates any HTT=
P/3 implementation that does support it.</span>&quot;</div><div><br></div><=
div>[BA] I have also heard this concern from developers. The concerns prima=
rily arise from the pooling of HTTP/3 Request/Responses with WebTransport. =
This does enable some interesting use cases, such as a Request/Response (e.=
g. gRPC) that can result in a server sending datagrams or initiating bi-dir=
ectional or uni-directional streams.=C2=A0 So there is perceived value, but=
 the question is whether that value will be widely supported across the HTT=
P/3 ecosystem.=C2=A0</div><div><br></div><div>At this point, most generic H=
TTP/3 servers are not expected to support HTTP/3 datagrams (not part of the=
 HTTP/3 protocol) or Http3Transport (perceived as a niche protocol), so tha=
t pooling would only be possible when using a framework.=C2=A0 node.js will=
 not have=C2=A0QUIC support for 12-18 months (held up by OpenSSL) so even f=
ramework support is expected to be limited.</div></div></blockquote><div><b=
r></div><div>Where does this come from? A lot of QUIC servers are implement=
ing QUIC datagrams, and once you have those the delta with h3 datagrams is =
negligible. Additionally, multiple h3 server implementers=C2=A0have indicat=
ed they want to support WebTransport. It&#39;s starting to feel like the pu=
shback on HTTP3Transport=C2=A0is purely based on a perception of complexity=
 from folks who haven&#39;t tried to implement it? If that&#39;s the case, =
then we should get some implementation experience to confirm or debunk that=
 theory.</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"m=
argin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left=
:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On M=
on, Nov 16, 2020 at 11:37 AM David Schinazi &lt;<a href=3D"mailto:dschinazi=
.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmail.com</a>&gt; wrote:<=
br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8e=
x;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"=
><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote"><div dir=3D"ltr"=
 class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:34 AM Luke Curley &lt;<a h=
ref=3D"mailto:kixelated@gmail.com" target=3D"_blank">kixelated@gmail.com</a=
>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px=
 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><di=
v dir=3D"ltr">We&#39;re on the same page that there&#39;s code in HTTP/3 th=
at could be leveraged for QuicTransport in the form of the header parsing. =
I think there&#39;s a path to merge QuicTransport and Http3Transport by lev=
eraging HTTP/3 for the handshake and QUIC for stream delivery.<div><br></di=
v><div>My primary concern is that Http3Transport requires non-generic modif=
ications to the HTTP/3 layer mostly to support connection pooling. I&#39;m =
worried that this will limit support for Http3Transport and complicates any=
 HTTP/3 implementation that does support it.</div></div></blockquote><div><=
br></div><div>Hi Luke,</div><div><br></div><div>I&#39;m curious, could you =
elaborate on what these &quot;non-generic modifications to the HTTP/3 layer=
&quot; are please?</div><div><br></div><div>Thanks,</div><div>David</div><d=
iv>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p=
x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020=
 at 4:49 AM Lucas Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail.com" =
target=3D"_blank">lucaspardue.24.7@gmail.com</a>&gt; wrote:<br></div><block=
quote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1=
px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"auto"><div>Hi Luke,=
</div><div dir=3D"auto"><br><div class=3D"gmail_quote" dir=3D"auto"><div di=
r=3D"ltr" class=3D"gmail_attr">On Mon, 16 Nov 2020, 12:26 Luke Curley, &lt;=
<a href=3D"mailto:kixelated@gmail.com" target=3D"_blank">kixelated@gmail.co=
m</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin=
:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"=
><div dir=3D"ltr"><div>Just to clarify, when I say &quot;QuicTransport is s=
impler&quot; I really mean &quot;QuicTransport has greater interoperability=
&quot;. You can take any QUIC implementation (+ datagram extension) and add=
 a thin layer to support QuicTransport. It&#39;s a nice layering of protoco=
ls and it&#39;s something that I want to see in general as QUIC replaces TC=
P.</div></div></blockquote></div></div><div dir=3D"auto"><br></div><div dir=
=3D"auto">Thanks for the clarification. I appreciate the sentiment. But giv=
en the development of QUIC its kind of surprising that people would find it=
 easier to identify an implementation that supports QUIC and datagram but d=
oes not support HTTP/3.</div><div dir=3D"auto"><br></div><div dir=3D"auto">=
Thr situation for a more clean-room implementation is different, I agree. H=
owever, by the time you&#39;ve done all the hard stuff with QUIC, a very fo=
cused HTTP/3 layer ends up quite thin too. You can ignore dynamic compressi=
on, server push and extensibility points.</div><div dir=3D"auto"><br></div>=
<div dir=3D"auto">I also see the current design being the thin end of the w=
edge. The proposal I linked talks about HTTP-like header parsing. So its &q=
uot;just&quot; a thin layer to do some parsing. Then folks will probably wa=
nt some want to tweak parameter, acontrol channel, a way to do graceful clo=
se, a sprinkle of GREASE. To extrapolate forward, what would be the delta b=
e between some final product QuicTransport and HTTP/3. Too small a delta an=
d we&#39;ve wasted years of effort.</div><div dir=3D"auto"><br></div><div d=
ir=3D"auto">Cheers</div><div dir=3D"auto">Lucas</div><div dir=3D"auto"><br>=
</div><div dir=3D"auto"><br></div><div dir=3D"auto"><div class=3D"gmail_quo=
te" dir=3D"auto"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px =
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br><div=
 class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16=
, 2020 at 3:16 AM Lucas Pardue &lt;<a href=3D"mailto:lucaspardue.24.7@gmail=
.com" rel=3D"noreferrer" target=3D"_blank">lucaspardue.24.7@gmail.com</a>&g=
t; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p=
x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div d=
ir=3D"ltr"><div>Hi folks,</div><div><br></div><div>To follow up on one thre=
ad of discussion during IETF 109. To over simplify what we&#39;ve heard a f=
ew folks say, they prefer QuicTransport because it simpler and they don&#39=
;t need pooling.</div><div><br></div><div>I&#39;d like to push more on this=
, what is the measurable complexity of HTTP/3 over QUIC plus a new applicat=
ion mapping that needs to be defined? Let&#39;s isolate pooling as a variab=
le and ignore it.</div><div><br></div><div>Victor mentioned his proposal fo=
r a unified header semantic across all transports, this is <a href=3D"https=
://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files" r=
el=3D"noreferrer" target=3D"_blank">https://github.com/ietf-wg-webtrans/dra=
ft-ietf-webtrans-overview/pull/4/files</a>. Taking a closer look at it, I h=
ave some concerns that I added as comments.  HTTP has semantics for a reaso=
n. If QuicTransport is going to start borrowing HTTP piecemeal, I really wo=
nder how simple people might feel it is. I think it&#39;s important to avoi=
d something that looks like HTTP but behaves differently. Is it really much=
 of a stretch to just do HTTP/3 but give it a different ALPN so that we avo=
id problems related to cross-protocol pooling?</div><div><br></div><div>Che=
ers,</div><div>Lucas<br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div>

--00000000000015ee6805b449b37c--


From nobody Tue Nov 17 01:31:34 2020
Return-Path: <lucaspardue.24.7@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5C8523A0D7C for <webtransport@ietfa.amsl.com>; Tue, 17 Nov 2020 01:31:32 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.847
X-Spam-Level: 
X-Spam-Status: No, score=-1.847 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 5pcFizOhjJQd for <webtransport@ietfa.amsl.com>; Tue, 17 Nov 2020 01:31:27 -0800 (PST)
Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) (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 436253A0D73 for <webtransport@ietf.org>; Tue, 17 Nov 2020 01:31:27 -0800 (PST)
Received: by mail-ej1-x62e.google.com with SMTP id 7so28447559ejm.0 for <webtransport@ietf.org>; Tue, 17 Nov 2020 01:31:27 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=6UmXAIAaLkcvdGuWUhQgli1p07vg9nLhlx9mKqyd2M8=; b=Uy1G0THemrBhRNRf4+Zq3g3J6773oChqoZVg8gZJzH6QoHvLXOdRSM3h/6ss01QquZ 1LZKXMTF5SuCBVibmle87u+EiFtNlqEnWYzTCvK/rx/3AisTtYfIa9lhF0VURo6U6zUJ R0pWEn4kkI6KpCgIX++n151szR8/iJ72MO4Dg9daQjP+qyvDx8VTAOg+yDI/3yB2xU9Z ECRA+CI7I7V1oltYv0gi94O3nDYl2DUNHFhEJ8GNhjYqmWwNszNjtwb8Dk20UVyOeMfk QJ2DkPmAoF/mcl0TVRt6wrss1ELzKn1lr9uZm8ERSyTlbjIwfZNDfraaF3oeq9Pakzaf wizA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=6UmXAIAaLkcvdGuWUhQgli1p07vg9nLhlx9mKqyd2M8=; b=Ln3N3fdzCayqfjaSWXohMmnEWeIPvWfqmUoM3iD3L2gG37CQkbbPkU816sRRRX2Nxx H9CHIZZ/7yL5SvJKEVgzEQuwWTKFPLLOxXA2FMPyBquU+zCthuqLNYgH+A5Q8n4pzj2v jsuh4O8yr/zD+k1eco7cK55ETvKqPuGkkN9R61uZ08a/WHnAqrAXDwAb0NHilx+3zAiI BeUUzLDoxT8BDV+ypmbvVLQld+zcswL6S0wOiWLMp8P29RW1vYVMgENjs7bdQkOoPLIJ NWhDSXj3DdOeKcgP+sKf8tdUfxA/10QJpWnABi8hrAnZRqo5LQJOy52glaLu5Q8Bevi2 xcoQ==
X-Gm-Message-State: AOAM5333UfojsluvUthaJKKbKfNMQR5XIKas/9EoZfwlzvEBvi8MHESA CpJeFtUJGjferJI6xwXTcl9OcsAjqj5Dc/tfbZo=
X-Google-Smtp-Source: ABdhPJyCrHRJyzjiw1lSNnXzGhLjlofuzeUt/6qbzmpfef6tE5oFlUte4L1mqR7hzubvEEnOqjUusYTw8ru2nxNG1AQ=
X-Received: by 2002:a17:906:4c99:: with SMTP id q25mr19490349eju.67.1605605485542;  Tue, 17 Nov 2020 01:31:25 -0800 (PST)
MIME-Version: 1.0
References: <CALGR9oZo3rPeSund3Te6NgEhfBq5yCYmvdFFtTZqkoZ_Js9AMw@mail.gmail.com> <CAHVo=Zk-1J55MMqRPGFc86k3ncHq9rdw1Qty_CtE4-ezi=C54A@mail.gmail.com> <CALGR9ob-0DNqnJA4OHQinATuzCn+mN8K7dfGHK+FQia99GGDsQ@mail.gmail.com> <CAHVo=ZnC0o8XGT-jJ6U6oMEd9AJyx00o1wu7HfG5RZTLhdn=2g@mail.gmail.com> <CAPDSy+4NRvMYUeS2qSkuDCHWic=MkrJFL8_e252z=8KvQ+C5Gw@mail.gmail.com> <CAOW+2dsd72duTsHUcimYddi_JFOWQ0k9b5E7JWDeX_AOy5Uw5A@mail.gmail.com> <CAPDSy+7-enTafBePpjLKdq-j6WVo3=bC1EXOZ1s-c4verraRFQ@mail.gmail.com> <CAOW+2dsVSTcvYsKB7XB7GJy6eo4sTr70LJcKWtoQ1KLhVKpmOA@mail.gmail.com> <CAKcm_gPUfBUVz8Kh-jbHeUDCOAfF6FsjLHYsF6aZDgbCkMUw8Q@mail.gmail.com> <CAPDSy+6TCOJwxDgS+tWyshDnMDrwGYSYVQMSw3rdgj_GtE2E5g@mail.gmail.com> <CAHVo=Zk51+BAZxY6+-iUaM9cqFApnsyAeeoJ4YmqqA-uR3ojJw@mail.gmail.com> <CAPDSy+76Z9UF4Mjey-R_Kpi7vWqzJ86K9kw-Z=2aPfcz=YCgEw@mail.gmail.com> <CAHVo=Z=bCVnS7RMYM-Sjz0S1MQ7T0TKNe4FQANAGhzsyGJKmXg@mail.gmail.com> <CAPDSy+7KHsBqY-VGraWw5kG_DHU+3X4Ex0oMsJ2HzNa7HqJO2g@mail.gmail.com> <CAHVo=ZnUVaWuSYGUwoWCz3MxFUo7c2DCGaxEa0tAWkkNSedhog@mail.gmail.com>
In-Reply-To: <CAHVo=ZnUVaWuSYGUwoWCz3MxFUo7c2DCGaxEa0tAWkkNSedhog@mail.gmail.com>
From: Lucas Pardue <lucaspardue.24.7@gmail.com>
Date: Tue, 17 Nov 2020 09:31:13 +0000
Message-ID: <CALGR9oaFq2g_CujX1Ybiy9p=F9V6N0mmU_2+x6jkf_Zh=-27ng@mail.gmail.com>
To: Luke Curley <kixelated@gmail.com>
Cc: David Schinazi <dschinazi.ietf@gmail.com>, Ian Swett <ianswett@google.com>, Bernard Aboba <bernard.aboba@gmail.com>, WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000009d82c705b44a28a8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/-2CY_fr3C8qCHIS_YIbAJXC_7LQ>
Subject: Re: [Webtransport] Measuring the friction of Http3Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2020 09:31:32 -0000

--0000000000009d82c705b44a28a8
Content-Type: text/plain; charset="UTF-8"

Hi Luke,

On Tue, Nov 17, 2020 at 8:39 AM Luke Curley <kixelated@gmail.com> wrote:

> Sorry, I didn't correctly understand your question until after I hit
> send... I thought you were asking about HTTP/3 versus QuicTransport.
>
> QuicTransport can be supported at the application layer for an arbitrary*
> QUIC library. For example, a kernel or hardware device could expose an
> accelerated QUIC API (...we care a lot about performance). The simple
> QuicTransport handshake would be done in user-space.
>
> Http3Transport, on the other hand, requires explicit support in an HTTP/3
> library. While it's not difficult to implement, explicit Http3Transport
> support will be more limited than generic QUIC support. Native clients will
> have fewer and potentially worse implementations to choose from.
>
> Again, I feel like this is only a minor benefit for QuicTransport. I'm
> brand new to the IETF process and I may be overvaluing certain properties.
>

Using concrete specs,
https://tools.ietf.org/html/draft-vvv-webtransport-quic-02 vs
https://tools.ietf.org/html/draft-vvv-webtransport-http-02, the main
difference I see is that Http3Transport has support for WebTransport
(session) multiplexing in a single QUIC connection.

It is not clear to me if session multiplexing is needed due to mixing with
HTTP/3, or if it is intentionally extended behaviour over QuicTransport. I
suggest that permitting only one session per QUIC connection would vastly
simplify Http3Transport. You can even drop the special WEBTRANSPORT_STREAM
frames that squat on client bidi streams, and instead just require that
streams are upgraded to WebTransport purpose using Connect (ala RFC 8441).
Doing this means that changes needed to H3 libraries approaches zero; it
aligns with the frontend changes that MASQUE is detailing, which came up
during the interim call.

As Luke highlighted in his Github issues, there are serious footguns in the
API; mixing WebTransports onto a single QUIC connection in a
non-transparent way is like have two guns pointing at you and your buddies
feet. The suggestion that pooling can be avoided by using different hosts
endangers that becoming the only KISS deployment option if devs care about
determinism. So why take on board the complexity even to start with?

Cheers
Lucas



>
> * Datagrams are currently required for QuicTransport, although it's a very
> generic extension and could even be optional.
>
> On Mon, Nov 16, 2020 at 11:40 PM David Schinazi <dschinazi.ietf@gmail.com>
> wrote:
>
>>
>> On Mon, Nov 16, 2020 at 11:35 PM Luke Curley <kixelated@gmail.com> wrote:
>>
>>> Hey David, I gave a quick presentation on my use-case yesterday. We're
>>> using HLS so all media delivery is currently HTTP-based and we would love
>>> to use HTTP/3.
>>>
>>
>> And it was a great presentation! Your use case makes sense to me.
>>
>>
>>> However, reducing latency requires a tighter feedback loop and some form
>>> of push. The HTTP request/response model just complicates
>>> things, especially when HTTP push is brought into the equation.
>>> QuicTransport is much simpler and allows us to build something closer to
>>> RTMP on top.
>>>
>>
>> I don't understand this, can you clarify? What does the HTTP
>> request/response model have to do with the Http3Transport vs QuicTransport
>> question?
>>
>>
>>> It also means that we can use the same protocol for both distribution
>>> and contribution.
>>>
>>
>> I apologize, but I don't understand this either. What same protocol?
>>
>> On Mon, Nov 16, 2020 at 9:29 PM David Schinazi <dschinazi.ietf@gmail.com>
>>> wrote:
>>>
>>>>
>>>>
>>>> On Mon, Nov 16, 2020 at 6:02 PM Luke Curley <kixelated@gmail.com>
>>>> wrote:
>>>>
>>>>> I think that's a good starting summary David. Some things worth
>>>>> mentioning:
>>>>>
>>>>> For 1 and 4, Twitch is using QuicTransport for both native
>>>>> applications (ex. mobile, desktop, devices) and web applications. It's
>>>>> minor, but we benefit from the ability to use any QUIC library (technically
>>>>> we don't implement datagrams...) instead only those with HTTP/3 and
>>>>> Http3Transport support. I think this context was missing in the previous
>>>>> discussions.
>>>>>
>>>>
>>>> Can you clarify which implementations you were considering that support
>>>> QUIC+DATAGRAM but not HTTP/3?
>>>>
>>>>
>>>>> For 3, QuicTransport can support 0-RTT if we declare the path/origin
>>>>> handshake to be idempotent
>>>>> <https://github.com/vasilvv/webtransport/issues/16>... unless the new
>>>>> connection is routed to a different host. Both pooled Http3Transport and a
>>>>> new QuicTransport connection could take the same number of round trips.
>>>>>
>>>>
>>>> 0-RTT state isn't saved across ALPNs, even if it's to the same host. So
>>>> Http3Transport would get inline 0-RTT but QuicTransport would not get 0-RTT
>>>> unless you've already performed a QuicTransport handshake in recent history.
>>>>
>>>>
>>>>> For 4 and 5, I'm worried about flow control
>>>>> <https://github.com/vasilvv/webtransport/issues/22>. tl;dr a
>>>>> Http3Transport session could easily exhaust flow control limits for the
>>>>> entire connection. This seems especially negative if pooling is performed
>>>>> transparently (ex. a Http3Transport session may silently break HTTP/3 or
>>>>> other sessions).
>>>>>
>>>>
>>>> Unintentionally hitting the connection-level flow control limit is a
>>>> serious implementation bug. I wouldn't expect this to still be a problem
>>>> once implementations mature. I wouldn't want to base our protocol choices
>>>> based on a bug in non-production-ready implementations.
>>>>
>>>>
>>>>> On Mon, Nov 16, 2020 at 5:10 PM David Schinazi <
>>>>> dschinazi.ietf@gmail.com> wrote:
>>>>>
>>>>>> I'd like us to take a step back, I think we're conflating many
>>>>>> different topics here, and it's making it impossible to reason about this
>>>>>> (at least for someone running on not enough sleep like I am this week).
>>>>>>
>>>>>> Topic 1: the complexity of implementing Http3Transport as opposed to
>>>>>> QuicTransport on the client
>>>>>>     From my perspective, all browsers interested in WebTransport are
>>>>>> implementing HTTP/3, so I don't see much complexity there.
>>>>>>     Please reply here if you know of complexities I'm not seeing
>>>>>>
>>>>>> Topic 2: the complexity of implementing Http3Transport as opposed to
>>>>>> QuicTransport on the server
>>>>>>     As far as I know, most server-side QUIC stacks also support
>>>>>> HTTP/3, and for QuicTransport they already have DATAGRAM support so I think
>>>>>> the delta is negligible.
>>>>>>     Please reply here if you know of complexities I'm not seeing
>>>>>>
>>>>>> Topic 3: the benefits of pooling WebTransport
>>>>>>     This allows saving round trips to get WebTransport up and running
>>>>>>     This allows sharing congestion control state
>>>>>>     This allows letting the QUIC implementation prioritize DATAGRAMs
>>>>>> vs HTTP requests instead of relying on the kernel or routers which have
>>>>>> less information
>>>>>>     Overall, I think pooling is beneficial (though not an absolute
>>>>>> must-have)
>>>>>>     Please reply here if you know of benefits I'm not seeing
>>>>>>
>>>>>> Topic 4: the difficulty of pooling Http3Transport on the client
>>>>>>     It appears that all browsers that are interested in WebTransport
>>>>>> are implementing pooling in their HTTP/3 stack so additionally pooling
>>>>>> WebTransport should not introduce more complexity
>>>>>>     Please reply here if you know of complexities I'm not seeing
>>>>>>
>>>>>> Topic 5: the difficulty of pooling Http3Transport on the server
>>>>>>     This one is trickier. If you have frontends that know how to
>>>>>> route HTTP requests to backends, DATAGRAM support is going to be a whole
>>>>>> new world.
>>>>>>     However, and I think this is really important: implementing this
>>>>>> on the server is OPTIONAL.
>>>>>>     The server can easily use a different hostname (and different TLS
>>>>>> certificates) for HTTP vs WebTransport and clients will not pool the two
>>>>>> together.
>>>>>>     Once you use different domain names per WebTransport object,
>>>>>> Http3Transport has the exact same pooling properties as QuicTransport.
>>>>>>     Please reply here if you know of complexities I'm not seeing
>>>>>>
>>>>>> What am I missing?
>>>>>>
>>>>>> Thanks,
>>>>>> David
>>>>>>
>>>>>>
>>>>>> On Mon, Nov 16, 2020 at 4:45 PM Ian Swett <ianswett@google.com>
>>>>>> wrote:
>>>>>>
>>>>>>> I'm *very* concerned about any functionality that *requires*
>>>>>>> pooling.  Pooling is a client-specific optimization and pooling policy is
>>>>>>> subject to change(within reason) at any time.  If applications are saying
>>>>>>> "it'd be cool if we could share congestion control and loss recovery state
>>>>>>> between H3 and WebTransport most of the time", then I can see there being
>>>>>>> real(albeit small) benefits, just like there would be for putting
>>>>>>> DataChannels and RTP into one QUIC connection for WebRTC.  If people are
>>>>>>> intending to rely on pooling so an HTTP(hopefully H3) request can trigger a
>>>>>>> WebTransport response, I think we're in a world of pain and
>>>>>>> over-optimization.
>>>>>>>
>>>>>>> This is more obvious in light of the fact that a WebTransport
>>>>>>> endpoint is likely not a generic CDN endpoint, as has been clearly stated
>>>>>>> by Mark Nottingham.
>>>>>>>
>>>>>>> Bernard's comments above point to a tighter coupling between HTTP/3
>>>>>>> and WebTransport than I think is practical in production, unless I
>>>>>>> misunderstood(which I may have, it's been a long day).
>>>>>>>
>>>>>>> All of this makes me think we should punt the HTTP based
>>>>>>> WebTransport options down the road a year or so and focus on
>>>>>>> QuicTransport initially.  It's not to say we won't do them, but they're
>>>>>>> clearly more complex than QuicTransport and it'd be good to have real
>>>>>>> deployment experience prior to starting so we know what the requirements
>>>>>>> are and where the dragons are lurking.  Also, the W3C should design APIs
>>>>>>> that make it easy to detect failure to establish a QUIC-based WebTransport,
>>>>>>> and this ensures those are well exercised.  Maybe we DO require pooling
>>>>>>> under certain conditions and describe those, but there are likely privacy
>>>>>>> concerns under some circumstances and I'm not enough of an expert to know
>>>>>>> what would be acceptable to all clients.
>>>>>>>
>>>>>>> Some people in the WG may think we have to release a TCP based
>>>>>>> WebTransport at the same time as a QUIC based one, but I don't think that's
>>>>>>> true and even if we standardized them at the same time, it doesn't mean
>>>>>>> both will achieve wide deployment at the same time.  As I said at the mic,
>>>>>>> I don't see any reason YouTube would deploy a TCP based WebTransport given
>>>>>>> it will have to maintain an HTTP/1.1 option for basically forever and
>>>>>>> they've spent a good bit of effort to make sure that works as well as it
>>>>>>> can.  It's clear to me there are compelling use cases right now for
>>>>>>> QuicTransport, but the driving use cases for the fallback are not clear to
>>>>>>> me.  Consistency is intellectually appealing, but doesn't drive deployments.
>>>>>>>
>>>>>>> Ian
>>>>>>>
>>>>>>> On Mon, Nov 16, 2020 at 6:36 PM Bernard Aboba <
>>>>>>> bernard.aboba@gmail.com> wrote:
>>>>>>>
>>>>>>>> David said:
>>>>>>>>
>>>>>>>> "Where does this come from? A lot of QUIC servers are implementing
>>>>>>>> QUIC datagrams, and once you have those the delta with h3 datagrams is
>>>>>>>> negligible. Additionally, multiple h3 server implementers have indicated
>>>>>>>> they want to support WebTransport. It's starting to feel like the pushback
>>>>>>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>>>>>>> who haven't tried to implement it? If that's the case, then we should get
>>>>>>>> some implementation experience to confirm or debunk that theory."
>>>>>>>>
>>>>>>>> [BA] The pooling use cases often involve an interaction between an
>>>>>>>> HTTP/3 request/response and WebTransport.  so the HTTP/3 Request doesn't
>>>>>>>> just elicit an HTTP/3 Response.  It also causes something else to happen,
>>>>>>>> something that isn't specified in the HTTP/3 protocol, such as eliciting a
>>>>>>>> datagram flow or bi/unidirectional stream from the server.  This is what is
>>>>>>>> contemplated in several of the "Live Event" use cases, where the HTTP/3
>>>>>>>> Request/Response would be requesting the desired Event. The major advantage
>>>>>>>> over HLS is avoiding Head-of-Line blocking, reducing video freezes and
>>>>>>>> stalls.  So developers understand the value that support for datagrams and
>>>>>>>> server-initiated streams can provide - the question is whether they'll have
>>>>>>>> all the interoperable pieces in place to deploy it.
>>>>>>>>
>>>>>>>> Just because a generic HTTP/3 server supports QUIC and
>>>>>>>> WebTransport, doesn't mean that it will support these use cases.  I've been
>>>>>>>> asked whether better interoperability and wider ecosystem support could be
>>>>>>>> achieved by extending HTTP/3 in a way more in keeping with the existing
>>>>>>>> protocol design - such as by allowing an HTTP/3 Request to specify a
>>>>>>>> resource to be returned in a flow of datagrams.
>>>>>>>>
>>>>>>>> The situation might be more tenable if the node.js framework had
>>>>>>>> HTTP/3 and QUIC modules on the horizon.
>>>>>>>>
>>>>>>>> On Mon, Nov 16, 2020 at 1:00 PM David Schinazi <
>>>>>>>> dschinazi.ietf@gmail.com> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba <
>>>>>>>>> bernard.aboba@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Luke said:
>>>>>>>>>>
>>>>>>>>>> "My primary concern is that Http3Transport requires non-generic
>>>>>>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>>>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>>>>>>> HTTP/3 implementation that does support it."
>>>>>>>>>>
>>>>>>>>>> [BA] I have also heard this concern from developers. The concerns
>>>>>>>>>> primarily arise from the pooling of HTTP/3 Request/Responses with
>>>>>>>>>> WebTransport. This does enable some interesting use cases, such as a
>>>>>>>>>> Request/Response (e.g. gRPC) that can result in a server sending datagrams
>>>>>>>>>> or initiating bi-directional or uni-directional streams.  So there is
>>>>>>>>>> perceived value, but the question is whether that value will be widely
>>>>>>>>>> supported across the HTTP/3 ecosystem.
>>>>>>>>>>
>>>>>>>>>> At this point, most generic HTTP/3 servers are not expected to
>>>>>>>>>> support HTTP/3 datagrams (not part of the HTTP/3 protocol) or
>>>>>>>>>> Http3Transport (perceived as a niche protocol), so that pooling would only
>>>>>>>>>> be possible when using a framework.  node.js will not have QUIC support for
>>>>>>>>>> 12-18 months (held up by OpenSSL) so even framework support is expected to
>>>>>>>>>> be limited.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Where does this come from? A lot of QUIC servers are implementing
>>>>>>>>> QUIC datagrams, and once you have those the delta with h3 datagrams is
>>>>>>>>> negligible. Additionally, multiple h3 server implementers have indicated
>>>>>>>>> they want to support WebTransport. It's starting to feel like the pushback
>>>>>>>>> on HTTP3Transport is purely based on a perception of complexity from folks
>>>>>>>>> who haven't tried to implement it? If that's the case, then we should get
>>>>>>>>> some implementation experience to confirm or debunk that theory.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> On Mon, Nov 16, 2020 at 11:37 AM David Schinazi <
>>>>>>>>>> dschinazi.ietf@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Nov 16, 2020 at 11:34 AM Luke Curley <
>>>>>>>>>>> kixelated@gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> We're on the same page that there's code in HTTP/3 that could
>>>>>>>>>>>> be leveraged for QuicTransport in the form of the header parsing. I think
>>>>>>>>>>>> there's a path to merge QuicTransport and Http3Transport by leveraging
>>>>>>>>>>>> HTTP/3 for the handshake and QUIC for stream delivery.
>>>>>>>>>>>>
>>>>>>>>>>>> My primary concern is that Http3Transport requires non-generic
>>>>>>>>>>>> modifications to the HTTP/3 layer mostly to support connection pooling. I'm
>>>>>>>>>>>> worried that this will limit support for Http3Transport and complicates any
>>>>>>>>>>>> HTTP/3 implementation that does support it.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Hi Luke,
>>>>>>>>>>>
>>>>>>>>>>> I'm curious, could you elaborate on what these "non-generic
>>>>>>>>>>> modifications to the HTTP/3 layer" are please?
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>> David
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue <
>>>>>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Luke,
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Mon, 16 Nov 2020, 12:26 Luke Curley, <kixelated@gmail.com>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Just to clarify, when I say "QuicTransport is simpler" I
>>>>>>>>>>>>>> really mean "QuicTransport has greater interoperability". You can take any
>>>>>>>>>>>>>> QUIC implementation (+ datagram extension) and add a thin layer to support
>>>>>>>>>>>>>> QuicTransport. It's a nice layering of protocols and it's something that I
>>>>>>>>>>>>>> want to see in general as QUIC replaces TCP.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks for the clarification. I appreciate the sentiment. But
>>>>>>>>>>>>> given the development of QUIC its kind of surprising that people would find
>>>>>>>>>>>>> it easier to identify an implementation that supports QUIC and datagram but
>>>>>>>>>>>>> does not support HTTP/3.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thr situation for a more clean-room implementation is
>>>>>>>>>>>>> different, I agree. However, by the time you've done all the hard stuff
>>>>>>>>>>>>> with QUIC, a very focused HTTP/3 layer ends up quite thin too. You can
>>>>>>>>>>>>> ignore dynamic compression, server push and extensibility points.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I also see the current design being the thin end of the wedge.
>>>>>>>>>>>>> The proposal I linked talks about HTTP-like header parsing. So its "just" a
>>>>>>>>>>>>> thin layer to do some parsing. Then folks will probably want some want to
>>>>>>>>>>>>> tweak parameter, acontrol channel, a way to do graceful close, a sprinkle
>>>>>>>>>>>>> of GREASE. To extrapolate forward, what would be the delta be between some
>>>>>>>>>>>>> final product QuicTransport and HTTP/3. Too small a delta and we've wasted
>>>>>>>>>>>>> years of effort.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Cheers
>>>>>>>>>>>>> Lucas
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue <
>>>>>>>>>>>>>> lucaspardue.24.7@gmail.com> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi folks,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> To follow up on one thread of discussion during IETF 109. To
>>>>>>>>>>>>>>> over simplify what we've heard a few folks say, they prefer QuicTransport
>>>>>>>>>>>>>>> because it simpler and they don't need pooling.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I'd like to push more on this, what is the measurable
>>>>>>>>>>>>>>> complexity of HTTP/3 over QUIC plus a new application mapping that needs to
>>>>>>>>>>>>>>> be defined? Let's isolate pooling as a variable and ignore it.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Victor mentioned his proposal for a unified header semantic
>>>>>>>>>>>>>>> across all transports, this is
>>>>>>>>>>>>>>> https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files.
>>>>>>>>>>>>>>> Taking a closer look at it, I have some concerns that I added as comments.
>>>>>>>>>>>>>>> HTTP has semantics for a reason. If QuicTransport is going to start
>>>>>>>>>>>>>>> borrowing HTTP piecemeal, I really wonder how simple people might feel it
>>>>>>>>>>>>>>> is. I think it's important to avoid something that looks like HTTP but
>>>>>>>>>>>>>>> behaves differently. Is it really much of a stretch to just do HTTP/3 but
>>>>>>>>>>>>>>> give it a different ALPN so that we avoid problems related to
>>>>>>>>>>>>>>> cross-protocol pooling?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Cheers,
>>>>>>>>>>>>>>> Lucas
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Webtransport mailing list
>>>>>>>>>>>>>>> Webtransport@ietf.org
>>>>>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>> Webtransport mailing list
>>>>>>>>>>>> Webtransport@ietf.org
>>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Webtransport mailing list
>>>>>>>>>>> Webtransport@ietf.org
>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>> Webtransport mailing list
>>>>>>>> Webtransport@ietf.org
>>>>>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>>>>>
>>>>>>>

--0000000000009d82c705b44a28a8
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hi Luke,<br></div><br><div class=3D"gmail_quote"><div=
 dir=3D"ltr" class=3D"gmail_attr">On Tue, Nov 17, 2020 at 8:39 AM Luke Curl=
ey &lt;<a href=3D"mailto:kixelated@gmail.com">kixelated@gmail.com</a>&gt; w=
rote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p=
x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=
=3D"ltr">Sorry, I didn&#39;t correctly understand your question until after=
 I hit send... I thought you were asking about HTTP/3 versus QuicTransport.=
<div><br></div><div>QuicTransport can be supported at the application layer=
 for an arbitrary* QUIC library. For example, a kernel or hardware device c=
ould expose an accelerated=C2=A0QUIC API (...we care a lot about performanc=
e). The simple QuicTransport handshake would be done in user-space.</div><d=
iv><br></div><div>Http3Transport, on the other hand, requires explicit supp=
ort in an HTTP/3 library. While it&#39;s not difficult to implement, explic=
it Http3Transport support will be more limited than generic QUIC support. N=
ative clients will have fewer and potentially worse implementations to choo=
se from.</div><div><br></div><div>Again, I feel like this is only a minor b=
enefit for QuicTransport. I&#39;m brand new to the IETF process and I may b=
e overvaluing certain properties.</div></div></blockquote><div><br></div><d=
iv>Using concrete specs, <a href=3D"https://tools.ietf.org/html/draft-vvv-w=
ebtransport-quic-02">https://tools.ietf.org/html/draft-vvv-webtransport-qui=
c-02</a> vs <a href=3D"https://tools.ietf.org/html/draft-vvv-webtransport-h=
ttp-02">https://tools.ietf.org/html/draft-vvv-webtransport-http-02</a>, the=
 main difference I see is that Http3Transport has support for WebTransport =
(session) multiplexing in a single QUIC connection. <br></div><div><br></di=
v><div>It is not clear to me if session multiplexing is needed due to mixin=
g with HTTP/3, or if it is intentionally extended behaviour over QuicTransp=
ort. I suggest that permitting only one session per QUIC connection would v=
astly simplify Http3Transport. You can even drop the special WEBTRANSPORT_S=
TREAM frames that squat on client bidi streams, and instead just require th=
at streams are upgraded to WebTransport purpose using Connect (ala RFC 8441=
). Doing this means that changes needed to H3 libraries approaches zero; it=
 aligns with the frontend changes that MASQUE is detailing, which came up d=
uring the interim call.</div><div><br></div><div>As Luke highlighted in his=
 Github issues, there are serious footguns in the API; mixing WebTransports=
 onto a single QUIC connection in a non-transparent way is like have two gu=
ns pointing at you and your buddies feet. The suggestion that pooling can b=
e avoided by using different hosts endangers that becoming the only KISS de=
ployment option if devs care about determinism. So why take on board the co=
mplexity even to start with?</div><div><br></div><div>Cheers<br></div><div>=
Lucas<br></div><div><br></div><div><br></div><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex"><div dir=3D"ltr"><div><br></div><div><br></div><div><di=
v>* Datagrams are currently required for QuicTransport, although it&#39;s a=
 very generic extension and could even be optional.</div></div><div></div><=
/div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">O=
n Mon, Nov 16, 2020 at 11:40 PM David Schinazi &lt;<a href=3D"mailto:dschin=
azi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmail.com</a>&gt; wrot=
e:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0=
.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"l=
tr"><div dir=3D"ltr"><br></div><div class=3D"gmail_quote"><div dir=3D"ltr" =
class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:35 PM Luke Curley &lt;<a hr=
ef=3D"mailto:kixelated@gmail.com" target=3D"_blank">kixelated@gmail.com</a>=
&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div=
 dir=3D"ltr">Hey David, I gave a quick presentation on my use-case yesterda=
y. We&#39;re using HLS so=C2=A0all media delivery is currently HTTP-based a=
nd we would love to use HTTP/3.=C2=A0</div></blockquote><div><br></div><div=
>And it was a great presentation! Your use case makes sense to me.</div><di=
v>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px=
 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D=
"ltr"><div>However, reducing latency requires a tighter feedback loop and s=
ome form of push. The HTTP request/response model just complicates things,=
=C2=A0especially when HTTP push is brought into the equation. QuicTransport=
 is much simpler and allows us to build something closer to RTMP on top.</d=
iv></div></blockquote><div><br></div><div>I don&#39;t understand this, can =
you clarify? What does the HTTP request/response model have to do with the =
Http3Transport vs QuicTransport question?<br></div><div>=C2=A0</div><blockq=
uote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1p=
x solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>It also me=
ans that we can use the same protocol for both distribution and contributio=
n.</div></div></blockquote><div><br></div><div></div><div>I apologize, but =
I don&#39;t understand this either. What same protocol?</div><div><br></div=
><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border=
-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quot=
e"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 9:29 PM Da=
vid Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_bla=
nk">dschinazi.ietf@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"g=
mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204=
,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br=
><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, N=
ov 16, 2020 at 6:02 PM Luke Curley &lt;<a href=3D"mailto:kixelated@gmail.co=
m" target=3D"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquot=
e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s=
olid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">I think that&#39;s=
 a good starting summary David. Some things worth mentioning:<div><br></div=
><div>For 1 and 4, Twitch is using QuicTransport for both native applicatio=
ns (ex. mobile, desktop, devices) and web applications. It&#39;s minor, but=
 we benefit from the ability to use any QUIC library (technically we don&#3=
9;t implement datagrams...) instead only those with HTTP/3 and Http3Transpo=
rt support. I think this context was missing in the previous discussions.</=
div></div></blockquote><div><br></div><div>Can you clarify which implementa=
tions you were considering that support QUIC+DATAGRAM but not HTTP/3?</div>=
<div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px =
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=
=3D"ltr"><div>For 3, QuicTransport can support 0-RTT if we <a href=3D"https=
://github.com/vasilvv/webtransport/issues/16" target=3D"_blank">declare the=
 path/origin handshake to be=C2=A0idempotent</a>... unless the new connecti=
on is routed to a different host. Both pooled Http3Transport and a new Quic=
Transport connection could take the same number of round trips.</div></div>=
</blockquote><div><br></div><div>0-RTT state isn&#39;t saved across ALPNs, =
even if it&#39;s to the same host. So Http3Transport=C2=A0would get inline =
0-RTT but QuicTransport would not get 0-RTT unless you&#39;ve already perfo=
rmed a QuicTransport handshake in recent history.</div><div>=C2=A0</div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>For 4 =
and 5, <a href=3D"https://github.com/vasilvv/webtransport/issues/22" target=
=3D"_blank">I&#39;m worried about flow control</a>. tl;dr a Http3Transport =
session could easily exhaust flow control limits for the entire connection.=
 This seems especially negative if pooling is performed transparently (ex. =
a Http3Transport session may silently break HTTP/3 or other sessions).</div=
></div></blockquote><div><br></div><div>Unintentionally hitting the connect=
ion-level=C2=A0flow control limit is a serious implementation bug. I wouldn=
&#39;t expect this to still be a problem once implementations mature. I wou=
ldn&#39;t want to base our protocol choices based on a bug in non-productio=
n-ready implementations.</div><div>=C2=A0</div><blockquote class=3D"gmail_q=
uote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,2=
04);padding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"=
gmail_attr">On Mon, Nov 16, 2020 at 5:10 PM David Schinazi &lt;<a href=3D"m=
ailto:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmail.com<=
/a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0=
px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><=
div dir=3D"ltr">I&#39;d like us to take a step back, I think we&#39;re conf=
lating many different topics here, and it&#39;s making it impossible to rea=
son about this (at least for someone running on not enough sleep like I am =
this week).<div><br></div><div>Topic 1: the complexity of implementing=C2=
=A0Http3Transport=C2=A0as opposed to QuicTransport=C2=A0on the client</div>=
<div>=C2=A0 =C2=A0 From my perspective, all browsers interested in WebTrans=
port are implementing HTTP/3, so I don&#39;t see much complexity there.</di=
v><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#39;m =
not seeing</div><div><div><br></div><div>Topic 2: the complexity of impleme=
nting=C2=A0Http3Transport=C2=A0as opposed to QuicTransport=C2=A0on the serv=
er</div></div><div>=C2=A0 =C2=A0 As far as I know, most server-side QUIC st=
acks also support HTTP/3, and for QuicTransport=C2=A0they already have DATA=
GRAM support so I think the delta is negligible.</div><div>=C2=A0 =C2=A0 Pl=
ease reply here if you know of complexities I&#39;m not seeing</div><div></=
div><div><br></div><div>Topic 3: the benefits of pooling WebTransport</div>=
<div>=C2=A0 =C2=A0 This allows saving round trips to get WebTransport up an=
d running</div><div>=C2=A0 =C2=A0 This allows sharing congestion control st=
ate</div><div>=C2=A0 =C2=A0 This allows letting the QUIC implementation pri=
oritize DATAGRAMs vs HTTP requests instead of relying on the kernel or rout=
ers which have less information</div><div>=C2=A0 =C2=A0 Overall, I think po=
oling is beneficial (though not an absolute must-have)</div><div>=C2=A0 =C2=
=A0 Please reply here if you know of benefits I&#39;m not seeing<br></div><=
div><br></div><div>Topic 4: the difficulty of pooling Http3Transport=C2=A0o=
n the client</div><div>=C2=A0 =C2=A0 It appears that all browsers that are =
interested in WebTransport are implementing pooling in their HTTP/3 stack s=
o additionally pooling WebTransport should not introduce more complexity</d=
iv><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I&#39;m=
 not seeing</div><div></div><div><div><br></div><div>Topic 5: the difficult=
y of pooling Http3Transport=C2=A0on the server</div></div><div>=C2=A0 =C2=
=A0 This one is trickier. If you have frontends that know how to route HTTP=
=C2=A0requests to backends, DATAGRAM support is going to be a whole new wor=
ld.</div><div>=C2=A0 =C2=A0 However, and I think this is really important: =
implementing this on the server is OPTIONAL.</div><div>=C2=A0 =C2=A0 The se=
rver can easily use a different hostname (and different TLS certificates) f=
or HTTP vs WebTransport and clients will not pool the two together.</div><d=
iv>=C2=A0 =C2=A0 Once you use different domain names per WebTransport objec=
t, Http3Transport=C2=A0has the exact same pooling properties as QuicTranspo=
rt.</div><div>=C2=A0 =C2=A0 Please reply here if you know of complexities I=
&#39;m not seeing<br></div><div><br></div><div>What am I missing?</div><div=
><br></div><div>Thanks,</div><div>David</div><div><br></div></div><br><div =
class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16,=
 2020 at 4:45 PM Ian Swett &lt;<a href=3D"mailto:ianswett@google.com" targe=
t=3D"_blank">ianswett@google.com</a>&gt; wrote:<br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex"><div dir=3D"ltr">I&#39;m <b>very</b> conce=
rned about any functionality that <b>requires</b> pooling.=C2=A0 Pooling is=
 a client-specific optimization and pooling policy is subject to change(wit=
hin reason) at any time.=C2=A0 If applications=C2=A0are saying &quot;it&#39=
;d be cool if we could share congestion control and loss recovery state bet=
ween H3 and WebTransport most of the time&quot;, then I can see there being=
 real(albeit small) benefits, just like there would be for putting DataChan=
nels and RTP into one QUIC connection for WebRTC.=C2=A0 If people are inten=
ding to rely on pooling so an HTTP(hopefully H3) request can trigger a WebT=
ransport response, I think we&#39;re in a world of pain and over-optimizati=
on.<div><br></div><div>This is more obvious in light of the fact that a Web=
Transport endpoint=C2=A0is likely not a generic CDN endpoint, as has been c=
learly stated by Mark Nottingham.<br><div><br></div><div>Bernard&#39;s comm=
ents above point to a tighter coupling between HTTP/3 and WebTransport than=
 I think is practical in production, unless I misunderstood(which I may hav=
e, it&#39;s been a long day).</div><div><br></div><div>All of this makes me=
 think we should punt the HTTP based WebTransport options down the road a y=
ear or so and focus on QuicTransport=C2=A0initially.=C2=A0 It&#39;s not to =
say we won&#39;t do them, but they&#39;re clearly more complex than=C2=A0Qu=
icTransport=C2=A0and it&#39;d be good to have real deployment experience pr=
ior to starting so we know what the requirements are and where the dragons =
are lurking.=C2=A0 Also, the W3C should design APIs that make it easy to de=
tect failure to establish a QUIC-based=C2=A0WebTransport, and this ensures =
those are well exercised.=C2=A0 Maybe we DO require pooling under certain c=
onditions and describe those, but there are likely privacy concerns under s=
ome circumstances and I&#39;m not enough of an expert to know what would be=
 acceptable to all clients.</div><div><br></div><div>Some=C2=A0people in th=
e WG may think we have to release a TCP based WebTransport at the same time=
 as a QUIC based one, but I don&#39;t think that&#39;s true and even if we =
standardized them at the same time, it doesn&#39;t mean both will achieve w=
ide deployment at the same time.=C2=A0 As I said at the mic, I don&#39;t se=
e any reason YouTube would deploy a TCP based WebTransport given it will ha=
ve to maintain an HTTP/1.1 option for basically forever and they&#39;ve spe=
nt a good bit of effort to make sure that works as well as it can.=C2=A0 It=
&#39;s clear to me there are compelling use cases right now for QuicTranspo=
rt, but=C2=A0the driving use cases for the fallback are not clear to me.=C2=
=A0 Consistency is intellectually appealing, but doesn&#39;t drive deployme=
nts.</div></div><div><br></div><div>Ian</div></div><br><div class=3D"gmail_=
quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 6:36 P=
M Bernard Aboba &lt;<a href=3D"mailto:bernard.aboba@gmail.com" target=3D"_b=
lank">bernard.aboba@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"=
gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20=
4,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"=
ltr">David said:=C2=A0<div><br></div><div>&quot;Where does this come from? =
A lot of QUIC servers are implementing QUIC datagrams, and once you have th=
ose the delta with h3 datagrams is negligible. Additionally, multiple h3 se=
rver implementers=C2=A0have indicated they want to support WebTransport. It=
&#39;s starting to feel like the pushback on HTTP3Transport=C2=A0is purely =
based on a perception of complexity from folks who haven&#39;t tried to imp=
lement it? If that&#39;s the case, then we should get some implementation e=
xperience to confirm or debunk that theory.&quot;</div><div><br></div><div>=
[BA] The pooling use cases often involve an interaction between an HTTP/3 r=
equest/response and WebTransport.=C2=A0 so the HTTP/3 Request doesn&#39;t j=
ust elicit an HTTP/3 Response.=C2=A0 It also causes something else to happe=
n, something that isn&#39;t specified in the HTTP/3 protocol, such as elici=
ting a datagram flow or bi/unidirectional stream from the server.=C2=A0 Thi=
s is what is contemplated in several of the &quot;Live Event&quot; use case=
s, where the HTTP/3 Request/Response would be requesting the desired Event.=
 The major advantage over HLS is avoiding Head-of-Line blocking, reducing v=
ideo freezes and stalls.=C2=A0 So developers understand the value that supp=
ort for datagrams and server-initiated streams can provide - the question i=
s whether they&#39;ll have all the interoperable pieces in place to deploy =
it.=C2=A0 </div><div><br></div><div>Just because a generic HTTP/3 server su=
pports QUIC and WebTransport, doesn&#39;t mean that it will support these u=
se cases.=C2=A0 I&#39;ve been asked whether better interoperability and wid=
er ecosystem support could be achieved by extending HTTP/3 in a way more in=
 keeping with the existing protocol design - such as by allowing an HTTP/3 =
Request to specify a resource to be returned in a flow of datagrams.=C2=A0<=
/div><div><br></div><div>The situation might be more tenable if the node.js=
 framework had HTTP/3 and QUIC modules on the horizon.<br></div></div></div=
></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr"=
>On Mon, Nov 16, 2020 at 1:00 PM David Schinazi &lt;<a href=3D"mailto:dschi=
nazi.ietf@gmail.com" target=3D"_blank">dschinazi.ietf@gmail.com</a>&gt; wro=
te:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"=
ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote"><div dir=3D"=
ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 12:40 PM Bernard Aboba &l=
t;<a href=3D"mailto:bernard.aboba@gmail.com" target=3D"_blank">bernard.abob=
a@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><div dir=3D"ltr">Luke said:=C2=A0<div><br></div><div>&quot;<span=
 style=3D"color:rgb(80,0,80)">My primary concern is that Http3Transport req=
uires non-generic modifications to the HTTP/3 layer mostly to support conne=
ction pooling. I&#39;m worried that this will limit support for Http3Transp=
ort and complicates any HTTP/3 implementation that does support it.</span>&=
quot;</div><div><br></div><div>[BA] I have also heard this concern from dev=
elopers. The concerns primarily arise from the pooling of HTTP/3 Request/Re=
sponses with WebTransport. This does enable some interesting use cases, suc=
h as a Request/Response (e.g. gRPC) that can result in a server sending dat=
agrams or initiating bi-directional or uni-directional streams.=C2=A0 So th=
ere is perceived value, but the question is whether that value will be wide=
ly supported across the HTTP/3 ecosystem.=C2=A0</div><div><br></div><div>At=
 this point, most generic HTTP/3 servers are not expected to support HTTP/3=
 datagrams (not part of the HTTP/3 protocol) or Http3Transport (perceived a=
s a niche protocol), so that pooling would only be possible when using a fr=
amework.=C2=A0 node.js will not have=C2=A0QUIC support for 12-18 months (he=
ld up by OpenSSL) so even framework support is expected to be limited.</div=
></div></blockquote><div><br></div><div>Where does this come from? A lot of=
 QUIC servers are implementing QUIC datagrams, and once you have those the =
delta with h3 datagrams is negligible. Additionally, multiple h3 server imp=
lementers=C2=A0have indicated they want to support WebTransport. It&#39;s s=
tarting to feel like the pushback on HTTP3Transport=C2=A0is purely based on=
 a perception of complexity from folks who haven&#39;t tried to implement i=
t? If that&#39;s the case, then we should get some implementation experienc=
e to confirm or debunk that theory.</div><div>=C2=A0</div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr=
" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11:37 AM David Schinazi &lt;=
<a href=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_blank">dschinazi.iet=
f@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gm=
ail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 16, 2020 at 11=
:34 AM Luke Curley &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D"_bl=
ank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex"><div dir=3D"ltr">We&#39;re on the same page that th=
ere&#39;s code in HTTP/3 that could be leveraged for QuicTransport in the f=
orm of the header parsing. I think there&#39;s a path to merge QuicTranspor=
t and Http3Transport by leveraging HTTP/3 for the handshake and QUIC for st=
ream delivery.<div><br></div><div>My primary concern is that Http3Transport=
 requires non-generic modifications to the HTTP/3 layer mostly to support c=
onnection pooling. I&#39;m worried that this will limit support for Http3Tr=
ansport and complicates any HTTP/3 implementation that does support it.</di=
v></div></blockquote><div><br></div><div>Hi Luke,</div><div><br></div><div>=
I&#39;m curious, could you elaborate on what these &quot;non-generic modifi=
cations to the HTTP/3 layer&quot; are please?</div><div><br></div><div>Than=
ks,</div><div>David</div><div>=C2=A0</div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail=
_attr">On Mon, Nov 16, 2020 at 4:49 AM Lucas Pardue &lt;<a href=3D"mailto:l=
ucaspardue.24.7@gmail.com" target=3D"_blank">lucaspardue.24.7@gmail.com</a>=
&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div=
 dir=3D"auto"><div>Hi Luke,</div><div dir=3D"auto"><br><div class=3D"gmail_=
quote" dir=3D"auto"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, 16 Nov 20=
20, 12:26 Luke Curley, &lt;<a href=3D"mailto:kixelated@gmail.com" target=3D=
"_blank">kixelated@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"g=
mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204=
,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Just to clarify, when I s=
ay &quot;QuicTransport is simpler&quot; I really mean &quot;QuicTransport h=
as greater interoperability&quot;. You can take any QUIC implementation (+ =
datagram extension) and add a thin layer to support QuicTransport. It&#39;s=
 a nice layering of protocols and it&#39;s something that I want to see in =
general as QUIC replaces TCP.</div></div></blockquote></div></div><div dir=
=3D"auto"><br></div><div dir=3D"auto">Thanks for the clarification. I appre=
ciate the sentiment. But given the development of QUIC its kind of surprisi=
ng that people would find it easier to identify an implementation that supp=
orts QUIC and datagram but does not support HTTP/3.</div><div dir=3D"auto">=
<br></div><div dir=3D"auto">Thr situation for a more clean-room implementat=
ion is different, I agree. However, by the time you&#39;ve done all the har=
d stuff with QUIC, a very focused HTTP/3 layer ends up quite thin too. You =
can ignore dynamic compression, server push and extensibility points.</div>=
<div dir=3D"auto"><br></div><div dir=3D"auto">I also see the current design=
 being the thin end of the wedge. The proposal I linked talks about HTTP-li=
ke header parsing. So its &quot;just&quot; a thin layer to do some parsing.=
 Then folks will probably want some want to tweak parameter, acontrol chann=
el, a way to do graceful close, a sprinkle of GREASE. To extrapolate forwar=
d, what would be the delta be between some final product QuicTransport and =
HTTP/3. Too small a delta and we&#39;ve wasted years of effort.</div><div d=
ir=3D"auto"><br></div><div dir=3D"auto">Cheers</div><div dir=3D"auto">Lucas=
</div><div dir=3D"auto"><br></div><div dir=3D"auto"><br></div><div dir=3D"a=
uto"><div class=3D"gmail_quote" dir=3D"auto"><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex"><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=
=3D"gmail_attr">On Mon, Nov 16, 2020 at 3:16 AM Lucas Pardue &lt;<a href=3D=
"mailto:lucaspardue.24.7@gmail.com" rel=3D"noreferrer" target=3D"_blank">lu=
caspardue.24.7@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex"><div dir=3D"ltr"><div>Hi folks,</div><div><br></div=
><div>To follow up on one thread of discussion during IETF 109. To over sim=
plify what we&#39;ve heard a few folks say, they prefer QuicTransport becau=
se it simpler and they don&#39;t need pooling.</div><div><br></div><div>I&#=
39;d like to push more on this, what is the measurable complexity of HTTP/3=
 over QUIC plus a new application mapping that needs to be defined? Let&#39=
;s isolate pooling as a variable and ignore it.</div><div><br></div><div>Vi=
ctor mentioned his proposal for a unified header semantic across all transp=
orts, this is <a href=3D"https://github.com/ietf-wg-webtrans/draft-ietf-web=
trans-overview/pull/4/files" rel=3D"noreferrer" target=3D"_blank">https://g=
ithub.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/pull/4/files</a>. T=
aking a closer look at it, I have some concerns that I added as comments.  =
HTTP has semantics for a reason. If QuicTransport is going to start borrowi=
ng HTTP piecemeal, I really wonder how simple people might feel it is. I th=
ink it&#39;s important to avoid something that looks like HTTP but behaves =
differently. Is it really much of a stretch to just do HTTP/3 but give it a=
 different ALPN so that we avoid problems related to cross-protocol pooling=
?</div><div><br></div><div>Cheers,</div><div>Lucas<br></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" rel=3D"noreferrer" target=3D"_blan=
k">Webtransport@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/w=
ebtransport</a><br>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
-- <br>
Webtransport mailing list<br>
<a href=3D"mailto:Webtransport@ietf.org" target=3D"_blank">Webtransport@iet=
f.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webtransport" rel=3D"noref=
errer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webtransport=
</a><br>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
</blockquote></div></div>

--0000000000009d82c705b44a28a8--


From nobody Tue Nov 17 22:12:09 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4EA713A14E2 for <webtransport@ietfa.amsl.com>; Tue, 17 Nov 2020 22:12:02 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 0YfvRRiMmkgg for <webtransport@ietfa.amsl.com>; Tue, 17 Nov 2020 22:12:00 -0800 (PST)
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com [IPv6:2a00:1450:4864:20::22b]) (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 F1E683A1511 for <webtransport@ietf.org>; Tue, 17 Nov 2020 22:11:59 -0800 (PST)
Received: by mail-lj1-x22b.google.com with SMTP id b17so1006990ljf.12 for <webtransport@ietf.org>; Tue, 17 Nov 2020 22:11:59 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=HCr884uuyzeS8xY6PrnxjqZKDuIbDaVj6CjDYdBLtBs=; b=ZwFp2PdxQLELPsxGaz3NEMg2+3FZUAUCJWpmmcqEPSvKNq6gDl5W5WlMIJFQI9RIXa SOsJuEFHj5wHaRyTLJqNQEr0IP/90lBnK0bupMZw37ph2S2feDYAcRuGvknkyxUDTgNy 7aUHzXNWWcHMFtyhpMs31xkE5l2IyEwoI3aAFC1BeiIfqk6CMD72wn0io5MP/Oy75RYP QScqzbpd2nDsBNnDSjh+Lh8yuzXxHCPR8yte4e0PwHk/YHyR+DNfE/6/u/sw9v6JhQF/ RCrfNfXiyUA8Yx62L3S2inuMujKWi5yPULFoSSrna1oOpidK1OM/T4xygajeSMeLxOgS rvJA==
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; bh=HCr884uuyzeS8xY6PrnxjqZKDuIbDaVj6CjDYdBLtBs=; b=sPkttSx2GBzO9leN1LoDubCqMp+mYy0ChVhp2yJn5nr8xQW0tDdnZ5BCUvkQCb8hPJ IOVUg+k0nbS84iCNPfihdAmmvjMXTE5IFGJWdggDdZqTCWksrnBmRfwjEiYoGZhY9KZV xK29IodJK9+ZRKomXSE//zBRC7VKOm1ySOSAnnyTvcucsgdCA/6qtZpDT8wO1AipYZuD Zo2G10xBRhOS+llUQ0KqJbxhHo8qY3FN7jB3jj3CYiOlFFaN/tF6D0Q/wy0Ai/JIOw15 yzPoI0SC4hm6JztddLqFBsY2xRdlpnMsfcddKJ/9HKC/REgAqDC1Uo+KXKnI+RZUS7vo xq4A==
X-Gm-Message-State: AOAM5324Oz66hIgnLTOGIqw7pi/hXNt7CViFaZTxSVa4mi3hfuWElwTI R1Vr+kl9dQlk8Fkb2ADqXm1h3yWD1koLNKh8+Dhf+wuT1KaBJg==
X-Google-Smtp-Source: ABdhPJzU2Xp/EZtSiB5OxbHQJpwmNbvqXxzfXe9E9pTYQSA9LJAJG0nwI/1ibO2F5DlB3Vv+QxL7qWO6ioTxdWyfu5s=
X-Received: by 2002:a2e:b1c9:: with SMTP id e9mr2274110lja.283.1605679918011;  Tue, 17 Nov 2020 22:11:58 -0800 (PST)
MIME-Version: 1.0
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Tue, 17 Nov 2020 22:11:47 -0800
Message-ID: <CAOW+2dsrtuCCVMZ91sxnDS4+ur26gtumjkWDtHWReQdu3wpxJA@mail.gmail.com>
To: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000022da2205b45b7de7"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/S8aMMFRLCzYX2TbTd_yx-bhWxIA>
Subject: [Webtransport] Doodle Poll for Virtual Interim
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Nov 2020 06:12:09 -0000

--00000000000022da2205b45b7de7
Content-Type: text/plain; charset="UTF-8"

At the IETF 109 WEBTRANS WG, we discussed scheduling a virtual interim to
make more rapid progress on (among other things) The Transport Zoo.

Here is a Doodle Poll for potential days/times during the second week of
January, 2021:
https://www.doodle.com/poll/38qv9hdazfrxsi7u

Please respond to the Doodle Poll by Friday, November 27, 2020.

--00000000000022da2205b45b7de7
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">At the IETF 109 WEBTRANS WG, we discussed scheduling a vir=
tual interim to make more rapid progress on (among other things) The Transp=
ort Zoo.=C2=A0<div><br></div><div>Here is a Doodle Poll for potential days/=
times during the second week of January, 2021:=C2=A0</div><div><a href=3D"h=
ttps://www.doodle.com/poll/38qv9hdazfrxsi7u" target=3D"_blank">https://www.=
doodle.com/poll/38qv9hdazfrxsi7u</a></div><div><br></div><div>Please respon=
d to the Doodle Poll by Friday, November 27, 2020.=C2=A0</div></div>

--00000000000022da2205b45b7de7--


From nobody Tue Nov 17 23:42:09 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 16E033A0CE8 for <webtransport@ietfa.amsl.com>; Tue, 17 Nov 2020 23:42:08 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 9Iv_VMQvx93c for <webtransport@ietfa.amsl.com>; Tue, 17 Nov 2020 23:42:06 -0800 (PST)
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com [IPv6:2a00:1450:4864:20::22f]) (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 7DAD23A0CE7 for <webtransport@ietf.org>; Tue, 17 Nov 2020 23:42:06 -0800 (PST)
Received: by mail-lj1-x22f.google.com with SMTP id l10so1265781lji.4 for <webtransport@ietf.org>; Tue, 17 Nov 2020 23:42:06 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=YbOnyQJ1gNvrT2OUD1e592hHVXbu04/PIFpseUw/upk=; b=bExzvhtw1l89OtcnOABGPUOBPL/iBOSpeN9v3LRIuN5skTt16g1oj2igMtOwwyO9hj M/DitnHSXjLIjmGuCxOaBgCt9rX+MFyQ+1y1fqaQHy9rHnAWYp7/dHhHj2heYdcFeYs9 Y8Ul+ATtnPhpCDaB4yy11ArIZtMwYQ4tzJF09sHiakmlZV/HVqTaP73ik62FspDFVmaB rwbIz/k8hV6FK0mD7EJyR53idYhSxgEIfe8AzbT7XNPilJN6BCFMqgFw4k2faotVIuhE G6PtMSRqekRiN5bd1ATUjwWcI2jUcasOuBtQMDmO4iu9ZObcraXewfNo14yO7Zh/2AWg Ifhg==
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; bh=YbOnyQJ1gNvrT2OUD1e592hHVXbu04/PIFpseUw/upk=; b=IufwTNpEYkBmuYJ1mEH7S2lb/uNm+bOHMCw2e+n/rDcEk46OeZt7KQ3a708rWFONJB 1kOb1pIekzT+ZZLQ+FZUl14pmsyXOUSQMU9iNqZPmchMmXz7bthU37yDM2IisNPNyEbO 8/Ri/YNM+F6Y3imi8By8xVZHL53j5yfRxE2GDex4rEL4K1dNGqRTpasWmLJGGGyDwuvj XTL4Gvr/TLXz3JfKt7KiU3bgPOB3l7HJfgDrpYGq/1HpTiosvoFhsq+37psIyC4msgBu FkVxXexgB7XuFxXL79VVUEdGbqHsu5epzzKuzDwbRpd67DFNmR2T6osZg37e09QykcGI 4SAA==
X-Gm-Message-State: AOAM5332RQCZgDsM6s2Ix2kjMijxbzB1IRKiMtHE3B/zMejUGWVGMNMi JQnkIbDfKnv4s8WO47lwzOtdFS2w4OSuBy0POJJSJ+2auwi+Pw==
X-Google-Smtp-Source: ABdhPJwtuIwx2vUmgIQlOCOWy9GOtU8TvKpX5SsZP4Fe6Oi98Bruftv+9o+L8vIGwX5SbrLaHiKW88Pg60Q2vWJcVYs=
X-Received: by 2002:a2e:9ecd:: with SMTP id h13mr3605503ljk.238.1605685323737;  Tue, 17 Nov 2020 23:42:03 -0800 (PST)
MIME-Version: 1.0
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Tue, 17 Nov 2020 23:41:52 -0800
Message-ID: <CAOW+2dvKqZrz-6t=a3c3fCmVeS7OC_LcF5bs+1-JxNWSpHE7fw@mail.gmail.com>
To: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000057c6bb05b45cbf84"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/uIYt_DUIxfYew2Cj3O5_xdZI_lc>
Subject: [Webtransport] IETF 109 WEBTRANS WG draft minutes
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Nov 2020 07:42:08 -0000

--00000000000057c6bb05b45cbf84
Content-Type: text/plain; charset="UTF-8"

Draft minutes of the IETF 109 WEBTRANS WG meeting are here:
https://datatracker.ietf.org/doc/minutes-109-webtrans/

 Thanks to the note takers!

Please send any corrections to me.

--00000000000057c6bb05b45cbf84
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Draft minutes of the IETF 109 WEBTRANS WG meeting are here=
:=C2=A0<div><a href=3D"https://datatracker.ietf.org/doc/minutes-109-webtran=
s/">https://datatracker.ietf.org/doc/minutes-109-webtrans/</a><br></div><di=
v><br></div><div>=C2=A0Thanks to the note takers!=C2=A0=C2=A0<br></div><div=
><br></div><div>Please send any corrections to me.=C2=A0</div><div><br></di=
v><div></div></div>

--00000000000057c6bb05b45cbf84--


From nobody Thu Nov 26 17:08:13 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3F8843A0D4B for <webtransport@ietfa.amsl.com>; Thu, 26 Nov 2020 17:08:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level: 
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 bGwPRT7nt0cs for <webtransport@ietfa.amsl.com>; Thu, 26 Nov 2020 17:08:11 -0800 (PST)
Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com [IPv6:2a00:1450:4864:20::136]) (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 AAFD53A0D50 for <webtransport@ietf.org>; Thu, 26 Nov 2020 17:08:10 -0800 (PST)
Received: by mail-lf1-x136.google.com with SMTP id u19so4838830lfr.7 for <webtransport@ietf.org>; Thu, 26 Nov 2020 17:08:10 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=OtzIyIftFSluPR9jIp+2KleAvmPOwtSEv3mjHQdn+8o=; b=dxoINaa8RvX6Xegft4LKkhQt96POXseCJJfoljNilqzg96CXjToIeWghbXexkNUvsg G1bovBkehUWzCl6xpMFWrNY9kGsBBlHi9yd9fTbV9Gq1f6wdZehQjPyp6bq2t3hASka5 IJi+vbvAo7DzzehoEsZmo9thiyO0Hc5erSZIdvyy09dcYrZ9FBb0csWzVGWharcp4RHg BsURpAvu6hSslu6LFLQZ8jZHcI6lycFBPeZG8y91S9C6dQVtaA6j/ZvjDK1FXXYYaukS yP6bko91ponSBpp070W1Yk14eHnL27klIqAfeTm737VYf3qku3iq5FPfQsZw0hZAqKYs G1jg==
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; bh=OtzIyIftFSluPR9jIp+2KleAvmPOwtSEv3mjHQdn+8o=; b=mrPhcInN78ACuFd9ajXDkS45nf+vz6KgrJlvAiQwM2Q9zYo5l5gZJaijICyiCURTHO Un0m7e54Yj3jPAZfLn+F1FpYK/uw+cp/MI67GPspccViwsd5/NwVEQug0Pnp2zKb8yLe VR3qPCePIgxDN8msCIjLa1UfNDvrOT5hsSUlA9+VvYEQtfyy2p1vMLYTDeFMuw3yzzr1 90xwJVU4sFXKo2Z4fl+v9ExEzr07ALqIGZvDxTf3iDz4x4l+Lb5nD0Pp2aEzPVnxFljN ouZ5tArDOQHT78zgLLuucIm7D7hSJt0OvwieN3CrOAo9m9LoTv7rCcbF03wvq2wkC1Zf rbUw==
X-Gm-Message-State: AOAM531ShOdVhsIHdzjATFXwqAhntHAVBIKQmjQGojHfb7baDKNDNelC 8dNnRQuHMCT2ZtkcCL2sU4KdeyHe9R1Xjy6pYu/fKBn4b86MvQ==
X-Google-Smtp-Source: ABdhPJzfBI2bYia/EQ3ZSeV0NB5Pos7Hd7M7xzt8JnrZL2IMQcilZZ9j2z1clkhvrNAGf7oEkNtUKXOHFpb1HMMp9bg=
X-Received: by 2002:a19:c658:: with SMTP id w85mr2190386lff.560.1606439288486;  Thu, 26 Nov 2020 17:08:08 -0800 (PST)
MIME-Version: 1.0
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Thu, 26 Nov 2020 17:08:01 -0800
Message-ID: <CAOW+2duMrjeVCB1y18wLmvQMmbX7y79a_oBobj4p1BTbFPw+9g@mail.gmail.com>
To: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000024bf0a05b50c4ba3"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/cXJkChoPOyyMr8RfpxLtrHVdUPY>
Subject: [Webtransport] Reminder: Doodle Poll for Virtual Interim Date
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 27 Nov 2020 01:08:12 -0000

--00000000000024bf0a05b50c4ba3
Content-Type: text/plain; charset="UTF-8"

The Doodle Poll for the Virtual Interim of the WEBTRANS WG will close
tomorrow.  Please fill in your preferences here:
https://doodle.com/poll/38qv9hdazfrxsi7u

--00000000000024bf0a05b50c4ba3
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">The Doodle Poll for the Virtual Interim o=
f the WEBTRANS WG will close tomorrow.=C2=A0 Please fill in your preference=
s here:=C2=A0<div><a href=3D"https://doodle.com/poll/38qv9hdazfrxsi7u">http=
s://doodle.com/poll/38qv9hdazfrxsi7u</a><br></div></div></div>

--00000000000024bf0a05b50c4ba3--


From nobody Sat Nov 28 19:45:05 2020
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4805F3A0FEB for <webtransport@ietfa.amsl.com>; Sat, 28 Nov 2020 19:45:03 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 f1hjmdaghN1G for <webtransport@ietfa.amsl.com>; Sat, 28 Nov 2020 19:45:02 -0800 (PST)
Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com [IPv6:2a00:1450:4864:20::133]) (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 D87E13A0FE4 for <webtransport@ietf.org>; Sat, 28 Nov 2020 19:45:01 -0800 (PST)
Received: by mail-lf1-x133.google.com with SMTP id s30so13647086lfc.4 for <webtransport@ietf.org>; Sat, 28 Nov 2020 19:45:01 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=VL/w4ikJt+K56iWbFr2JzLOjIc1+2i0kqMd0DyRR1tI=; b=LCUZfB5rSdges3xaUmfJVTIpuUfpt/j8b8y8ltwjgiZg11dyqlS4AeF+TaOwQHwBVd d1ZLBcVgjEAMoQfNOpQEiw3RtR5EC6ugL8OH24xiZqFu7oDAgbcAW6Se6LijQrOwg3bx WyX9CMTlwmyBYrb3yRvA3yW71LSJwDVITqJlmvIvlT3BnHJdxC3TCjZxrKhaWbQg7IiU exwP4zoDuj8LC8tRe9NrRr10jRAb1KE8ym8i5Z/bgCZGGkkCUHUsbCz22OKOfqSSTtbw hhU+CVaDN4uuaJOUOswNaPMqBTBE33MU4w01MRUeiiS97fv96SMHPN+IlY/65m4S2Dqb FAwA==
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; bh=VL/w4ikJt+K56iWbFr2JzLOjIc1+2i0kqMd0DyRR1tI=; b=gGJ93m1culhHpuqOQun7oYi2sNcB9oTZwSgvZ3isL8Vcf61yOudwAfxNFJtTYmQ46l ZyhNEJF6vEyQOI01kNOHPbRKOS2RphBoShJCmg0n/FZQO0Pa22Yb9Dh6oSkughw1p8QP yWpqouIBUfTy0dlULUPaxdpgSKPna7xizIY7adWK3Qob5q3dUMPV65rOYFibewHnsg29 bGn15lZMdTaR+xkXaC/n6ZVE6U3LoCAxdM5d3WGo23toEtgUocHUFCfKKK0nkBruxE1q /H3U2VcavEKLBjyp97vzpEg+snH/P5c+vwzIGw9ui8JWZjmEII/LoRKBIbww1CkqO6Z0 Pa0Q==
X-Gm-Message-State: AOAM533HzZ0YSaCPEu12I59gvNJEb4zvBgwO9z6AFunbcM8Ci4R5MCf2 rrfjLic9x6jyBJHtT3Cp5Mp7wMyykBN5KlRhV7Self/cyN8=
X-Google-Smtp-Source: ABdhPJzkXtxXaAfICH7QNWZW72YsVAjSRCsdMAbnenAna7btVlGhJ4la3t4cdcMT6dnbC+AnhvvPrHtDIO6Dln3OYv4=
X-Received: by 2002:ac2:4836:: with SMTP id 22mr6726602lft.41.1606621499834; Sat, 28 Nov 2020 19:44:59 -0800 (PST)
MIME-Version: 1.0
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Sat, 28 Nov 2020 19:44:49 -0800
Message-ID: <CAOW+2dsD-Lji9wMt_iSBcnq1cNUL2V+6kTKJ9VZoPrs8vspMXg@mail.gmail.com>
To: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000c943ed05b536b730"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/NEamaSL86nicoCZOO0cj2drWUvE>
Subject: [Webtransport] WebTransport Virtual Interim date/time
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 29 Nov 2020 03:45:03 -0000

--000000000000c943ed05b536b730
Content-Type: text/plain; charset="UTF-8"

The IETF WEBTRANS WG will have its virtual interim on Tuesday, January 12,
2021 from 8:00 AM - 9:30 AM Pacific Time.

We will announce the conference call parameters on the list.

--000000000000c943ed05b536b730
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">The IETF WEBTRANS WG will have its virtual interim on Tues=
day, January 12, 2021 from 8:00 AM - 9:30 AM Pacific Time.=C2=A0<div><br></=
div><div>We will announce the conference call parameters on the list.=C2=A0=
</div></div>

--000000000000c943ed05b536b730--

