opengnsys_ipxe/src
Michael Brown 558c1a45fe [tcp] Improve robustness in the presence of duplicated received packets
gPXE responds to duplicated ACKs with an immediate retransmission,
which can lead to a sorceror's apprentice syndrome.  It also responds
to out-of-range (or old duplicate) ACKs with a RST, which can cause
valid connections to be dropped.

Fix the sorceror's apprentice syndrome by leaving the retransmission
timer running (and so inhibiting the immediate retransmission) when we
receive a potential duplicate ACK.  This seems to match the behaviour
of Linux observed via wireshark traces.

Fix the RST issue by sending RST only on out-of-range ACKs that occur
before the connection is fully established, as per RFC 793.

These problems were exposed during development of the 802.11 wireless
link layer; the 802.11 protocol has a failure mode that can easily
cause duplicated packets.  The fixes were tested in a controlled way
by faking large numbers of duplicated packets in the rtl8139 driver.

Originally-fixed-by: Joshua Oreman <oremanj@rwcr.net>
2009-06-23 09:40:26 +01:00
..
arch [misc] Fix source files erroneously marked as executable 2009-06-02 11:26:09 +01:00
bin Rename .cvsignore files to .gitignore 2007-06-09 22:57:00 +01:00
config [serial] Define constants for serial port I/O addresses 2009-05-21 10:04:12 +01:00
core [settings] Fix setting_cmp() to handle nameless settings 2009-06-13 12:04:08 +01:00
crypto [legal] Add a selection of FILE_LICENCE declarations 2009-05-18 08:33:25 +01:00
doc [PXEXT] Update documentation 2008-03-26 15:14:55 -07:00
drivers [misc] Fix source files erroneously marked as executable 2009-06-02 11:26:09 +01:00
hci [legal] Add a selection of FILE_LICENCE declarations 2009-05-18 08:33:25 +01:00
image [script] Allow for DOS-style line endings in scripts 2009-06-03 10:13:29 +01:00
include [tcp] Improve robustness in the presence of duplicated received packets 2009-06-23 09:40:26 +01:00
interface [settings] Allow for arbitrarily-named settings 2009-05-26 11:05:58 +01:00
libgcc [build] Enable building with the Intel C compiler (icc) 2009-03-26 07:27:19 +00:00
net [tcp] Improve robustness in the presence of duplicated received packets 2009-06-23 09:40:26 +01:00
proto [slam] Add Scalable Local Area Multicast (SLAM) protocol support 2008-06-10 00:04:19 +01:00
tests [i386] Add explicit flags and type on all .section declarations 2009-02-15 10:59:53 +00:00
usr [legal] Add a selection of FILE_LICENCE declarations 2009-05-18 08:33:25 +01:00
util [legal] Add licence.pl and %.licence make target 2009-05-18 08:29:24 +01:00
.gitignore [util] config-local.h to avoid accidental commits 2008-06-05 00:45:33 +01:00
Makefile [legal] Add licence.pl and %.licence make target 2009-05-18 08:29:24 +01:00
Makefile.housekeeping [build] Add -fno-dwarf2-cfi-asm to CFLAGS if supported by the gcc in use 2009-05-27 02:30:46 +01:00
doxygen.cfg Remove uIP; we haven't used it for quite some time now. 2007-01-10 02:52:58 +00:00