[quicwg/base-drafts] Crypto retx timeout should have higher priority than time based loss detection (#2565)

Yang Chi <notifications@github.com> Fri, 29 March 2019 16:06 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 8FBD712018F for <quic-issues@ietfa.amsl.com>; Fri, 29 Mar 2019 09:06:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8
X-Spam-Status: No, score=-8 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_32=0.001, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, 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 FOzTuXu6cG2e for <quic-issues@ietfa.amsl.com>; Fri, 29 Mar 2019 09:06:46 -0700 (PDT)
Received: from out-1.smtp.github.com (out-1.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 5756712004C for <quic-issues@ietf.org>; Fri, 29 Mar 2019 09:06:46 -0700 (PDT)
Date: Fri, 29 Mar 2019 09:06:44 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1553875604; bh=+HSjMtzaykNjMZj0vwDbGpDMljFgWkt7MlzC9gfyYb0=; h=Date:From:Reply-To:To:Cc:Subject:List-ID:List-Archive:List-Post: List-Unsubscribe:From; b=sWyyj+Q+E0aqL2v9pUWxVMx5aZZz8cCKPEWC7x4bdsJVcvu3GS0ltDajcRdhdiF2e C9aeYHBuiahFN/K7mV9Dab+1ptnUIbdLCKyMtjkcYnl6ks7S35uLwqHhzvlWNdQ/Ir is4dfhH4af6Y+EVFwwPL0GJWsx+lV6mw1/suHg1A=
From: Yang Chi <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4aba80bec29fc7d9fca0619fd7a5fbb38c1301a2e2b92cf0000000118b6049492a169ce19747553@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/2565@github.com>
Subject: [quicwg/base-drafts] Crypto retx timeout should have higher priority than time based loss detection (#2565)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5c9e4294bdb8f_110c3f9cb42d45c024896d"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: yangchi
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/EBId4K0BtiJv9I7bMoIAhR4ILzQ>
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: Fri, 29 Mar 2019 16:06:49 -0000

In both SetLossDetectionTimer() and OnLossDetectionTimeout(), the loss_time based timer setup and loss detection happens before the crypto loss recovery logics. That seems at the cross road with the idea that crypto packets having higher priority in loss recovery. In fact in OnLossDetectionTimerou(), if loss_time is present and we go into DetectLostPackets(), then we will only decect loss of one packet number space between Initial and Handshake. Plus the loss_time used to set the timer is the earliest among all possible values, which means even if only one of Initial and Handshake space has inflight packets, we may still not retransmit all the inflight packets when this timer fires. So this current code really doesn't follow the idea that when crypto is inflight and loss timer fires, all inflight crypto needs to be retransmitted.

If we change the code so that crypto is handled the first, we can also reduce the states need to be maintained and simplify some of the functions. Current draft 3 loss_times, one per packet number space. By always handling crypto first, we will need such loss_time for AppData space only, and no need to have the helper function to GetEarliestLossTime().

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