Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc6937bis-06.txt

Neal Cardwell <ncardwell@google.com> Fri, 22 March 2024 21:36 UTC

Return-Path: <ncardwell@google.com>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B9D23C14F6A7 for <tcpm@ietfa.amsl.com>; Fri, 22 Mar 2024 14:36:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.609
X-Spam-Level:
X-Spam-Status: No, score=-17.609 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.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 kGfF9WSB0ZUQ for <tcpm@ietfa.amsl.com>; Fri, 22 Mar 2024 14:36:25 -0700 (PDT)
Received: from mail-vs1-xe30.google.com (mail-vs1-xe30.google.com [IPv6:2607:f8b0:4864:20::e30]) (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 0C4BAC14F6A6 for <tcpm@ietf.org>; Fri, 22 Mar 2024 14:36:25 -0700 (PDT)
Received: by mail-vs1-xe30.google.com with SMTP id ada2fe7eead31-476665f067fso958539137.1 for <tcpm@ietf.org>; Fri, 22 Mar 2024 14:36:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1711143384; x=1711748184; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=hKMnTPbQz3tHYJMdbaMZnKw2nnorSWJVPeFCaMaiHlY=; b=nt6LoQpJ0Eq85I1tVDCUU+C40WHnkLa8Lkmj567oiEWaqLzRmLfYJdUV3/5w5Ng7O7 vB0vylOMv3p2KZnVx2FtRmgsrGM5BD/k4fSeqDwNM7cTtgO8F9ius7QndiMcx3TkCTd5 5K1FQvLrJUSfHM3F3QVJ+8cQV1accc7I9aYDcgRgkhuUYUD0MnBBpqImNOOxqmnzCXdT 7mAF1wVDAVEYBue9GZy2cBOoq2hBy0b3kROBt5HaW+K98G1ZrqMdpOqovgLMvKREvTyu tk7/eI10wyYvuXHWE5KPY8fH24BTHVnD7C/DYNGZuxX+wswWFvG4TasGtRM8wF01AxTc jp+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711143384; x=1711748184; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=hKMnTPbQz3tHYJMdbaMZnKw2nnorSWJVPeFCaMaiHlY=; b=Xn8miEU5IWA4eFfBzDUcmLlyZNLIkpb3w7k5lPmmq/Ogrr+QDYbEALfM5ycSkT94Mz 9gaamQbt+fZsUU9mLb3cLrO8+bJtJ6kZx2YH/2VwtziGgki2+PAukJCR0n22eKGrRZnd RSFKKAoLS9ei4dKhi7PpcIwpV8SSuwxJN3GZ2If56Vu38t+g/K4ZXlIdiywokGn6aCqC +f62JsjaBIvSVLtyWSXYvgxDAfw4Ip3VwY5USXIR7X+xgyx4bLz/AU2f220UuFwUBPeV z3s5IWRwdqBEc4BXqLZFd59JHkLdNZKUc4RLLeio5bzyTkpfxZYiQztrAKsim17Mu27E /QDQ==
X-Forwarded-Encrypted: i=1; AJvYcCVg+OXwhODvH73KsJ+WfqX2mGABY4e1EK17Vn9QwICmpKrhnP95ayv4sMUGr4UA8+QmbBV3c5cE6K9psEAR
X-Gm-Message-State: AOJu0YyzjAjjKqMZb4Wv1/66TEG/a5dijCvP0aie9DY0lRTF59u4RAXU rHbpIzCNYnlnxJdaPG5Tx+S9EdOgUQnfGLwdsZjgAJ41YambMzQAzTlfS4tP27I8b0cnvBBwx3o pw1DObZOqCJxhKWUMm1OkNPsL5uj4q5b5+UsPFZl5yFaEolBGOWxB
X-Google-Smtp-Source: AGHT+IFdgxk4/Sr/XZNdBbzHXNecP488rJhb0jCWMCmFiNs8WImGp5KzkX9q25BTpHHoM/i1yCCocTKIVMzw+NOGmoU=
X-Received: by 2002:a05:6102:3a11:b0:474:c314:9fa1 with SMTP id b17-20020a0561023a1100b00474c3149fa1mr1015833vsu.5.1711143383886; Fri, 22 Mar 2024 14:36:23 -0700 (PDT)
MIME-Version: 1.0
References: <170896098131.16189.4842811868600508870@ietfa.amsl.com> <CADVnQy=rvCoQC0RwVq=P2XWFGPrXvGKvj2cAooj94yx+WzXz3A@mail.gmail.com> <8e5f0a7-b39b-cfaa-5c38-edeb9916bef6@cs.helsinki.fi> <CADVnQynR99fQjWmYj-rYZ4nZxYS=-O7zbfWjJLMxd5Lqcpwgcg@mail.gmail.com> <CAAK044SJWsvqWf+Tt3wUeGpMRH6aVg175CFUBrsz_YyhDsKYwQ@mail.gmail.com> <CADVnQy=0yhx9U-ogVX_Dh66fZWGyMzqtWAgSfaYXX-6ppGx=Kg@mail.gmail.com> <CAAK044So4qO4zma-qdYbMrJcNVdRi1-o30wcP7QjKLuT2c_Zuw@mail.gmail.com> <CADVnQynvFY24cNfe4tfm6FMY47UaMPjxrtD5RwWhCPK6EH4=6w@mail.gmail.com> <CAAK044QWL2xBvg4S_cvHFE_iTddSmnEOkhu33pftvUiUCCGZ_g@mail.gmail.com>
In-Reply-To: <CAAK044QWL2xBvg4S_cvHFE_iTddSmnEOkhu33pftvUiUCCGZ_g@mail.gmail.com>
From: Neal Cardwell <ncardwell@google.com>
Date: Fri, 22 Mar 2024 17:36:03 -0400
Message-ID: <CADVnQy=Z-Q=nYp1tYEi4wA5nRO6g+RwP+FvPpj+cwb50ptLehQ@mail.gmail.com>
To: Yoshifumi Nishida <nsd.ietf@gmail.com>
Cc: Markku Kojo <kojo@cs.helsinki.fi>, Matt Mathis <ietf@mattmathis.net>, Matt Mathis <mattmathis@measurementlab.net>, tcpm@ietf.org
Content-Type: multipart/alternative; boundary="0000000000008ed99a0614469d4a"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/VvczTHZWne4LqwKs9c1LKdBfdAg>
Subject: Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc6937bis-06.txt
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpm/>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 22 Mar 2024 21:36:25 -0000

On Thu, Mar 21, 2024 at 6:30 PM Yoshifumi Nishida <nsd.ietf@gmail.com>
wrote:

> Hi Neal,
> On Wed, Mar 20, 2024 at 1:32 PM Neal Cardwell <ncardwell@google.com>
> wrote:
>
>>
>>
>> On Wed, Mar 20, 2024 at 3:29 PM Yoshifumi Nishida <nsd.ietf@gmail.com>
>> wrote:
>>
>>> Hi Neal,
>>>
>>> On Wed, Mar 20, 2024 at 6:55 AM Neal Cardwell <ncardwell@google.com>
>>> wrote:
>>>
>>>>
>>>> On Wed, Mar 20, 2024 at 3:07 AM Yoshifumi Nishida <nsd.ietf@gmail.com>
>>>> wrote:
>>>>
>>>>>
>>>>> On Mon, Mar 18, 2024 at 8:13 PM Neal Cardwell <ncardwell=
>>>>> 40google.com@dmarc.ietf.org> wrote:
>>>>>
>>>>>>
>>>>>> But your point still stands, and you raise a great point: simply
>>>>>> initializing RecoverFS to "pipe" is not safe, because packets that were
>>>>>> marked lost and removed from pipe may actually have been merely reordered.
>>>>>> So if those packets are delivered later, they will increase the numerator
>>>>>> of prr_delivered / RecoverFS without increasing the denominator, thus
>>>>>> leading to a result above 1.0, and thus potentially leading to a target for
>>>>>> Sent_so_far that is above ssthresh, causing the algorithm to erroneously
>>>>>> exceed ssthresh.
>>>>>>
>>>>>
>>>>> Hmm. I have a native question here. If packets were merely reordered,
>>>>> isn't it ok for cwnd to be bigger than ssthresh?
>>>>>
>>>>
>>>> Yes, if packets were merely reordered and none were lost, then I agree
>>>> it would be OK for cwnd to be bigger than ssthresh. And in fact I would
>>>> argue that cwnd should be reverted back to its value before fast recovery.
>>>> And this is in fact what Linux TCP would do, using loss recovery "undo"
>>>> mechanisms based on TCP timestamps or DSACKs.
>>>>
>>>> However, in the kind of scenario Markku described, there was not merely
>>>> reordering, but also real packet loss: "1 packet is lost (P1), and 24
>>>> packets are delayed (packets P2..P25)". In the traditional loss-based
>>>> Reno/CUBIC paradigm, any non-zero amount of real packet loss in fast
>>>> recovery should result in the same multiplicative decrease in cwnd,
>>>> regardless of the combination of reordering and loss. We could argue about
>>>> whether that approach is the best approach (BBR, for example, takes a
>>>> different approach), but that is a very different discussion. :-) For now
>>>> AFAICT we are focused on PRR's faithful enactment of the congestion control
>>>> algorithms decision to reduce cwnd toward ssthresh when there is any
>>>> non-zero amount of real packet loss in fast recovery.
>>>>
>>>
>>> Got it. But, I just would like to clarify whether we are discussing the
>>> inflation of sndcnt during the recovery process or cwnd after the exit of
>>> recovery.
>>>
>>
>> Good point. We are talking about inflation of sndcnt during the recovery
>> process.
>>
>>
>>> Because I'm personally not very keen to address miscalculation of lost
>>> packets due to reordering during the recovery process as it seems to be
>>> tricky.
>>>
>>
>> It is tricky, but I think it is feasible to address. What do folks think
>> about my suggestion from above in this thread:
>>
>>   existing text:
>>      pipe = (RFC 6675 pipe algorithm)
>>      RecoverFS = pipe              // RFC 6675 pipe before recovery
>>
>>   proposed new text:
>>      RecoverFS = snd.nxt - snd.una + (bytes newly cumulatively
>> acknowledged)
>>
>
> Hmm. Sorry. I'm not very sure about the difference between snd.nxt -
> snd.una and snd.nxt - snd.una + (bytes newly cumulatively acknowledged)
> Could you elaborate a bit? I thought we don't have data which are
> cumulatively acked in case of reordering.
>

