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

Yoshifumi Nishida <nsd.ietf@gmail.com> Mon, 25 March 2024 09:39 UTC

Return-Path: <nsd.ietf@gmail.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 219B3C14F6A2 for <tcpm@ietfa.amsl.com>; Mon, 25 Mar 2024 02:39:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.107
X-Spam-Level:
X-Spam-Status: No, score=-2.107 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, 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, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01] 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 gD9ymANH7rNV for <tcpm@ietfa.amsl.com>; Mon, 25 Mar 2024 02:39:46 -0700 (PDT)
Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) (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 821ADC14F682 for <tcpm@ietf.org>; Mon, 25 Mar 2024 02:39:46 -0700 (PDT)
Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-34100f4f9a2so2444132f8f.2 for <tcpm@ietf.org>; Mon, 25 Mar 2024 02:39:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711359584; x=1711964384; 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=q4RipwCxYxHn182/xCOGv1qgiIrEnOeFybZOpYDAruE=; b=LHljhm2yEY5dAXLAl+XZvAkXpheAlRQuI3ZfSR4/uXG5wAvGbt7JfKCog+H1wYO/W6 Q6WG+NfRER9sDCcx2ZAU6uA2PWgd6QJKqjLPcvgaiVuAXLskWYjvUAumZBGOnF48S9Vn 0hnwCLRcE+rwVX/lgYtGXRE+vK+i0yZhZlWB6B501Y2N4duwCEGKC3asCXLmsrQJRNA4 HMKXCqYY3O7DH9eHRCq6vN4tJXCRAVhuyctdC0pw/UHAFhfkZUnLPKyPJhYbNTNglg1p /IjBRd93zhjXg8Joc7wuIaq+Co5cCTj1O5TunXr4qiHKZ6kBs1jj8QfCE92fUNSd6aBn QaPw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711359584; x=1711964384; 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=q4RipwCxYxHn182/xCOGv1qgiIrEnOeFybZOpYDAruE=; b=jbjlBxnhHfSzmMyC97MlY/+/rShDG87daVH3RPrBZbsVWv42F8sD+zuqbsIjnzTynM HUUqgCwOF/W53VikPvhUi7VFBdY5+cKhYriSKfrkEBwd4qNNwQJg6qJfnGMgGJaljP/V uCeMFgJIvocuBKTSTmqt1OxUvIYSmYWrNdXH7PXIqSoCYGWOsrDTXrwXdjOYR26pUJmH OtNO/mXkPZomiKxvCkc25UcXkt7CV54Eva0MnGzx1WT+wyOYqTXrJhHqJrob8TdLAaAS igHjAOb0XnekcVaMeIFCbTfxhFLyMUvbwONExkvpxWUdqnTXG4LPtUOHG5ubz7Y5ArGe TB1Q==
X-Forwarded-Encrypted: i=1; AJvYcCXPWwmF/+LisdS97svoZt23lAfeCgSxTVLtY9WcpIetwfVIppUquorFy/h+pMupaAigCg5mI7sc7tlnRIv1
X-Gm-Message-State: AOJu0YwzaZuMcbZdFea/RtcDGHm1A+UOPnnH8wP/n2Z3r20vxNYikaur CvHfHqDV5hDY/R07yFZgDj/1eIeFM5QikSxdvYiMbFioBW2L7i1UAQ8kG6tSksLkzkfDmANWdrz Qn62l4dU7E82C0YPBSlCxvmrwkko7cupJLtM=
X-Google-Smtp-Source: AGHT+IEyuWEBELA8nm0wA2963Z/l1jmOXVg9iq3INrpmlmY8YOmykwENDVeIVct26t+mGh/OR4O7kFBODjVcuT2mmIs=
X-Received: by 2002:a05:6000:1105:b0:33e:d605:b8a3 with SMTP id z5-20020a056000110500b0033ed605b8a3mr3968624wrw.39.1711359584439; Mon, 25 Mar 2024 02:39:44 -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> <CADVnQy=Z-Q=nYp1tYEi4wA5nRO6g+RwP+FvPpj+cwb50ptLehQ@mail.gmail.com>
In-Reply-To: <CADVnQy=Z-Q=nYp1tYEi4wA5nRO6g+RwP+FvPpj+cwb50ptLehQ@mail.gmail.com>
From: Yoshifumi Nishida <nsd.ietf@gmail.com>
Date: Mon, 25 Mar 2024 02:39:33 -0700
Message-ID: <CAAK044R09H8nfVzQGAUOK1+vOBmZWhHpjnC0pM_wQxU1w=1Y5w@mail.gmail.com>
To: Neal Cardwell <ncardwell@google.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="0000000000001d1c26061478f446"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/CXyWyXIFLATkR9Qlm7lSPEE5aEs>
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: Mon, 25 Mar 2024 09:39:51 -0000

Hi Neal,

On Fri, Mar 22, 2024 at 2:36 PM Neal Cardwell <ncardwell@google.com> wrote:

>
>
> 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.
>

Got it. Thanks for the explanation. I am personally fine with it although I
would like to see opinions from other folks.
BTW,  I might prefer to say "(bytes newly cumulatively acknowledged if
there's any)" as this looks rare to me. Also, I think we'll need to update
the definition of RecoverFS in Section 5 if we update this.
--
Yoshi