Skip to contentSkip to conversation

YeAH-TCP: algorithm implementation

PATCH In review Angelo P. Castellani 3 participants 4 messages Feb 19, 2007 – Feb 22, 2007

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

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
diff -uprN linux-2.6.20-a/net/ipv4/Kconfig linux-2.6.20-b/net/ipv4/Kconfig
@@ -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
diff -uprN linux-2.6.20-a/net/ipv4/Makefile linux-2.6.20-b/net/ipv4/Makefile
@@ -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

maintainer
#1 lore raw

From: "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.pdf

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.

#2 lore raw

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.patch

Thanks.

#3 lore raw

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.