HomeFreeBSD

tcp: Address goodput and TLP edge cases.

Description

tcp: Address goodput and TLP edge cases.

There are several cases where we make a goodput measurement and we are running
out of data when we decide to make the measurement. In reality we should not make
such a measurement if there is no chance we can have "enough" data. There is also
some corner case TLP's that end up not registering as a TLP like they should, we
fix this by pushing the doing_tlp setup to the actual timeout that knows it did
a TLP. This makes it so we always have the appropriate flag on the sendmap
indicating a TLP being done as well as count correctly so we make no more
that two TLP's.

In addressing the goodput lets also add a "quality" metric that can be viewed via
blackbox logs so that a casual observer does not have to figure out how good
of a measurement it is. This is needed due to the fact that we may still make
a measurement that is of a poorer quality as we run out of data but still have
a minimal amount of data to make a measurement.

Reviewed by: tuexen
Sponsored by: Netflix Inc.
Differential Revision: https://reviews.freebsd.org/D31076

(cherry picked from commit e834f9a44acc577e658f40023d9465e887c94920)

Details

Provenance
rrsAuthored on Jul 6 2021, 2:36 PM
tuexenCommitted on Jul 13 2021, 7:57 PM
Reviewer
tuexen
Differential Revision
D31076: tcp: Address goodput and TLP edge cases.
Parents
rG2e1fdc728b81: tcp: Preparation for allowing hardware TLS to be able to kick a tcp connection…
Branches
Unknown
Tags
Unknown