YeAH-TCP: algorithm implementation
Subsystems (3)
PATCH 1/2 YeAH-TCP: algorithm implementation
From: Angelo P. Castellani <[email protected]>
YeAH-TCP is a sender-side high-speed enabled TCP congestion control algorithm, which uses a mixed loss/delay approach to compute the congestion window. It's design goals target high efficiency, internal, RTT and Reno fairness, resilience to link loss while keeping network elements load as low as possible.
For further details look here:
http://wil.cs.caltech.edu/pfldnet2007/paper/YeAH_TCP.pdf
---
This is the YeAH-TCP implementation of the algorithm presented to PFLDnet2007 (http://wil.cs.caltech.edu/pfldnet2007/).
Regards,
Angelo P. Castellani
Kconfig | 14 ++ Makefile | 1 tcp_yeah.c | 288 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tcp_yeah.h | 134 ++++++++++++++++++++++++++++ 4 files changed, 437 insertions(+)
net/ipv4/Kconfig +14 -0
@@ -574,6 +574,20 @@ config TCP_CONG_VENO loss packets. See http://www.ntu.edu.sg/home5/ZHOU0022/papers/CPFu03a.pdf +config TCP_CONG_YEAH + tristate "YeAH TCP" + depends on EXPERIMENTAL + default n + ---help--- + YeAH-TCP is a sender-side high-speed enabled TCP congestion control + algorithm, which uses a mixed loss/delay approach to compute the + congestion window. It's design goals target high efficiency, + internal, RTT and Reno fairness, resilience to link loss while + keeping network elements load as low as possible. + + For further details look here: + http://wil.cs.caltech.edu/pfldnet2007/paper/YeAH_TCP.pdf + choice prompt "Default TCP congestion control" default DEFAULT_CUBIC
net/ipv4/Makefile +1 -0
@@ -49,6 +49,7 @@ obj-$(CONFIG_TCP_CONG_VEGAS) += tcp_vega obj-$(CONFIG_TCP_CONG_VENO) += tcp_veno.o obj-$(CONFIG_TCP_CONG_SCALABLE) += tcp_scalable.o obj-$(CONFIG_TCP_CONG_LP) += tcp_lp.o +obj-$(CONFIG_TCP_CONG_YEAH) += tcp_yeah.o obj-$(CONFIG_NETLABEL) += cipso_ipv4.o obj-$(CONFIG_XFRM) += xfrm4_policy.o xfrm4_state.o xfrm4_input.o \
net/ipv4/tcp_yeah.c +288 -0
288 lines not on this page · raw message
net/ipv4/tcp_yeah.h +134 -0
134 lines not on this page · raw message
David Miller
maintainerFrom: "Angelo P. Castellani" <[email protected]>
Date: Mon, 19 Feb 2007 11:30:58 +0100
Quoted 8 lines
From: Angelo P. Castellani <[email protected]>
YeAH-TCP is a sender-side high-speed enabled TCP congestion control algorithm, which uses a mixed loss/delay approach to compute the congestion window. It's design goals target high efficiency, internal, RTT and Reno fairness, resilience to link loss while keeping network elements load as low as possible.
Quoted 4 lines
For further details look here:
http://wil.cs.caltech.edu/pfldnet2007/paper/YeAH_TCP.pdfSigned-off-by Angelo P. Castellani <[email protected]>
Applied to tcp-2.6 GIT, there were a lot of broken whitespace issues in your patch, GIT makes mention of them quite happily even without applying the patch, which I recommend you do in the future so I don't have to fix up your patches. The command I use (best with 1.5.0 GIT) is:
git apply --check --whitespace=error-all file.patch
Thanks.
Thanks, I'll check for formatting errors in the future.
2007/2/22, David Miller <[email protected]>:
Quoted 10 lines
Applied to tcp-2.6 GIT, there were a lot of broken whitespace issues in your patch, GIT makes mention of them quite happily even without applying the patch, which I recommend you do in the future so I don't have to fix up your patches. The command I use (best with 1.5.0 GIT) is:
git apply --check --whitespace=error-all file.patchThanks.
Minor comments:
1. Please move div64_64 out of yeah-tcp (and cubic where you copied it). to asm-generic/div64.h
2. Don't need separate tcp_yeah.h just put it in tcp_yeah.c. Also, maybe the vegas stuff you copied should go in one place? tcp/vegas.h?
3. whitespace:
don't do: x+=someexpression ... = max( x, ... instead: x += someexpression ... = max(x, ... Using indent script in scripts/Lindent will fix these.
4. See if you can replace uses of min_t and max_t with min and max by having proper matching types on args. Basically if you need to cast maybe original type was wrong.