Skip to content

Commit 2b0a8c9

Browse files
knnethdavem330
authored andcommitted
tcp: add CDG congestion control
CAIA Delay-Gradient (CDG) is a TCP congestion control that modifies the TCP sender in order to [1]: o Use the delay gradient as a congestion signal. o Back off with an average probability that is independent of the RTT. o Coexist with flows that use loss-based congestion control, i.e., flows that are unresponsive to the delay signal. o Tolerate packet loss unrelated to congestion. (Disabled by default.) Its FreeBSD implementation was presented for the ICCRG in July 2012; slides are available at http://www.ietf.org/proceedings/84/iccrg.html Running the experiment scenarios in [1] suggests that our implementation achieves more goodput compared with FreeBSD 10.0 senders, although it also causes more queueing delay for a given backoff factor. The loss tolerance heuristic is disabled by default due to safety concerns for its use in the Internet [2, p. 45-46]. We use a variant of the Hybrid Slow start algorithm in tcp_cubic to reduce the probability of slow start overshoot. [1] D.A. Hayes and G. Armitage. "Revisiting TCP congestion control using delay gradients." In Networking 2011, pages 328-341. Springer, 2011. [2] K.K. Jonassen. "Implementing CAIA Delay-Gradient in Linux." MSc thesis. Department of Informatics, University of Oslo, 2015. Cc: Eric Dumazet <[email protected]> Cc: Yuchung Cheng <[email protected]> Cc: Stephen Hemminger <[email protected]> Cc: Neal Cardwell <[email protected]> Cc: David Hayes <[email protected]> Cc: Andreas Petlund <[email protected]> Cc: Dave Taht <[email protected]> Cc: Nicolas Kuhn <[email protected]> Signed-off-by: Kenneth Klette Jonassen <[email protected]> Acked-by: Yuchung Cheng <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 7782ad8 commit 2b0a8c9

File tree

3 files changed

+454
-0
lines changed

3 files changed

+454
-0
lines changed

net/ipv4/Kconfig

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,22 @@ config TCP_CONG_DCTCP
615615
For further details see:
616616
http://simula.stanford.edu/~alizade/Site/DCTCP_files/dctcp-final.pdf
617617

618+
config TCP_CONG_CDG
619+
tristate "CAIA Delay-Gradient (CDG)"
620+
default n
621+
---help---
622+
CAIA Delay-Gradient (CDG) is a TCP congestion control that modifies
623+
the TCP sender in order to:
624+
625+
o Use the delay gradient as a congestion signal.
626+
o Back off with an average probability that is independent of the RTT.
627+
o Coexist with flows that use loss-based congestion control.
628+
o Tolerate packet loss unrelated to congestion.
629+
630+
For further details see:
631+
D.A. Hayes and G. Armitage. "Revisiting TCP congestion control using
632+
delay gradients." In Networking 2011. Preprint: http://goo.gl/No3vdg
633+
618634
choice
619635
prompt "Default TCP congestion control"
620636
default DEFAULT_CUBIC
@@ -646,6 +662,9 @@ choice
646662
config DEFAULT_DCTCP
647663
bool "DCTCP" if TCP_CONG_DCTCP=y
648664

665+
config DEFAULT_CDG
666+
bool "CDG" if TCP_CONG_CDG=y
667+
649668
config DEFAULT_RENO
650669
bool "Reno"
651670
endchoice
@@ -668,6 +687,7 @@ config DEFAULT_TCP_CONG
668687
default "veno" if DEFAULT_VENO
669688
default "reno" if DEFAULT_RENO
670689
default "dctcp" if DEFAULT_DCTCP
690+
default "cdg" if DEFAULT_CDG
671691
default "cubic"
672692

673693
config TCP_MD5SIG

net/ipv4/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ obj-$(CONFIG_INET_TCP_DIAG) += tcp_diag.o
4242
obj-$(CONFIG_INET_UDP_DIAG) += udp_diag.o
4343
obj-$(CONFIG_NET_TCPPROBE) += tcp_probe.o
4444
obj-$(CONFIG_TCP_CONG_BIC) += tcp_bic.o
45+
obj-$(CONFIG_TCP_CONG_CDG) += tcp_cdg.o
4546
obj-$(CONFIG_TCP_CONG_CUBIC) += tcp_cubic.o
4647
obj-$(CONFIG_TCP_CONG_DCTCP) += tcp_dctcp.o
4748
obj-$(CONFIG_TCP_CONG_WESTWOOD) += tcp_westwood.o

0 commit comments

Comments
 (0)