Re: [tcpm] hystart++
Randall Stewart <rrs@netflix.com> Thu, 02 December 2021 20:09 UTC
Return-Path: <rrs@netflix.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 A79133A085C
for <tcpm@ietfa.amsl.com>; Thu, 2 Dec 2021 12:09:06 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.8
X-Spam-Level:
X-Spam-Status: No, score=-2.8 tagged_above=-999 required=5
tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.701, DKIM_SIGNED=0.1,
DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001]
autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key)
header.d=netflix.com
Received: from mail.ietf.org ([4.31.198.44])
by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id EZ-BqJ-PSLUv for <tcpm@ietfa.amsl.com>;
Thu, 2 Dec 2021 12:09:02 -0800 (PST)
Received: from mail-pg1-x536.google.com (mail-pg1-x536.google.com
[IPv6:2607:f8b0:4864:20::536])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by ietfa.amsl.com (Postfix) with ESMTPS id 56D153A0856
for <tcpm@ietf.org>; Thu, 2 Dec 2021 12:09:02 -0800 (PST)
Received: by mail-pg1-x536.google.com with SMTP id l190so830438pge.7
for <tcpm@ietf.org>; Thu, 02 Dec 2021 12:09:02 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netflix.com; s=google;
h=from:message-id:mime-version:subject:date:in-reply-to:cc:to
:references; bh=KoNlLW8zl/Kx8iFuT5YOzdFXFiMh/+C+YRxYVemYEP8=;
b=KOOZ4lvcKY3fBZ1WmzFcxfRzG9nlWGaNflco29vYhvIvMAH/gcGvZ+6NUKYSsW7Cb1
fMy3/YxJoFDaEgqV2/uV2oeD5fEghUpe0LQoO1k4olDBntr5OAfy7VN5Tgl6+ryj35ie
K7X5O2Vh4+apnJovpslWd659A0Yxd1Kh0OtuM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20210112;
h=x-gm-message-state:from:message-id:mime-version:subject:date
:in-reply-to:cc:to:references;
bh=KoNlLW8zl/Kx8iFuT5YOzdFXFiMh/+C+YRxYVemYEP8=;
b=W52cQfboBZPhl1GBc+M7uoHYT5h3IAnwLW/srOA0qNDVUVarDLE2kT9xjTO2AUV8dJ
zN2LBdzgUYfqwvGle275SjW5ozt8jPFViOuYP4y/hNfVj4IrFAxTCHs8GJNHMxi9ckEm
zcE7/4R+/XEt7uxfCS8D/o6rY72i494HANFdS+TxY0iJTG+2xwOUC3TS6qcZ+EYCNZqD
BuabwVeY5zZ+B5SHAvsN8sYduB/aMd2M0w0VjcoFQGfLincoLEiZSAaioMvQnr0VITkX
O/ZY7+YtHyB1AOtkD7Hu25U+u32GSggOokYc9UPT+xL0lNMw4Q+nq/hFnx221dY0U5jl
O07w==
X-Gm-Message-State: AOAM533Ysk0eT1vq0bgsjqeko/5R2/xasqnT9LvBDblURq4tLqM3qz6d
qjhNwribrHXOhv3eJ6hbIeia2TviLkNwIQ==
X-Google-Smtp-Source: ABdhPJxSeC8gQGSmTg7d5hiBzT8yabZIGDBxDWgqAJdYBxjuilzEHtXJBCu+pQAaeB3eHWcS1JP3Qw==
X-Received: by 2002:a05:6a00:1693:b0:44c:64a3:d318 with SMTP id
k19-20020a056a00169300b0044c64a3d318mr14507865pfc.81.1638475740852;
Thu, 02 Dec 2021 12:09:00 -0800 (PST)
Received: from smtpclient.apple
(nonat-pool-1510-nbry-162-213-116-120.carolinaconnect.net. [162.213.116.120])
by smtp.gmail.com with ESMTPSA id q32sm342845pja.4.2021.12.02.12.08.59
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
Thu, 02 Dec 2021 12:09:00 -0800 (PST)
From: Randall Stewart <rrs@netflix.com>
Message-Id: <E177EAF0-3DD7-4137-A293-8C033A890C65@netflix.com>
Content-Type: multipart/signed;
boundary="Apple-Mail=_FBCB8776-DC4E-491B-BCE6-EEC051AF9EE7";
protocol="application/pkcs7-signature"; micalg=sha-256
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.13\))
Date: Thu, 2 Dec 2021 15:08:58 -0500
In-Reply-To: <CADVnQyk1=JO-yt_MThxLCZ2kr951ia7HQT-GoSX0o34+EcOQ0w@mail.gmail.com>
Cc: Randall Stewart <rrs=40netflix.com@dmarc.ietf.org>,
tcpm@ietf.org
To: Neal Cardwell <ncardwell=40google.com@dmarc.ietf.org>
References: <D8D48D50-6143-49D5-B3D8-C1888FFE33EB@netflix.com>
<CADVnQyk1=JO-yt_MThxLCZ2kr951ia7HQT-GoSX0o34+EcOQ0w@mail.gmail.com>
X-Mailer: Apple Mail (2.3654.120.0.1.13)
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/YRNWFe6W3I1uenPrisa67CNGZa4>
Subject: Re: [tcpm] hystart++
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.29
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: Thu, 02 Dec 2021 20:09:07 -0000
Neal: Great observation!! > On Dec 2, 2021, at 2:43 PM, Neal Cardwell <ncardwell=40google.com@dmarc.ietf.org> wrote: > > Thanks, Randall. That's a nice analysis, and I agree that your proposal sounds like a nice improvement. > > This nice analysis brings to mind another potential (related) issue that might cause spurious oscillations: after Hystart++ exits slow-start, if there are application-limited periods where the amount of data in flight falls below the BDP (e.g. flow goes idle and then restarts), then we would expect the currentRoundMinRTT to be very low, triggering a resumption of slow-start in the current logic, even if the Hystart++ exit of slow-start was correct. > I have actually seen this occur.. in fact I was wondering how I was going to test dropping back out in my lab (was thinking packet drill) and then my logging noted that it had happened.. and it was because nginx had taken a 25ms break in applying data .. RTT was 20ms so the whole network went idle by the time the buffer was refilled and thus a bounce out and back in later :) > It seems that the connection should not use a data ACK's RTT sample to estimate whether Hystart++ exit was spurious unless the amount of data in flight at the time that data was sent was "sufficiently large". How to define "sufficiently large" may be a little tricky (the cwnd is probably not a good gauge for "sufficiently large" since it is probably somewhere out beyond twice the BDP in CSS). > Yeah I was wondering if we might not want to adjust exit based on some other metric in app limited cases... > One option would be to track the maximum number of packets delivered in a round of slow-start (slowStartMaxDeliveredPackets), and only check for spurious Hystart++ exits if the most recent round of CSS has at least slowStartMaxDeliveredPackets delivered. Something like: > > - if (currentRoundDeliveredPackets >= slowStartMaxDeliveredPackets && > currentRoundMinRTT < cssBaselineMinRtt) > > o cssBaselineMinRtt = infinity > > o resume slow start including HyStart++ That sounds like a very good adjustment.. I will maybe prototype it in my lab and see if I can recreate the bounce I saw and see how well it works ;) Best R > > best regards, > neal > > > > > > > On Thu, Dec 2, 2021 at 1:46 PM Randall Stewart <rrs=40netflix.com@dmarc.ietf.org> wrote: > Greetings all: > > I have implemented hystart++ off of the draft-03 for FreeBSD > (both newreno and cubic) and I have noted one thing that I think > is a bug in the spec: > > Draft-03 currently says: > > > > o if (currentRoundMinRTT >= (lastRoundMinRTT + RttThresh)) > > + cssBaselineMinRtt = currentRoundMinRTT > > + exit slow start and enter CSS > > > <And> > > > > - if (currentRoundMinRTT < cssBaselineMinRtt) > > o cssBaselineMinRtt = infinity > > o resume slow start including HyStart++ > > > > But notice that the threshold for entering CSS is (lastRoundMinRtt + RttThresh) and > the exiting of CSS back to Slow Start is (currentRoundMinRTT < cssBaseLineMinRTT), which can > under the right circumstances set up an oscillation. In the case I observed I saw lastRoundMinRtt set > to like 63ms and currentRoundMinRtt set at 115ms. And the next RTT in was 114ms.. so out of > CSS into Slow Start, but the next measurement (114ms again) pushes you back into CSS since > the lastRoundMinRTT + RttThresh is around 63ms or so. > > I would think what you really want here is to set cssBaseLineMinRTT to (lastRoundMinRtt + RttThresh). > > I.e. on entry: > > > o if (currentRoundMinRTT >= (lastRoundMinRTT + RttThresh)) > > + cssBaselineMinRtt = (lastRoundMinRtt + RttThresh) > > + exit slow start and enter CSS > > R > > ------ > Randall Stewart > rrs@netflix.com > > > > _______________________________________________ > tcpm mailing list > tcpm@ietf.org > https://www.ietf.org/mailman/listinfo/tcpm > _______________________________________________ > tcpm mailing list > tcpm@ietf.org > https://www.google.com/url?q=https://www.ietf.org/mailman/listinfo/tcpm&source=gmail-imap&ust=1639079070000000&usg=AOvVaw1S8xcmYu7Uv0BTPfUSlc5Z ------ Randall Stewart rrs@netflix.com
- [tcpm] hystart++ Randall Stewart
- Re: [tcpm] hystart++ Neal Cardwell
- Re: [tcpm] hystart++ Randall Stewart
- Re: [tcpm] [EXTERNAL] Re: hystart++ Yi Huang