Design and implementation of split tcp in the linux kernel

The Transmission Control Protocol (TCP) was designed for reliable communication between computers over networks of unpredictable quality. It has admirably succeeded in satisfying the needs of the growing Internet. Yet, there are combinations of network problems too bad even for TCP. In particular, in the situation of simultaneously very high delay (e.g. a satellite link) and high loss or even fading (a low quality earthlink or wireless link) on the same connection TCP can break down. A known solution is "Split TCP" where one or more proxies (called Helper Boxes) are introduced to break the end-to-end connection into few (almost) independent legs. Each of the legs has its own feedback, error control, congestion control etc. mechanism. Preferably, connections are split into legs having high RTT or high loss, but not both. The main contribution of this dissertation is the design and implementation of "Split TCP" using the Netfilter System in the Linux kernel, and the use of IP over IP for transport. The dissertation also gives a mathematical guarantee for improved TCP performance with Split TCP. By analyzing the mathematical result, this dissertation concludes that localizing network problems one per leg will guarantee the maximum improvement possible with Split TCP. Through experiments conducted over an actual network, this deduction is proven to hold true. The kernel implementation reduces overhead. The implementation used leaves TCP packets and flags intact, thus allowing use of SSH (etc.) over a Split TCP connection. The implementation lets the helper box negotiate, for "inter-HB legs", performance enhancing options like window scaling and Explicit Congestion Notification (ECN) support irrespective of the end-host capabilities. This allows a pair of helper boxes to have improved performance, thus increasing the throughput of the overall connection. Depending on the configuration of an end host, these options will also be negotiated between the end host and the HB. The use of IP over IP allows use of several helper boxes in a connection and makes it easier to achieve transparency for the original end-hosts. The results of the experiments have been very promising. For example, with various drop probabilities, a connection with 1 helper box was, on an average, 9.5 times faster in comparison than one without. For a similar experiment with 3 HB's a Split TCP connection is on an average 8.29 times faster than a regular TCP, with the factor of improvement increasing with increasing drop probability. These results met the theoretical expectations of large improvements in situations with higher and asymmetric drop probabilities. The implementation was also tested in a heterogeneous environment where high loss and high delay are inherent in the wireless leg of the connection. The results have also shown the solution to be scalable. The primary area of use is for Internet connections, irrespective of the user application and the medium of connection, wired or wireless. This is unlike other proxies which are either application dependent or do not support certain applications (e.g. interactive).