netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH v1 0/5] TCP Wave
@ 2017-07-28 19:59 Natale Patriciello
  2017-07-28 19:59 ` [RFC PATCH v1 1/5] tcp: Added callback for timed sender operations Natale Patriciello
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Natale Patriciello @ 2017-07-28 19:59 UTC (permalink / raw)
  To: David S . Miller, Alexey Kuznetsov, James Morris,
	Hideaki YOSHIFUJI, Patrick McHardy
  Cc: netdev, Ahmed Said, Natale Patriciello, Francesco Zampognaro,
	Cesare Roseti

Hi,
We are working on a new TCP congestion control algorithm, aiming at satisfying
new requirements coming from current networks. For instance, adaptation to
bandwidth/delay changes (due to mobility, dynamic switching, handover), and
optimal exploitation of very high link capacity and efficient transmission of
small objects, irrespective of the underlying link characteristics.

TCP Wave (TCPW) replaces the window-based transmission paradigm of the standard
TCP with a burst-based transmission, the ACK-clock scheduling with a
self-managed timer and the RTT-based congestion control loop with an Ack-based
Capacity and Congestion Estimation (ACCE) module. In non-technical words, it
sends data down the stack when its internal timer expires, and the timing of
the received ACKs contribute to updating this timer regularly.

We tried to add this new sender paradigm without deeply touching existing code.
In fact, we added four (optional) new congestion control functions:

+       /* get the expiration time for the send timer (optional) */
+       unsigned long (*get_send_timer_exp_time)(struct sock *sk);
+       /* no data to transmit at the timer expiration (optional) */
+       void (*no_data_to_transmit)(struct sock *sk);
+       /* the send timer is expired (optional) */
+       void (*send_timer_expired)(struct sock *sk);
+       /* the TCP has sent some segments (optional) */
+       void (*segment_sent)(struct sock *sk, u32 sent);

And a timer (tp->send_timer) which uses a send callback to push data down the
stack. If the first of these function, get_send_timer_exp_time,  is not
implemented by the current congestion control, then the timer sending timer is
never set, therefore falling back to the old, ACK-clocked, behavior.

The TCPW module itself extensively make use of the existing infrastructure and
parameters to calculate its timer, plus some heuristics when it is not possible
to have trustworthy values from the network.

You can find more stuff related to TCPW (extended results, the test programs
used and the setup for the experiments, a document describing the algorithm in
detail and so on) at:

[1] http://tlcsat.uniroma2.it/tcpwave4linux/

We would greatly appreciate any feedback from you, comments, suggestions,
corrections and so on. Thank you for your attention.

Cesare, Francesco, Ahmed, Natale

Natale Patriciello (5):
  tcp: Added callback for timed sender operations
  tcp: Implemented the timing-based operations
  tcp: PSH frames sent without timer involved
  tcp: Add initial delay to allow data queueing
  wave: Added basic version of TCP Wave

 MAINTAINERS           |   6 +
 include/linux/tcp.h   |   3 +
 include/net/tcp.h     |   8 +
 net/ipv4/Kconfig      |  16 +
 net/ipv4/Makefile     |   1 +
 net/ipv4/tcp.c        |   8 +-
 net/ipv4/tcp_ipv4.c   |   2 +
 net/ipv4/tcp_output.c |  73 +++-
 net/ipv4/tcp_wave.c   | 914 ++++++++++++++++++++++++++++++++++++++++++++++++++
 9 files changed, 1023 insertions(+), 8 deletions(-)
 create mode 100644 net/ipv4/tcp_wave.c

-- 
2.13.2

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2017-09-02 20:33 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-28 19:59 [RFC PATCH v1 0/5] TCP Wave Natale Patriciello
2017-07-28 19:59 ` [RFC PATCH v1 1/5] tcp: Added callback for timed sender operations Natale Patriciello
2017-07-28 19:59 ` [RFC PATCH v1 2/5] tcp: Implemented the timing-based operations Natale Patriciello
2017-07-29  1:46   ` David Miller
2017-07-28 19:59 ` [RFC PATCH v1 3/5] tcp: PSH frames sent without timer involved Natale Patriciello
2017-07-28 19:59 ` [RFC PATCH v1 4/5] tcp: Add initial delay to allow data queueing Natale Patriciello
2017-07-28 19:59 ` [RFC PATCH v1 5/5] wave: Added basic version of TCP Wave Natale Patriciello
2017-07-28 23:15   ` Neal Cardwell
2017-07-29  1:51   ` David Miller
2017-07-29  1:52   ` David Miller
2017-07-29 15:32   ` Stephen Hemminger
2017-07-31 13:39   ` David Laight
2017-07-29  5:33 ` [RFC PATCH v1 0/5] " Eric Dumazet
2017-09-02 20:33   ` Natale Patriciello

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).