TCP Feno

Post date: Apr 3, 2014 4:25:44 AM

<Abstract>

It is well known that TCP shows performance degradation over wired/wireless networks since TCP regards packet loss as network congestion, and consequently many TCP variants have been proposed to solve the problem. Especially, TCP Veno has successfully addressed this fundamental problem by proposing an end-to-end loss differentiation algorithm, which distinguishes the cause of packet loss by the number of packets in the router buffer. Unfortunately, Veno's algorithm shows very low accuracy on small buffer routers that are emerging recently as a new challenge for Internet routers. In the small buffer networks, routers can overflow easily in a short time although Veno diagnoses wireless loss, and this leads to the failure in loss differentiation. Furthermore, when congestion loss is misdiagnosed as wireless loss, Veno shows poor Reno-friendliness since it can increase sending rate by setting ssthresh to a larger value than Reno. In this paper, we propose a more accurate loss differentiation algorithm for small buffer heterogeneous networks. Our algorithm introduces Congestive rate concept to alleviate such misdiagnosis regardless of the buffer size. We embed our algorithm into Veno's implementation and name it Feno as distinguished from Veno. Through extensive network simulations, we confirm that Feno achieves not only higher accuracy, but also better Reno-friendliness over small buffer environments while still keeping performance efficiency over wireless networks like Veno.

- Jaehyun Hwang, See-Hwan Yoo, and Chuck Yoo, "TCP Feno: Enhancement for Higher Accuracy of Loss Differentiation Over Small Buffer Heterogeneous Networks", The 34th IEEE Conference on Local Computer Networks (LCN 2009), Oct. 2009.

<ns-2 simulation code>

We implemented TCP Feno using "A Linux TCP implementation for NS2".

To test Feno,

1) Install ns-allinone-2.31 (or later) and Linux TCP patch (kernel ver 2.6.22.6) for NS-2

2) Download tcp_feno.c, and move it into "ns-2.31/tcp/linux/src"

3) Modify Makefile to include 'tcp/linux/src/tcp_feno.o'

4) make

TCL script for a simple test (eval_feno.tcl) is also attached.