|Title||Improving TCP for Time-Dependent Applications|
|Afilliation||Communication Systems, Communication Systems|
|Publication Type||Master's thesis|
|Year of Publication||2008|
|Publisher||University of Oslo|
In the last couple of years, developers have started implementing more complex features utilizing computer networks in interactive applications, for example, advanced and large scalemultiplayermodes in games. In addition, we have seen applications using computer communication in new ways, like IP telephony and video conference systems. Due to their interactive nature, these applications have strict latency requirements. Also, several of them have thin stream characteristics, meaning that they have very small bandwidth requirements. For applications to communicate over a computer network, they have to use a transport protocol. The dominant ones today are TCP and UDP, with TCP being preferred by the network because of the lack of fairness mechanisms in UDP. Also, UDP is more likely to be blocked by firewalls, and developers have to implement mechanisms that enforces e.g., reliability when using UDP. Unfortunately, TCP and its retransmission mechanisms are tuned for high-throughput streams without any timeliness requirements, for example streams generated by applications doing bulk data transfer. Interactive applications will often suffer from unnecessary high latencies due to these mechanisms, which can be devastating for the user experience. To address the latency issues, we have developed a sender side TCP modification that bundles potentially lost data into packets that are to be sent or retransmitted. By doing this we hope to preempt the experience of packet loss and improve the user experience. We have implemented and tested this modification in the Linux kernel, and our results show that we reduce the application latency by trading it against bandwidth.