Interfacing network coding with TCP: an implementation
📝 Abstract
In previous work (`Network coding meets TCP’) we proposed a new protocol that interfaces network coding with TCP by means of a coding layer between TCP and IP. Unlike the usual batch-based coding schemes, the protocol uses a TCP-compatible sliding window code in combination with new rules for acknowledging bytes to TCP that take into account the network coding operations in the lower layer. The protocol was presented in a theoretical framework and considered only in conjunction with TCP Vegas. In this paper we present a real-world implementation of this protocol that addresses several important practical aspects of incorporating network coding and decoding with TCP’s window management mechanism. Further, we work with the more widespread and practical TCP Reno. Our implementation significantly advances the goal of designing a deployable, general, TCP-compatible protocol that provides the benefits of network coding.
💡 Analysis
In previous work (`Network coding meets TCP’) we proposed a new protocol that interfaces network coding with TCP by means of a coding layer between TCP and IP. Unlike the usual batch-based coding schemes, the protocol uses a TCP-compatible sliding window code in combination with new rules for acknowledging bytes to TCP that take into account the network coding operations in the lower layer. The protocol was presented in a theoretical framework and considered only in conjunction with TCP Vegas. In this paper we present a real-world implementation of this protocol that addresses several important practical aspects of incorporating network coding and decoding with TCP’s window management mechanism. Further, we work with the more widespread and practical TCP Reno. Our implementation significantly advances the goal of designing a deployable, general, TCP-compatible protocol that provides the benefits of network coding.
📄 Content
arXiv:0908.1564v1 [cs.NI] 11 Aug 2009 Interfacing network coding with TCP: an implementation Jay Kumar Sundararajan∗, Szymon Jakubczak∗, Muriel M´edard∗, Michael Mitzenmacher†, Jo˜ao Barros‡ ∗Dept. of EECS Massachusetts Institute of Technology, Cambridge, MA 02139, USA {jaykumar, szym, medard}@mit.edu †School of Eng. and Appl. Sciences Harvard University, Cambridge, MA 02138, USA michaelm@eecs.harvard.edu ‡Instituto de Telecomunicac¸˜oes Dept. de Engenharia Electrot´ecnica e de Computadores Faculdade de Engenharia da Universidade do Porto, Portugal jbarros@fe.up.pt Abstract—In previous work (‘Network coding meets TCP’) we proposed a new protocol that interfaces network coding with TCP by means of a coding layer between TCP and IP. Unlike the usual batch-based coding schemes, the protocol uses a TCP- compatible sliding window code in combination with new rules for acknowledging bytes to TCP that take into account the network coding operations in the lower layer. The protocol was presented in a theoretical framework and considered only in conjunction with TCP Vegas. In this paper we present a real- world implementation of this protocol that addresses several important practical aspects of incorporating network coding and decoding with TCP’s window management mechanism. Further, we work with the more widespread and practical TCP Reno. Our implementation significantly advances the goal of designing a deployable, general, TCP-compatible protocol that provides the benefits of network coding. I. INTRODUCTION The Transmission Control Protocol (TCP) was originally developed for wired networks. Since wired networks have very little packet loss on the links and the predominant source of loss is buffer overflow due to congestion, TCP’s approach of inferring congestion from losses works well. In contrast, wireless networks are characterized by packet loss on the link and intermittent connectivity due to fading. TCP wrongly assumes the cause of these link losses to be congestion, and reduces its transmission rate unnecessarily, leading to low throughput. These problems of TCP in wireless networks are very well studied, and several solutions have been proposed (see [1] and references therein for a survey). In past work we proposed a new protocol called TCP/NC [2] that incorporates network coding inside the TCP/IP protocol stack with the aim of improving TCP throughput in wireless networks. The interface of TCP with network coding can be viewed as a generalization of previous work combining TCP with Forward Erasure Correction (FEC) schemes [3]. As opposed to coding only at the source, the protocol of [2] also allows intermediate nodes in the network to perform re-encoding of data. It is thus more general than end-to-end erasure correction over a single path, and can therefore, in principle, be used in multipath and multicast scenarios to obtain throughput benefits. In the current work, we present a real-life network coding implementation based on the mechanism proposed in [2]. The main contributions of this paper are as follows:
- We explain how to address the practical problems that arise in making the network coding and decoding oper- ations compatible with TCP’s window management sys- tem, such as variable packet length, buffer management, and network coding overhead.
- We demonstrate the compatibility of our protocol with the widely used TCP Reno; the original proposal of [2] considered only TCP Vegas.
- We present experimental results on the throughput ben- efits of the new protocol for a TCP connection over a single-hop wireless link. Although currently our experi- ments only study behavior over a single hop, this restric- tion is not mandatory and the evaluation of the protocol over arbitrary topologies will be addressed elsewhere. Before beginning, we explain the implications of this new protocol for improving throughput in wireless networks. There has been a growing interest in approaches that make active use of the intrinsic broadcast nature of the wireless medium. In the technique known as opportunistic routing [4], a node broadcasts its packet, and if one of its neighbors receives the packet, that node will forward the packet downstream, thereby obtaining a diversity benefit. If more than one of the neighbors receive the packet, they will have to coordinate and decide who will forward the packet. The MORE protocol [5] proposed the use of intra-flow network coding in combination with opportunistic routing. The random linear mixing (coding) of incoming packets at a node before forwarding them downstream was shown to reduce the coordination overhead associated with opportunistic routing. Another advantage is that the coding operation can be easily tuned to add redundancy to the packet stream to combat erasures. Such schemes can potentially achieve capacity for a multicast connection [6]. Typical implementations use batches of packets instead of sliding windows, and are generally therefore not compatible with TCP. Ex
This content is AI-processed based on ArXiv data.