rx: More improvments to RTT calculation
authorSimon Wilkinson <sxw@your-file-system.com>
Sat, 23 Oct 2010 13:51:56 +0000 (14:51 +0100)
committerJeffrey Altman <jaltman@openafs.org>
Sat, 23 Oct 2010 19:53:46 +0000 (12:53 -0700)
commit290495fab1b2a8f1dc842cb2dd6de2d9922169c6
treede4dc517da4183772fba2a977e48dac84ed7947b
parent5c8981e0404287f2aa46390d3a9e8a52261906ab
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.

Change-Id: I6d978a118e2bd0694484376b586dd4eaa64cdd8c
Reviewed-on: http://gerrit.openafs.org/3029
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
src/rx/rx.c