Re: [tcpm] questions on draft-ietf-quic-recovery

Yoshifumi Nishida <> Thu, 01 November 2018 23:12 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 1F67512D4EC; Thu, 1 Nov 2018 16:12:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_PASS=-0.001] autolearn=unavailable autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 8DIv-Zc9PtDo; Thu, 1 Nov 2018 16:12:24 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 9145812D4EA; Thu, 1 Nov 2018 16:12:24 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTPSA id 4E0DB2786C7; Fri, 2 Nov 2018 08:12:22 +0900 (JST)
Received: by with SMTP id e74-v6so866878ita.2; Thu, 01 Nov 2018 16:12:22 -0700 (PDT)
X-Gm-Message-State: AGRZ1gJYfktCDnu3pV1HyutnS7lT1dY3lsh35nFplJcT7u/Uw5b1rN2d zD2DzLzwA5PsQKFVs+LqKlnVoqmPnQ0NkzCV39s=
X-Google-Smtp-Source: AJdET5coIBzPvNB3tuj8RXrRJWy0oPjCI/tF+9O2JWHzZkQdDDUg2N6cJBm01j5erqWJ83aFutI8zvyET6DwsG+TKAc=
X-Received: by 2002:a24:36d2:: with SMTP id l201-v6mr7961210itl.130.1541113940661; Thu, 01 Nov 2018 16:12:20 -0700 (PDT)
MIME-Version: 1.0
References: <> <>
In-Reply-To: <>
From: Yoshifumi Nishida <>
Date: Thu, 01 Nov 2018 16:12:09 -0700
X-Gmail-Original-Message-ID: <>
Message-ID: <>
Cc: Yoshifumi Nishida <>,, "" <>,
Content-Type: multipart/alternative; boundary="000000000000fddd190579a28ce7"
Archived-At: <>
Subject: Re: [tcpm] questions on draft-ietf-quic-recovery
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 01 Nov 2018 23:12:28 -0000

Hi Ian,

Thank you so much for the detailed response. Things are getting clearer to
me now.
I will need to have some time to think about some of them, but I would like
to comments on the following points.
Also, I am very sorry that I have mostly read -15 version and didn't have
enough time to check -16 carefully (so, my question on was wrong) .
I will try to re-read -16 before the meeting.

On Tue, Oct 30, 2018 at 6:34 PM Ian Swett <ianswett=> wrote:
> Thanks for your careful reading, answers inline.
> On Mon, Oct 29, 2018 at 1:03 PM Yoshifumi Nishida <>
>> Section 4:
>>    QUIC supports both ack and timer for loss detection.
>>    But, it's not very clear whether an implementation can choose one
>> of them or it should implement both and can use both at the same time.
>> Can it be clarified?
> Yes, there's an open Issue to clarify this.
> The outstanding PR is quite old, but has some helpful clarifications in
it, so I'm intending to migrate the best parts to a new PR.  Suggestions(or
PRs) welcome.

I don't have explicit suggestions for now, but I guess we will need to
think about the following 2 questions.

Q1: Should implementations should support both modes or are they allow to
support only one of them?
Q2: An implementation that supports both modes can activate both logics at
the same time or the mode should be used exclusively?
I think these questions will lead to another question: How much freedom
implementations should have. For example, how much implementations should
follow the pseudo codes.

>> Section 4.2.2:
>>    The early retransmit logic in QUIC seems to be different from TCP's
>>    It doesn't look ack-based as it relies on timer. (I don't say this
>> is bad, but it's a bit strange to categorize it as an ack-based
>> method)
>>    TCP's early retransmit will be triggered only when the amount of
>> outstanding data is less than 4*SMSS, but this draft doesn't mention
>> about the condition. Is there any reason for it?
>>    when timer-based loss detection is used, it this logic still
>> available? or it won't be used with timer-based loss detection? We
>> might need clarifications here.
> The timer is taken from Linux, as mentioned at the end of 4.2.2.  It's
categorized as ACK based because it is only armed when a packet with a
larger packet number than the one being lost has been acknowledged.  One
could argue the same issue for time based loss detection, which also needs
a timer.
> Instead of 4*SMSS, we specify kReorderingThreshold, since it seemed like
the core issue being fixed was that there was no other mechanism for
quickly declaring these packets lost, and if one did implement adaptive
reordering tolerance, one threshold wouldn't be out of sync with the other.
> The intent is that like RACK, timer based loss detection subsumes early
retransmit.  But yes, this text could use some further clarification,
including and not limited to items pointed out in #1212.

Hmm... but, as you implement the logic in such a way, I think the current
early transmit logic in the draft is similar to the TLP logic in the draft.
If time_reordering_fraction is 1/8, it seems to me they are mostly
(Well, one may say this is a natural thing because early transmit and TLP
is aiming similar goal)

I might still overlook something, but it seems to me that the ack-based
scheme in QUIC just looks the time-based scheme in QUIC + retransmission
scheme with dupack threshold.
But, in this case, I am wondering that it may be enough just to have
ack-based scheme.

BTW, the original early retransmit in RFC5827 is to reduce dupack threshold
(kReorderingThreshold in QUIC) when outstanding data is less than 4 *SMSS.
Another condition is to activate only when there's no data to be sent in
the queue.
I  am thinking there would be a way to do this type of early retransmit in
QUIC by tweaking reordering_threshold although I probably don't recommend