DragonFly commits List (threaded) for 2012-04
git: tcp: Implement "Rescue Retransmission for SACK-based Loss Recovery Algorithm"
Author: Sepherosa Ziehau <firstname.lastname@example.org>
Date: Thu Apr 19 17:30:59 2012 +0800
tcp: Implement "Rescue Retransmission for SACK-based Loss Recovery Algorithm"
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(-)
DragonFly BSD source repository