Interaction between DLPMTUD and Idle Timeout

Marten Seemann <martenseemann@gmail.com> Fri, 13 May 2022 10:01 UTC

Return-Path: <martenseemann@gmail.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 45F39C159527 for <quic@ietfa.amsl.com>; Fri, 13 May 2022 03:01:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.199
X-Spam-Level:
X-Spam-Status: No, score=-0.199 tagged_above=-999 required=5 tests=[BAYES_20=-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] 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 JLk0xhfvUFXG for <quic@ietfa.amsl.com>; Fri, 13 May 2022 03:01:53 -0700 (PDT)
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com [IPv6:2a00:1450:4864:20::234]) (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 D5E91C15E413 for <quic@ietf.org>; Fri, 13 May 2022 03:01:53 -0700 (PDT)
Received: by mail-lj1-x234.google.com with SMTP id s27so9685182ljd.2 for <quic@ietf.org>; Fri, 13 May 2022 03:01:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=TVOtUPhyKYTHFWgst/6QPBH0iCSZWnpIY3NG47iMXSc=; b=CJpXXRgTADwTVNAyT7rOaKo6qGToT+zYZHLkDTKGicrg4G9EFraDXFLiXpeew+rDnL MkIzaM3WV8Mj8ZPxyrxNEYs+Rn4F8PVunHFMWTpzrIIMq+pt/7Wj71luAykQdcZQee8B 9xj9azHnOo9NaqmvlccbowyvH9HnIw2dfuoNn45y+Ty/GD9NKzilj7VAO5AJ9CnyS2li Ib4kUQqwEAQN+MpQbCy8o7cuXo8S1BFtdv5SXzr4Jt5sEXsLI+6N3ZUeplIoWA3CDbO1 EKOw7NbWsGy7SoXSjf1zlnTFSeTX0MZB9VFuhCZb3SJHcZj8P4f22hb4Uf1CLqPcr6Ua Yxmg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=TVOtUPhyKYTHFWgst/6QPBH0iCSZWnpIY3NG47iMXSc=; b=gAyhIqj6Gvu5sg8NKI4pCn4wSidE+obNKBorK7DGpN07yto8KzltM3bBhjW8IVNWYg M8lnvm1vrp+gWvKTQjA0J2J3iCxjFxsP+QlqwqnsoH4BGF7Cs/LbLp92iMvukIFE7kXm mnouPZP45LStkfmmC3TurcWGrLRqwwALQHgXjr/MAWU0j3gCx+ZiVWQ4kzaw1yUA0vnO 8JZRGtA3vFoPVYmbEP9h5DAMaZwRoDP7U5gDK+ZyBJoPQl4VAxGrstxGhjmRps+/LGCi U7qgk3KUv8v/6utCSZ0Rm5DdWm6yfEeNTlnfZwQUNgGPqQ2VacGLbgDa2CRLS02hXtP3 IMqA==
X-Gm-Message-State: AOAM531S2xOhCXtGPgkUL6Idv+lAQgudQXw7kZgKeuU1ZhnwYpl9Cs+n B5r9l2IcQ11mOIv+VnJmPZ6xCZeQSOujouPutYG50UW+ptU=
X-Google-Smtp-Source: ABdhPJwImj/zpCxISHKu3kcEXSWus83cvm7fq1UuFaQjP0WRRClTI0JgZm3xE9W1kz6RUX1aNaPEFs1B19jxj5UWdEs=
X-Received: by 2002:a2e:9806:0:b0:24f:f00:6375 with SMTP id a6-20020a2e9806000000b0024f0f006375mr2528529ljj.411.1652436110954; Fri, 13 May 2022 03:01:50 -0700 (PDT)
MIME-Version: 1.0
From: Marten Seemann <martenseemann@gmail.com>
Date: Fri, 13 May 2022 12:01:39 +0200
Message-ID: <CAOYVs2oM-vzsE0pwG-9n+xwN=z7fEBXtFQ9rh+oD03i5CR8mUg@mail.gmail.com>
Subject: Interaction between DLPMTUD and Idle Timeout
To: QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000068544c05dee1c365"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/HSo9yB_6wn1dCHtO7EDyYgZbNPA>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.34
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 13 May 2022 10:01:55 -0000

I ran into an unexpected interaction between DLPMTUD and QUIC's idle
timeout in my implementation. I've implemented the "Probing using padding
data" described in the DLPMTUD draft: I send a single PING frame and then
use PADDING frames to achieve the desired probe packet size.

Assume that you're sending MTU probe packets on a timer, and that timer
fires a long timer after the connection became idle (but before the idle
timeout). Peer A will therefore send a probe packet to its peer, B. Since
the probe packet is ack-eliciting, this resets the idle timeout timer for
A. It now happens that the probe packet is too large for the path, and the
packet is dropped. Therefore, B's idle timeout is not reset, and A and B
will have a large disagreement about the start and end of the idle period.

This root cause of this disagreement is that MTU probe packets are treated
differently than other ack-eliciting packets from a loss recovery
standpoint: they are not retransmitted, but their loss is interpreted as a
signal that the path doesn't support that particular MTU.

Note that A not resetting the idle timer when sending a probe packet
doesn't solve the problem. There's another case where this fails: Assume
this time the probe packet is received by B, but the ACK for that packet is
lost. Now B will have reset its probe timer when it received the probe
packet, but A will not, leading again to a large disagreement about the
start and end of the idle period, this time in the other direction.

I can see multiple solutions to this:

   1. Don't send MTU packets on a timer. Only send them when application
   data is sent. This avoids sending packets during periods of quiescence
   (might be good to not wake up the network interface), but it also means
   that we're not using those periods of quiescence, where plenty of
   congestion window is available.
   2. Retransmit the PING frame from the probe packet in a normal size
   packet, until it is acknowledged. This is sad, since it will cause an
   additional packet to be sent every time a probe packet is lost.

Any thoughts on how to best deal with this?

Cheers,
Marten