Implement sack based tcp loss recovery (RFC 6675) 87/6887/21
authorFlorin Coras <fcoras@cisco.com>
Thu, 25 May 2017 01:03:56 +0000 (18:03 -0700)
committerDave Barach <openvpp@barachs.net>
Fri, 9 Jun 2017 16:47:19 +0000 (16:47 +0000)
commit93992a9048cb6e5dcd22de5091e72de778122627
treef295bb870ad1614d9327828dd036fb03f60e455e
parent583dc8d3e23a780c85ebe48ea59f0338aad4df17
Implement sack based tcp loss recovery (RFC 6675)

- refactor existing congestion control code (RFC 6582/5681). Handling of ack
  feedback now consists of: ack parsing, cc event detection, event handling,
  congestion control update
- extend sack scoreboard to support sack based retransmissions
- basic implementation of Eifel detection algorithm (RFC 3522) for
  detecting spurious retransmissions
- actually initialize the per-thread frame freelist hash tables
- increase worker stack size to 2mb
- fix session queue node out-of-buffer handling
  - ensure that the local buffer cache vec_len matches reality
  - avoid 2x spurious event requeues when short of buffers
  - count out-of-buffer events
- make the builtin server thread-safe
- fix bihash template threading issue: need to paint -1 across uninitialized
  working_copy_length vector elements (via rebase from master)

Change-Id: I646cb9f1add9a67d08f4a87badbcb117980ebfc4
Signed-off-by: Florin Coras <fcoras@cisco.com>
Signed-off-by: Dave Barach <dbarach@cisco.com>
17 files changed:
src/svm/svm_fifo.c
src/vlib/node.c
src/vlib/threads.c
src/vlib/threads.h
src/vnet/session/node.c
src/vnet/session/session.c
src/vnet/session/session.h
src/vnet/session/session_cli.c
src/vnet/tcp/builtin_client.c
src/vnet/tcp/builtin_server.c
src/vnet/tcp/tcp.c
src/vnet/tcp/tcp.h
src/vnet/tcp/tcp_debug.h
src/vnet/tcp/tcp_input.c
src/vnet/tcp/tcp_newreno.c
src/vnet/tcp/tcp_output.c
src/vnet/tcp/tcp_test.c