Shallow Buffers Experiment

Queues absorb traffic bursts and are essential to avoid packet loss. When the queue size is small (shallow buffer), queue drops may become more frequent depending on the level of traffic. Shallow buffers can be challenging for flows governed by congestion control algorithms (CCAs), because frequent packet drops may deteriorate the bandwidth utilization. Some CCAs may require a sufficiently large queue size to fully utilize the bandwidth. With shallow buffers, these CCAs may underutilize the available bandwidth resources. A CCA that can cope with shallow buffers should fully utilize the available bandwidth irrespective of the queue size.

Scenario

In the shallow buffers experiment, a single flow operates in a static dumbbell network with a queue size that is smaller than the bandwidth-delay product (BDP). The flow generates greedy source traffic and uses a CCA. The experiment has one parameter named qlen that sets the size of the bottleneck queue. It can be repeated for different values of qlen to evaluate the influence of the queue size on the operating point.

To summarize the experiment setup:

  • Topology: Dumbbell topology (\(K=1\)) with static network parameters

  • Flows: A single flow (\(K=1\)) that uses a CCA

  • Traffic Generation Model: Greedy source traffic

Experiment Results

Experiment #16

Command: ns3-dev-ccperf-static-dumbbell-default --experiment-name=shallow_buffers --db-path=benchmark_TcpNewReno.db '--parameters={aut:TcpNewReno,k:1,qlen:10p}' --aut=TcpNewReno --stop-time=15s --seed=42 --qlen=10p --bw=16Mbps --loss=0.0 --qdisc=FifoQueueDisc --rtts=15ms --sources=src_0 --destinations=dst_0 --protocols=TCP --algs=TcpNewReno --recoveries=TcpPrrRecovery --start-times=0s --stop-times=15s '--traffic-models=Greedy(bytes=0)'

Flows

src dst transport_protocol cca cc_recovery_alg traffic_model start_time stop_time
src_0 dst_0 TCP TcpNewReno TcpPrrRecovery Greedy(bytes=0) 0.00 15.00

Metrics

The following tables list the flow, link, and network metrics of experiment #16. Refer to the the metrics page for definitions of the listed metrics.

Flow Metrics

Flow metrics capture the performance of an individual flow. They are measured at the endpoints of a network path at either the source, the receiver, or both. Bold values indicate which flow achieved the best performance.

Metric flow_1
cov_in_flight_l4 0.22
cov_throughput_l4 0.09
flow_completion_time_l4 15.00
mean_cwnd_l4 25.48
mean_delivery_rate_l4 14.76
mean_est_qdelay_l4 4.38
mean_idt_ewma_l4 0.79
mean_in_flight_l4 25.00
mean_network_power_l4 775.16
mean_one_way_delay_l7 1999.00
mean_recovery_time_l4 25.15
mean_sending_rate_l4 14.82
mean_sending_rate_l7 16.89
mean_srtt_l4 19.38
mean_throughput_l4 14.77
mean_throughput_l7 14.77
mean_utility_mpdf_l4 -0.07
mean_utility_pf_l4 2.69
mean_utilization_bdp_l4 1.30
mean_utilization_bw_l4 0.92
total_retransmissions_l4 69.00
total_rtos_l4 0.00

Figures

The following figures show the results of the experiment #16.

Time Series Plot of the Operating Point

Time series plot of the number of segments in flight, the smoothed round-trip time (sRTT), and the throughput at the transport layer.

Comparison of Congestion Control Algorithms (CCAs)

Figures

Mean Bandwidth Utilization vs Buffer Size

The mean bandwidth utilization vs the buffer size for small buffers (smaller or equal to the BDP). High utilization indicates good performance. CCAs may underutilize the available bandwidth for small buffers.

TCP Retransmissions vs Buffer Size

The total number of TCP retransmissions vs the buffer size for small buffers (smaller or equal to the BDP). A high number of retransmissions indicates that the CCA operates in the congestion collapse region.