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.

Reply via email to