Incast
Incast applications have grown in popularity with the advancement of data center technology. It is found that the TCP incast may suffer from the throughput collapse problem, as a consequence of TCP retransmission timeouts when the bottleneck buffer is overwhelmed and causes the packet losses. While some previous literature has proposed solutions, we still see the problem not completely solved. In this project, we investigate the three root causes for the poor performance of TCP incast flows and propose three solutions, one for each at the beginning, the middle and the end of a TCP connection. The three solutions are: admission control to TCP flows so that the flow population would not exceed the network's capacity; retransmission based on timestamp to detect loss of retransmitted packets; and reiterated FIN packets to keep the TCP connection active until the the termination of a session is acknowledged. The orchestration of these solutions prevents the throughput collapse. The main idea of these solutions is to ensure all the on-going TCP incast flows can maintain the self-clocking, thus eliminates the need to resort to retransmission timeout for recovery. We evaluate these solutions and find them work well in preventing the retransmission timeout of TCP incast flows, hence also preventing the throughput collapse.
Causes of throughput collapse
The throughput collapse is due to retransmission timeout in TCP, or RTO for short. We found that there are three reasons to have RTO, namely:
1. Block loss: The loss of a whole window of packets, which breaks the self-clocking of TCP (fig.3)
2. Double loss: The loss of a retransmitted packet, which by default, TCP recover it by RTO (fig.4)
3. Tail loss: The loss of one of the last few packets, which does not provide enough clue to perform fast retransmit (fig.5)
Solutions
Considering these scenarios, we proposed three different solutions, namely, admission control of TCP connections, timestamp-assisted retransmission, and reiterated FIN packets corresponds respec- tively to the initiation, continuation, and termination of the life of a TCP connection. (fig.10)
Admission control limits the number of concurrent incast flows so that the network will not be overwhelmed. Then, we can reduce the probability of block loss as we have a smaller population to share the bottleneck. The other two solutions, timestamp-assisted retransmit (fig.8) and reiterated FIN packets (fig.9), guarantee a packet is sent whenever an acknowledgment arrives. The former helps identifying the loss of a retransmitted packet (double loss), so that it can be retransmitted again. The latter recovers loss at the tail of a connection (tail loss), which cannot be done in a standard TCP.