DragonFly BSD
DragonFly commits List (threaded) for 2012-04
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

git: tcp: Implement "Rescue Retransmission for SACK-based Loss Recovery Algorithm"


From: Sepherosa Ziehau <sephe@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 24 Apr 2012 23:12:34 -0700 (PDT)

commit 1bdfd72827460e22c240cfa103e21559a253cf26
Author: Sepherosa Ziehau <sephe@dragonflybsd.org>
Date:   Thu Apr 19 17:30:59 2012 +0800

    tcp: Implement "Rescue Retransmission for SACK-based Loss Recovery Algorithm"
    
    http://tools.ietf.org/html/draft-nishida-tcpm-rescue-retransmission-00
    
    When hsu@ implemented RFC3517, part of the fix mentioned in the above draft
    had been implemented, i.e. no SACK scoreboard left case, as mentioned in the
    above draft as example.  However, the original implementation still did not
    cover the case when there are small amount of SACK scoreboards left (< 3),
    and the original implmentation could be more aggressive than the method
    suggested in the above draft.
    
    - Whether to use this new mechanism is controlled by net.inet.tcp.rescuesack
      sysctl node; it is on by default.  Disable it will fallback to the original
      rescue retransmission behaviour implemented by hsu@.
    - Save rexmt_high, before we start retransmission using RFC3517, so if nothing
      is sent, rexmt_high could be restored.
    - Add statistics about rescue retransmission.
    
    We could futher examine whether do more than one rescue retransmission could
    be helpful or not.

Summary of changes:
 sys/netinet/tcp_input.c |   40 +++++++++++++++++++++++++++++-----------
 sys/netinet/tcp_sack.c  |   23 ++++++++++++++++++++---
 sys/netinet/tcp_timer.c |    1 +
 sys/netinet/tcp_var.h   |    9 +++++++--
 usr.bin/netstat/inet.c  |    4 ++++
 5 files changed, 61 insertions(+), 16 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/1bdfd72827460e22c240cfa103e21559a253cf26


-- 
DragonFly BSD source repository



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]