plan9fox/sys/src/9/ip
cinap_lenrek 176569ca4d apply erik quanstros tcp-bdp patch (from sources)
this patch consists of two bits of work submitted as one
patch.

the first bit fixed a "pacing" problem, where a tcp connection
rate-limited by the reading process would experience 10%
of the expected throughput, and could even get into live
lock.  it was noticed at the time of this initial work that
the stack often sent tiny grams.  some good bits from nix'
original tcp were merged in.  the test program
	/n/sources/contrib/quanstro/tcptest.c
will verify that under most conditions, a reader-paced connection
now gets the expected throughput.  expected arguments
would be
	tcptest -s1 -n 5000 -l

the second bit is a first step in preparing tcp to handle
modest (1-2MB) bandwidth-delay products.  the strategy
was to completely implement NewReno.  the testing network
was a 7/35/70ms by 100Mbit wan emulator with 0/.05/.1% loss.
here are the performance comparisons from the changes after
the first round "old" to the submitted patch "new".  the
smallest improvement was 80%, the largest was 11x.

loss%	rtt	old	new
0.10	7	4.40	7.85
0.10	35	0.88	1.79
0.10	70	0.47	0.84
0.05	7	4.80	9.38
0.05	35	1.00	2.02
0.05	70	0.52	1.77
0.01	7	5.33	11.87
0.01	35	1.14	10.97
0.01	70	0.54	4.75
0.00	7	4.49	11.92
0.00	35	1.04	11.35
0.00	70	0.58	10.56

since the diff is not very easy to read, i wrote a small
paper detailing the changes

	http://www.quanstro.net/plan9/tcp/tcp.pdf

- erik
2013-07-21 14:41:51 +02:00
..
arp.c arp: fix memory leaks for "flush" and "del" arp ctl messages 2013-01-22 15:26:34 +01:00
chandial.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
devip.c devip: dont raise error() out of Fsprotocone() 2013-05-05 04:28:50 +02:00
eipconvtest.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
esp.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
ethermedium.c ip/ethermedium: drop short packets instead of producing negative size blocks 2013-06-17 02:28:10 +02:00
gre.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
icmp.c ip: fix assert panic on fragmented icmp echo request (see eriks icmp-frag patch) 2012-08-02 02:02:10 +02:00
icmp6.c ip: fix assert panic on fragmented icmp echo request (see eriks icmp-frag patch) 2012-08-02 02:02:10 +02:00
igmp.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
il.c bring back il protocol support 2012-05-03 10:47:40 +02:00
inferno.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
ip.c ip: fix assert panic on fragmented icmp echo request (see eriks icmp-frag patch) 2012-08-02 02:02:10 +02:00
ip.h bring back il protocol support 2012-05-03 10:47:40 +02:00
ipaux.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
ipifc.c devip: handle malloc errors, fix queue leaks 2013-05-05 03:56:11 +02:00
ipmux.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
iproute.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
ipv6.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
ipv6.h Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
loopbackmedium.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
netdevmedium.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
netlog.c devip: handle malloc errors, fix queue leaks 2013-05-05 03:56:11 +02:00
nullmedium.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
pktmedium.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
ptclbsum.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
rudp.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00
tcp.c apply erik quanstros tcp-bdp patch (from sources) 2013-07-21 14:41:51 +02:00
udp.c Import sources from 2011-03-30 iso image - lib 2011-03-30 19:35:09 +03:00