The  addition of (bytes newly cumulatively acknowledged) is unrelated to
reordering. It just seems necessary AFAICT to avoid another way for the
target number of packets to send to be greater than ssthresh.

As I noted above, I'm proposing here to add in  (bytes newly cumulatively
acknowledged) because in a (probably rare) corner case where the ACK that
initiates fast recovery advances snd.una, then the   (bytes newly
cumulatively acknowledged)  on that first ACK will be non-zero, and will be
added into prr_delivered. So if RecoverFS does not include (bytes newly
cumulatively acknowledged) in such cases, then we could again trigger the
kind of scenario Markku raised where prr_delivered > RecoverFS. In such a
case that could trigger the connection to send more than ssthresh bytes in
flight.

However, I think it won't be good if it's propagated to ater the recovery.
>>> But, don't we reset cwnd to ssthresh at the end of recovery?
>>>
>>
>> Yes, Linux TCP does reset cwnd to ssthresh at the end of recovery. And we
>> discussed putting that in the draft last year in the
>> thread "draft-ietf-tcpm-prr-rfc6937bis-03: set cwnd to ssthresh exiting
>> fast recovery?". But it looks to me from reviewing the draft that we never
>> got around to inserting that in the draft. I will do that now, and post the
>> proposal in that thread for discussion.
>>
>
> Thanks! I believe that reflects the consensus of the WG.
>

Great!

thanks,
neal



> --
> Yoshi
>
>>