Re: How does the TCP measurement period work?

From: Alan Somers <asomers_at_freebsd.org>
Date: Fri, 11 Oct 2024 12:55:41 UTC
On Fri, Oct 11, 2024 at 1:05 AM Michael Tuexen
<Michael.Tuexen@lurchi.franken.de> wrote:
>
> > On 11. Oct 2024, at 01:07, Alan Somers <asomers@freebsd.org> wrote:
> >
> > Can somebody please explain to me how the TCP measurement period
> > works?  When does h_ertt decide to take a new measurement?
> >
> > Motivation:
> > I recently saw a long-distance connection that should've been capable
> > of 80+ MBps suddenly drop to < 1 MBps.  Subsequent analysis of the
> > pcap file showed that while the typical RTT was 16.5 ms, there were a
> > few spikes as high as 380ms that coincided with the drop in
> > throughput.  The surprising part was that even though RTT returned to
> > a good value, the throughput stayed low for the entire remaining
> > transfer, which lasted 750s.  I would've expected throughput to
> > recover once RTT did.  My theory is that h_ertt never made a new
> > measurement.  However, I cannot reproduce the problem using dummynet
> > on a local VM.  With dummynet, as soon as I return the RTT to normal,
> > the throughput quickly recovers, as one would expect.
> Which TCP stack and which CC module did you use? Which version of FreeBSD?

I was using the regular freebsd TCP stack with cc_chd.  The production
system was running FreeBSD 14.1, but my attempts to recreate the
situation using dummynet used 15.0-CURRENT.