  Cloud interactive data-driven applications generate swarms of small TCP flows
that compete for the small buffer space in data-center switches. Such
applications require a short flow completion time (FCT) to perform their jobs
effectively. However, TCP is oblivious to the composite nature of application
data and artificially inflates the FCT of such flows by several orders of
magnitude. This is due to TCP's Internet-centric design that fixes the
retransmission timeout (RTO) to be at least hundreds of milliseconds. To better
understand this problem, in this paper, we use empirical measurements in a
small testbed to study, at a microscopic level, the effects of various types of
packet losses on TCP's performance. In particular, we single out packet losses
that impact the tail end of small flows, as well as bursty losses, that span a
significant fraction of the small congestion window of TCP flows in
data-centers, to show a non-negligible effect on the FCT. Based on this, we
propose the so-called, timely-retransmitted ACKs (or T-RACKs), a simple loss
recovery mechanism to conceal the drawbacks of the long RTO even in the
presence of heavy packet losses. Interestingly enough, T-RACKS achieves this
transparently to TCP itself as it does not require any change to TCP in the
tenant's virtual machine (VM). T-RACKs can be implemented as a software shim
layer in the hypervisor between the VMs and server's NIC or in hardware as a
networking function in a SmartNIC. Simulation and real testbed results show
that T-RACKs achieves remarkable performance improvements.
