[Webtransport] Flow Control for high-throughput Streams

Marten Seemann <martenseemann@gmail.com> Tue, 19 March 2024 09:47 UTC

Return-Path: <martenseemann@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 3849AC14F73F for <webtransport@ietfa.amsl.com>; Tue, 19 Mar 2024 02:47:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.107
X-Spam-Level:
X-Spam-Status: No, score=-2.107 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, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01] 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 ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Q3w4n52aNToo for <webtransport@ietfa.amsl.com>; Tue, 19 Mar 2024 02:47:51 -0700 (PDT)
Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B6009C14F5F4 for <webtransport@ietf.org>; Tue, 19 Mar 2024 02:47:51 -0700 (PDT)
Received: by mail-ej1-x62f.google.com with SMTP id a640c23a62f3a-a466fc8fcccso637347766b.1 for <webtransport@ietf.org>; Tue, 19 Mar 2024 02:47:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710841668; x=1711446468; darn=ietf.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=aY+qOblW5+7+aVuW6ZhI9MNVue7g0ZL8P8Ht4bdKLp4=; b=ZkDPfRXeXzNlRMHS75i5cT/LR6YuKNARzjcTUVxi/bfhgXwm8B4A2q0acNsqmJskzt 4zV8+lMOh82tBIv5wVbs9U2yT+4jcgPcCLFtPps0WZ8O989beEg9j/De/XOwZu0zFmgF A09A8PBCyZDAYJaesTb96FQ+mZ1qtG1nD4OPA+G4hOyjLhSFCtPVDSQYEF+tzcJDVvJY D5+7Y48xcuihQGp/VcUzGIDBCafyLB+Y1fo1xrJ6MdU4WQsmXsFb+cVJmZXeYIOVHSpt pHxO3P77vk3YIylGkzZUfqUWmbvWzaUQau0EU5BnzxQ64Y5KFRNDZ/DvjB3L9c9S8z7I 9DVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710841668; x=1711446468; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=aY+qOblW5+7+aVuW6ZhI9MNVue7g0ZL8P8Ht4bdKLp4=; b=aYayDYSfqgxZWhscouuuwpv0o9zKNnT8heGQKWta8jpxyi41dyT3ULDfYW3OIA4ssa 04iIUEWAN75fwLfUMhvgGdfp+yajZeb7IAX6Wj/4QRi34b3Wh/j3kGzp0bIVCuaYaJCJ G2uuFn8qUp3RrHZSSv2SDmCJhpo7wSSgC/l+NGG4ERxTj7VgCmLXVquCwCgA1nsIMHvx if8QYQOULPR3rPgQ3ixiR63rmsMn0NJptgSTdTJGHfw7zYLL/6qBIvk0SCpEFiZQnAws 3/ekkycxDvsnO83qLJULeIoFCCl7V7CC+gH8klATL3TDheaRCc7JBNaJTLs9gabx72hy FH2w==
X-Gm-Message-State: AOJu0YyCFiydBf1ohfJib8tHo3uj8p3CanefUfPGFcFnCayrI72w6OQK 0GC6kVYMP/U2xz4Egb1Au/qakoZuQH3K2yzlMetHQDESA5U3Zaq32PW6X5bim1JRG6rRLfi8uqT Yj0fP9QgfJti+kY/9TiKvVGaVRFRTRIEDgFT6BIJR
X-Google-Smtp-Source: AGHT+IHgT8xGBVTWc9aEQTIMv/o9XaqRbtaUHiuAPS1zIULqIYwFxbglMlpimfC/Nz2zAsgW0/DSkeS6fM7d4PiUpxg=
X-Received: by 2002:a17:906:199b:b0:a46:c8e3:c9b9 with SMTP id g27-20020a170906199b00b00a46c8e3c9b9mr2706717ejd.42.1710841668313; Tue, 19 Mar 2024 02:47:48 -0700 (PDT)
MIME-Version: 1.0
From: Marten Seemann <martenseemann@gmail.com>
Date: Tue, 19 Mar 2024 19:47:36 +1000
Message-ID: <CAOYVs2qshgTP6SaB0KtwvMixQ_pHKYUajfHzDqf1eG04-hAk7w@mail.gmail.com>
To: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000e82af90614005d63"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/ilM905-C3EG_0S6KSoB6vjNXdP8>
Subject: [Webtransport] Flow Control for high-throughput Streams
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: WebTransport WG <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, 19 Mar 2024 09:47:52 -0000

After the discussion we had in yesterday’s session, I’ve spent some more
time thinking about how and in which situations the HoL blocking introduced
by putting flow control capsules on a control stream might hurt
performance. Unfortunately, this is not an edge case, but a fairly common
scenario.

Consider an application transferring a large amount of data on a single
stream. In QUIC, the receiver would select or auto-tune the stream receive
window to slightly exceed the connection's BDP, assuming it sends
MAX_STREAM_DATA frames multiple times per RTT. This ensures that
flow-control doesn’t block the transfer. If MAX_STREAM_DATA is sent less
frequently, a window slightly larger than the BDP is needed to be able to
fully utilize the available bandwidth.

For connections not terminating at a CDN's edge, BDPs can be quite large
due to the longer RTTs. For instance, a 200ms RTT connection with a
bandwidth of 1 Gbps has a BDP of 25 MB.

When packet loss occurs on the WebTransport control stream (in upstream
direction), no capsules can be read until this packet loss is repaired,
which takes at least (since loss detection might take some time as well) 1
RTT. This applies even if the control stream is given the highest priority
when sending. For a BDP-sized flow control window, this means that the
high-throughput stream (in downstream direction) is now blocked on flow
control until the retransmission arrives (i.e. for at least 1 RTT).

The solution suggested in yesterday's session, "just use higher flow
control limits," would mean increasing the stream flow control window to
(at least!) 50 MB from 25 MB for our example. This approach seems
unappealing from a resource allocation standpoint.