NCTCP: A Network Coded TCP Protocol
Justin Ridgewell, Hala ElAarag · 2016
This paper presents the design of Network Coded TCP (NCTCP). NCTCP is a reliable TCP-like transport protocol that uses network coding to dramatically improve the overall performance in networks with lossy links. By sending datagrams that represent a linear combination of packets, we are able to receive data in an orderless fashion and still push data in byte-correct order to the receiver's application layer. To eliminate round off errors we generate consecutive-ones linear combinations of packets which form totally unimodular matrices. NCTCP has an Additive Increase Multiplicative Decrease (AIMD) congestion control mechanism that uses Round Trip Times to increase the performance on wireless networks without hurting the performance on wired networks. Unlike TCP, NCTCP does not use a congestion window and can be implemented in user space and hence does not need any changes to the kernel. We test our protocol using ns-2 simulator using several performance measurements, namely, throughput, goodput, efficiency and receiver efficiency. Our simulations show that NCTCP performs better than standard TCP implementations and previously proposed network coding protocols; TCP/NC and CTCP in terms of the aforementioned performance measures. We demonstrate that NCTCP is TCP-friendly and maintains the fairness property essential for the health of the Internet.