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

|