|
TCP latency is critical to the performance of web services. However, packet loss greatly impairs the TCP performance due to its poor loss recovery mechanisms. Recent work FUSO addressed this problem by leveraging multi-path diversity for proactive loss recovery, it used "good" paths to proactively retransmit the potentially lost packet on "bad" paths. However, because it's impossible to predict which packet is truly lost, FUSO tended to retransmit the oldest unACKed packet. Through analysis and comprehensive experiments, this paper shows that in the Internet scenario, such simple proactive retransmission of the oldest unACKed packet is not accurate enough to recover the lost packets, which causes performance penalty. To address the problem, this paper presents \name, a \fullname. Different from FUSO, when there is a chance for proactive loss recovery, \name generates a coding packet that codes all (or multiple) unACKed packets together. As such, \name can always proactively retransmit the ``right'' lost packet, since the receiver side can decode the lost packet by combining the coding packet with other received packets. \name is implemented in Linux kernel with \approx2K lines of code.Testbed and simulation results show that, under lossy condition, \name can greatly decrease the average and $99^{th}$ percentile flow completion time (FCT) by \approx12\% and \approx59\% in the testbed, and up to \approx16.9\% and \approx54.5\% in the simulation, respectively. |
|
Keywords:Computer Architecture, packet-loss recovery, multi-path TCP, coding |
|