git: tcp: Implement "Rescue Retransmission for SACK-based Loss Recovery Algorithm"
Sepherosa Ziehau
sephe at crater.dragonflybsd.org
Tue Apr 24 23:12:34 PDT 2012
commit 1bdfd72827460e22c240cfa103e21559a253cf26
Author: Sepherosa Ziehau <sephe at 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 at .
- 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
More information about the Commits
mailing list