Hi -
I spent a chunk of time fixing up our TCP stack. Most of the changes
are only apparent for long-lived connections with non-trivial RTTs.
You'll also want to grab the latest dropbear, which has a few changes to
increase throughput - mostly increasing the receive window.
The major things:
- account for TSO when growing the cwnd
- window scale and timestamps (window scale is critical for long, fat
connections)
- selective acknowledgments for retrans (also helps with loss during
retrans, which requires a timeout)
- handle Silly Window Syndrome (this fixes issues with qemu's usermode
networking which you'd get with the new dropbear)
As a minor thing, I also added 'dmesg' (supporting -c and -C), for
those of you using trace_print{k,f,x} or who are not looking at the
console (ssh only).
There are a few more things I'd like to do for TCP, notably support the
pluggable congestion avoidance algorithms, like Linux and BSD do.
Specifically, I want to use TCP-cubic. Maybe support ECN too. But I'm
running out of time to play around with networking. =)
Barret
The following changes since commit ad7f58d1756d6ecbaad00bcb95b18dc014d146c1:
mlx4: Fix NAPI polling (2017-07-20 08:19:46 -0400)
are available in the git repository at:
[email protected]:brho/akaros.git net
for you to fetch changes up to 63951151462ecdc5f6e8a3de78ae454e7c25eace:
net: tcp: Use timestamps for the RTTM (2017-07-21 11:56:27 -0400)
----------------------------------------------------------------
View this online at:
https://github.com/brho/akaros/compare/ad7f58d1756d...63951151462e
----------------------------------------------------------------
Barret Rhoden (23):
Remove the #define exit() _exit() hack (XCC)
qio: Allow changing limits dynamically
kprof: Allow clearing the kptrace buffer
net: tcp: Fix cwnd and ssthresh for TSO and Reno
net: tcp: Adjust the transmit queue limit
net: tcp: Always set the retrans timer
net: tcp: Account for TCP options when using MSS
net: tcp: Fix memory leak with tcpackproc
net: tcp: Refactor TCP6 and 4 common code
net: tcp: Support TCP timestamps
net: tcp: Remove the Syn_received state
net: tcp: Advertise support for SACK
net: tcp: Be explicit about the max Window Scale
net: Add timestamps to the netlog
net: tcp: Track ipht and resets as their own class
net: tcp: Refactor in prep for SACKs
net: tcp: Support SACK
net: tcp: Avoid SWS for the receiver
net: tcp: Avoid SWS for the sender
net: tcp: Fix up the receive window
net: tcp: Remove the RETRAN flag
net: tcp: Don't scale SRTT and MDEV
net: tcp: Use timestamps for the RTTM
kern/drivers/dev/kprof.c | 11 +
kern/include/ip.h | 3 +-
kern/include/ns.h | 3 +-
kern/kfs/bin/dmesg | 14 +
kern/src/net/netlog.c | 14 +-
kern/src/net/tcp.c | 1724 +++++++++++++++-----
kern/src/ns/qio.c | 13 +-
.../compilers/gcc-glibc/glibc-2.19-existing.patch | 19 +
user/parlib/include/parlib/vcore.h | 12 -
user/parlib/signal.c | 1 +
10 files changed, 1346 insertions(+), 468 deletions(-)
create mode 100755 kern/kfs/bin/dmesg
--
You received this message because you are subscribed to the Google Groups
"Akaros" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.