  Recent advances in high-speed mobile networks have revealed new bottlenecks
in ubiquitous TCP protocol deployed in the Internet. In addition to
differentiating non-congestive loss from congestive loss, our experiments
revealed two significant performance bottlenecks during the loss recovery
phase: flow control bottleneck and application stall, resulting in degradation
in QoS performance. To tackle these two problems we firstly develop a novel
opportunistic retransmission algorithm to eliminate the flow control
bottleneck, which enables TCP sender to transmit new packets even if receiver's
receiving window is exhausted. Secondly, application stall can be significantly
alleviated by carefully monitoring and tuning the TCP sending buffer growth
mechanism. We implemented and modularized the proposed algorithms in the Linux
kernel thus they can plug-and-play with the existing TCP loss recovery
algorithms easily. Using emulated experiments we showed that, compared to the
existing TCP loss recovery algorithms, the proposed optimization algorithms
improve the bandwidth efficiency by up to 133% and completely mitigate RTT
spikes, i.e., over 50% RTT reduction, over the loss recovery phase.
