F AST Test Results


dummynet Experiments

dummynet is a flexible tool designed for network  bandwidth management and network protocol testing. dummynet allows one to configure queue size, bandwidth, delay, and packet loss probability on a FreeBSD host. In our experiments, it is used to set up our router. dummynet works by intercepting packets (selected by ipfw rules - ipfw configures the FreeBSD firewall support) on their way through the protocol stack, and passing them through one or more objects called queues and pipes, which simulate the effects of bandwidth limitation, propagation delay, finite-size queue, packet loss. Pipes are channels with fixed delay. Queues buffer packets before actual packet transmission.

dummynet Setup

Sender: Processors: Dual Intel Xeon, 2.8Ghz; OS: Redhat Linux 9.0; Kernel Version: 2.4.22;  Memory: 2GB; Network Adaptor: Intel GB Ethernet Card;

Router: Processors: Dual Intel Xeon, 3.06Ghz; OS: Free BSD 5.1, Release #9;  Memory: 2GB; Network: Intel GB Ethernet Card; The dummynet on the router is configured to have a capacity of 800 Mbps and various delays ranging from 50 ms to 200 ms.  

Receiver: Processors: Dual Intel Xeon, 2.8Ghz; OS: Redhat Linux 7.3; Kernel Version: 2.4.19;  Memory: 2GB; Network Adaptor: Intel GB Ethernet Card;

Sender and Receiver Tuning:

echo "4096 33554432 33554432" > /proc/sys/net/ipv4/tcp_mem
echo "4096 33554432 33554432" > /proc/sys/net/ipv4/tcp_rmem
echo "4096 33554432 33554432" > /proc/sys/net/ipv4/tcp_wmem
echo "4096 33554432 33554432" > /proc/sys/net/core/wmem_max
echo "4096 33554432 33554432" > /proc/sys/net/core/rmem_max
echo "1" > /proc/sys/net/ipv4/tcp_fast
echo "1" > /proc/sys/net/ipv4/tcp_fast_bc
echo "1" > /proc/sys/net/ipv4/tcp_fast_kmon_rtt
echo "400" > /proc/sys/net/ipv4/tcp_fast_kmon_t
/sbin/ifconfig eth1 txqueuelen 4000
echo "1500" > /proc/sys/net/core/netdev_max_backlog
modprobe e1000 RxDescriptors=4096,4096

FAST Parameters

Each FAST TCP flow has a target number of packets to be buffered inside the network (which may include lower layer on the host) at equilibrium.  The alpha parameter specifies this target.  In addition, in order to maintain stability while the network environment is noisy, the beta parameter is used as the maximum number of packets buffered before a FAST TCP flow needs to reduce its window.  The gamma parameter is used to monitor the number of packets buffered during slow start in order to avoid inducing packet losses.

Dynamic Scenario – I

In a dynamic environment, three FAST TCP flows with propagation delays of 100, 150, and 200 ms start and terminate at different times.

The chart shows, as new flows join or old flows leave, FAST TCP flows converge to a new equilibrium quickly and stably. From the queue monitor, we observe that the dummynet queue is quite small throughout the experiment. FAST TCP achieves fairness by maintaining  the same number of packets in the queue in equilibrium for each source.

     

 Dynamic Scenario – II
 

This experiment is similar to Dynamic Scenario – I, except that we have a large number of flows with different propagation delays.  We observe similar behavior as in the previous experiment even though there is a much larger number of FAST TCP flows.  FAST is able to maintain high link utilization, very little packet loss, and a stable queue size in equilibrium.

         

Static Scenario: Router buffer Change

We present experimental results on aggregate throughput in a simple static environment where, in each experiment, all FAST TCP flows have the same propagation delay, and start and terminate at the same times. 

In this test scenario, the buffer size at the router changes from 50 packets to 4000 packets. Oscillation in the dummynet queue is high when n*alpha (number of streams * alpha) is greater than the queue size. When the dummynet queue size is more than n*alpha, FAST shows stable queue behavior with little packet loss. For the experiment, alpha, beta, and gamma are set to 100, 150, 100, respectively. 

Time (in sec)

Number of Streams (n)

Router Buffer (b)

Comments

0-500

2

50

n*alpha << b

500-1000

20

50

 

1000-1500

2

1000

 

1500-2000

20

1000

n*alpha < b

2000-2500

2

2000

 

2500-3000

20

2000

n*alpha = b

3000-3500

2

4000

n*alpha >> b

3500-4000

20

4000