OpenAFS Master Repository branch, openafs-stable-1_6_x, updated. openafs-devel-1_5_77-102-g9de9218
Gerrit Code Review
gerrit@openafs.org
Mon, 25 Oct 2010 18:11:36 -0700 (PDT)
The following commit has been merged in the openafs-stable-1_6_x branch:
commit 9de921860a70e5599aff895ba6bb7581cef3362f
Author: Simon Wilkinson <sxw@your-file-system.com>
Date: Mon Oct 11 13:14:02 2010 -0400
Rx: Reject out of order ACK packets
Our RX implementation virtually guarantees that we will see out of
order ACK packets, even on well behaved networks, as we send acks
simultaneously from multiple threads.
Currently we only reject out-of-order ACKS which change the window
position (so a window that advances, can never go back). However,
we fail to deal with the explicit acknowledgement portion of the ACK
packet in the same way...
For example, if we have a packet A that acknowledges packets 1 and 2,
and then a packet B acknowledging 1,2,3 and 4. If B arrives before A,
then we mark 1, 2, 3, 4 as acknowledged, and then treat the arrival of
A as nAcking 3 and 4. This has the same effect as an explicitly stated
nack, triggers an early and unnecessary resend and may, in some situations,
cause the call to go into congestion avoidance.
We can solve this using the previousPacket field of the ACK. This
indicates the last packet seen by the peer. In the same way as
firstPacket, this should never go backwards, and so can be used to
detect out of order acknowledgements, and reject them.
Reviewed-on: http://gerrit.openafs.org/2958
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit 4e71409fe1305cde4b9b341247ba658d8d24f4d0)
Change-Id: Idc064d5950b4235a303a933d046546b67add6623
Reviewed-on: http://gerrit.openafs.org/3111
src/rx/rx.c | 8 +++++++-
src/rx/rx.h | 1 +
2 files changed, 8 insertions(+), 1 deletions(-)
--
OpenAFS Master Repository