[quicwg/base-drafts] Recovery: when PTO expires and no data to send (#3286)

Junho Choi <notifications@github.com> Thu, 05 December 2019 22:00 UTC

Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id 49B271200EF for <quic-issues@ietfa.amsl.com>; Thu, 5 Dec 2019 14:00:49 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.596
X-Spam-Status: No, score=-6.596 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, HTML_IMAGE_ONLY_28=1.404, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.com
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id E2HL4XReqsFi for <quic-issues@ietfa.amsl.com>; Thu, 5 Dec 2019 14:00:47 -0800 (PST)
Received: from out-7.smtp.github.com (out-7.smtp.github.com []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3D612120073 for <quic-issues@ietf.org>; Thu, 5 Dec 2019 14:00:47 -0800 (PST)
Received: from github-lowworker-f62aa54.va3-iad.github.net (github-lowworker-f62aa54.va3-iad.github.net []) by smtp.github.com (Postfix) with ESMTP id 3FA452C33A9 for <quic-issues@ietf.org>; Thu, 5 Dec 2019 14:00:46 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1575583246; bh=J1ys60RgYgR5MMYcHxywPfvAWGDx7W3MlpzeOY9Y6NU=; h=Date:From:Reply-To:To:Cc:Subject:List-ID:List-Archive:List-Post: List-Unsubscribe:From; b=g+74EK1OQcATd1fCpmTBFxp03Q7W3354PG3JHG0lJS8aVuesyqe9Mtx9akm5LOv+q OFlJNZQnVBayUSlLOQdqiImo5LIOCtMcQQqVPdSu096x1+z756vcIgw9dbjQ0gm+yo MVUA/v1iDeebCBKAat1khsm921qBVJbFyyuKHW5g=
Date: Thu, 05 Dec 2019 14:00:46 -0800
From: Junho Choi <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJKZ3BKEDDQ3QVDOQPJ5362YI5EVBNHHB7TTTBI@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/3286@github.com>
Subject: [quicwg/base-drafts] Recovery: when PTO expires and no data to send (#3286)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5de97e0e3216e_727c3ff3b9acd96469956"; charset=UTF-8
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: junhochoi
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/cSo4jlOk3o2grH1UC_e-xtXEv0c>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 05 Dec 2019 22:00:49 -0000

OnLossDetectionTimeout() pseudo code says:

   // PTO. Send new data if available, else retransmit old data.
    // If neither is available, send a single PING frame.

And "Sending Probe Packets" says:

> When a PTO timer expires, a sender MUST send at least one ack-eliciting packet in the packet number space as a probe, unless there is no data available to send
> When there is no data to send, the sender SHOULD send a PING or other ack-eliciting frame in a single packet, re-arming the PTO timer.

For me it's a little wasteful to keep sending an ack-eliciting frame (including PING) as a Probe packet when there is no data to send. In this case if the client become unresponsive before receiving PING, the server may keep sending PING as a Probe packet until idle timeout expires in this case.

I think it's better to update as follows:

"When there is no data to send and *last Probe packet included an application data*, the sender SHOULD send a PING or other ack-eliciting frame in a single packet, re-arming the PTO timer."

It will make sure that PING as a Probe packet is sent once when the server has no further data to send.

You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub: