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