The design of the traditional window-based (cwnd-based) mechanism is fundamentally incompatible with the features of modern mobile cellular networks. Traditional cwnd-based TCP suffers from the Bufferbloat problem because it is de- signed to saturate the buffer to fully utilize the available bandwidth and to detect congestion. This design works well in wired networks where routers have small buffers to quickly signal network congestion to the sender. However, mobile cellular networks use large buffers to buffer the underlying variations in the link conditions to ensure high link utilization. Because the buffers are large relative to the available bandwidth, saturation results in large latencies.
PropRate is a new rate-based TCP algorithm that directly regulates the packets in the bottleneck buffer to achieve a trade-off in terms of delay and throughput along a more efficient frontier than conventional cwnd-based TCP variants. To the best of our knowledge, PropRate is the first TCP algorithm that allows an application to set and achieve a target latency, if the network conditions allow for it. Also, unlike the cwnd-based TCP mechanism, our new rate-based TCP mechanism is significantly more resilient to saturated uplinks in cellular networks. PropRate does not require modifications at the receiver and is amenable to immediate practical deployment.
Cellsim is a trace-driven network emulator, which was used by Winstein et al. in evaluating Sprout. Cellsim acts as a transparent proxy between two devices, and controls the forwarding of packets by buffering and releasing them according to the timing and bandwidth in a given trace. The original Cellsim source code implements an infinite buffer. Since traditional cwnd-based algorithms like CUBIC react to packet loss due to buffer overflow, we enhanced Cellsim by introducing a finite drop-tail buffer for a fairer evaluation.
We collected network traces from three cellular ISPs using a custom Android application by saturating the network with UDP packets. tcpdump was used to capture the packet traces. We used UDP to measure the available network bandwidth because we did not find any evidence of UDP traffic throttling by the ISPs. Two sets of traces were collected from each ISP—one set with the phone in a stationary position and the other set taken on board a vehicle that was driven around campus.
We implemented PropRate in the latest Linux kernel in a manner that is similar to the existing cwnd-based TCP congestion control modules. The decoupled components of congestion detection, rate control and packet dispatching are abstracted as API functions so that new rate-based TCP variants can be implemented as new kernel modules.