]> git.michaelhowe.org Git - packages/o/openafs.git/commit
rx: More improvments to RTT calculation
authorSimon Wilkinson <sxw@your-file-system.com>
Sat, 23 Oct 2010 13:51:56 +0000 (14:51 +0100)
committerDerrick Brashear <shadow@dementia.org>
Tue, 26 Oct 2010 02:23:29 +0000 (19:23 -0700)
commit4463034235ff875f59966a61261dc904a92004dc
treed29c9fb1d916c9dbf38499ca8fb0b458fcdd161a
parente339f372a22d1d4586539bacdf60cf8bc8f0ec47
rx: More improvments to RTT calculation

Move the decision about whether a packet contributes to the peer's
rount trip time into the CalculateRoundTripTime function, and improve
the criteria used.

Previously, we only computed the RTT if we had not retransmitted. This
is bad, because it means that places where we have backed off in order
to retransmit never actually lengthen the RTT, and so the RTT is kept
artificially low, and we see a large number of retransmits. Instead,
use the serial of the ACK packet to determine which transmission is
being acknowledged, and if it is the first, or the last, transmission
use the appropriate sent time to calculate the RTT.

If we have no serial in the ACK (for a delayed ack, for example), or
if the serial doesn't match (where a single acknowledgement is soft
acking a number of packets), fall back to only using the ack if the
packet has not be retransmitted.

Also, avoid multiple counting of packets which have arrived as part
of a jumbogram by only permitting the last packet in a jumbogram to
contribute to the RTT. This avoids giving the RTT of jumbograms more
weight than those of normal packets - doing so would pull down the
RTT, as it in effect favours packets which have not be retransmitted.

Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
(cherry picked from commit 290495fab1b2a8f1dc842cb2dd6de2d9922169c6)
Change-Id: I13fef02ad3c456614cd71227e6a0ae8b4a3f5c72
Reviewed-on: http://gerrit.openafs.org/3127
Tested-by: Derrick Brashear <shadow@dementia.org>
src/rx/rx.c