Network Coding: an Introduction
Total Page:16
File Type:pdf, Size:1020Kb
Network Coding: An Introduction Tracey Ho Desmond S. Lun Contents Preface page vi 1 Introduction 1 1.1 What is network coding? 1 1.2 What is network coding good for? 3 1.2.1 Throughput 3 1.2.2 Robustness 6 1.2.3 Complexity 9 1.2.4 Security 10 1.3 Network model 10 1.4 Outline of book 13 1.5 Notes and further reading 15 2 Lossless Multicast Network Coding 16 2.0.1 Notational conventions 16 2.1 Basic network model and multicast network coding problem formulation 16 2.2 Delay-free scalar linear network coding 17 2.3 Solvability and throughput 20 2.3.1 Theunicastcase 20 2.3.2 The multicast case 21 2.3.3 Multicasting from multiple source nodes 22 2.3.4 Maximum throughput advantage 23 2.4 Multicast network code construction 25 2.4.1 Centralized polynomial-time construction 25 2.4.2 Random linear network coding 28 2.5 Packet networks 32 2.5.1 Distributed random linear coding for packet networks 33 iii iv Contents 2.6 Networks with cycles and convolutional network coding 36 2.6.1 Algebraic representation of convolutional network coding 37 2.7 Correlatedsourceprocesses 40 2.7.1 Joint source-network coding 41 2.7.2 Separation of source coding and network coding 43 2.8 Notes and further reading 44 2.A Appendix: Random network coding 46 3 Inter-Session Network Coding 56 3.1 Scalar and vector linear network coding 57 3.2 Fractional coding problem formulation 58 3.3 Insufficiency of linear network coding 60 3.4 Information theoretic approaches 62 3.4.1 Multiple unicast networks 67 3.5 Constructive approaches 68 3.5.1 Pairwise XOR coding in wireline networks 68 3.5.2 XOR coding in wireless networks 70 3.6 Notes and further reading 74 4 Network Coding in Lossy Networks 76 4.1 Random linear network coding 79 4.2 Coding theorems 81 4.2.1 Unicast connections 81 4.2.2 Multicast connections 94 4.3 Error exponents for Poisson traffic with i.i.d. losses 96 4.4 Notes and further reading 98 5 Subgraph Selection 99 5.1 Flow-based approaches 100 5.1.1 Intra-sessioncoding 101 5.1.2 Computation-constrained coding 127 5.1.3 Inter-sessioncoding 128 5.2 Queue-length-based approaches 132 5.2.1 Intra-session network coding for multiple multicast sessions 133 5.2.2 Inter-sessioncoding 147 5.3 Notes and further reading 148 6 Security Against Adversarial Errors 149 6.1 Introduction 149 6.1.1 Notational conventions 150 6.2 Error correction 150 Contents v 6.2.1 Error correction bounds for centralized network coding 150 6.2.2 Distributed random network coding and polynomial-complexity error correction 162 6.3 Detectionofadversarialerrors 168 6.3.1 Model and problem formulation 169 6.3.2 Detection probability 171 6.4 Notes and further reading 173 6.A Appendix: Proof of results for adversarial error detection 173 Bibliography 179 Index 188 Preface The basic idea behind network coding is extraordinarily simple. As it is defined in this book, network coding amounts to no more than perform- ing coding operations on the contents of packets—performing arbitrary mappings on the contents of packets rather than the restricted functions of replication and forwarding that are typically allowed in conventional, store-and-forward architectures. But, although simple, network coding has had little place in the history of networking. This is for good reason: in the traditional wireline technologies that have dominated networking history, network coding is not very practical or advantageous. Today, we see the emergence, not only of new technologies, but also of new services, and, in designing new network protocols for these new technologies and services, we must be careful not to simply transplant old protocols because we are familiar with them. Instead, we must consider whether other, hitherto unused, ideas may lead to better solutions for the new situation. Network coding shows much promise as such an idea. In particular, various theoretical and empirical studies suggest that significant gains can be obtained by using network coding in multi-hop wireless networks and for serving multicast sessions, which are certainly examples of fast- emerging technologies or services. These studies have, for example, en- couraged Microsoft to adopt network coding as a core technology of its Avalanche project—a research project that aims to develop a peer- to-peer file distribution system—exploiting the advantages offered by network coding for multicast services. Thus, the time may finally be ripe for network coding. Hence the motivation for this book: we feel that network coding may have a great deal to offer to the future design of packet networks, and we would like to help this potential be realized. We would like also to vi Preface vii encourage more research in this burgeoning field. Thus, we have aimed the book at two (not necessarily distinct) audiences: first, the practi- tioner, whose main interest is applications; and, second, the theoretician, whose main interest is developing further understanding of the proper- ties of network coding. Of these two audiences, we have tended to favor the first, though the content of the book is nevertheless theoretical. We have aimed to expound the theory in such a way that it is accessible to those who would like to implement network coding, serving an important purpose that was, in our opinion, inadequately served. The theoretician, in contrast to the practitioner, is spoiled. Besides this book, a survey of important theoretical results in network coding is provided in Yeung et al.’s excellent review, Network Coding Theory [149, 150]. Because of our inclination toward applications, however, our presentation differs substantially from that of Yeung et al. Our presentation draws substantially from our doctoral dissertations [60, 93], and a bias toward work with which we have personally been involved is shown. We endeavor, however, to ensure that most of the significant work in network coding is either covered in the text or men- tioned in summary—a goal aided by the notes and further reading in the final section of each chapter. There will inevitably be some unintended omissions, for which we apologize in advance. Broadly, we intend for the book to be accessible to any reader who has a background in electrical engineering or computer science. Some mathematical methods that we use, such as some algebraic methods and some optimization techniques, may be unfamiliar to readers in this cat- egory and, though we do not cover these methods, we provide references to suitable textbooks where relevant. We have many to thank for their help and support during the develop- ment of this book. Foremost among them are Muriel M´edard and Ralf Koetter, doctoral and postdoctoral advisers, respectively, to us both, who have been exemplary personal and professional mentors. We would also like to thank the wonderful group of collaborators that worked with us on network coding: Ebad Ahmed, Yu-Han Chang, Supratim Deb, Michelle Effros, Atilla Eryilmaz, Christina Fragouli, Mario Gerla, Keesook J. Han, Nick Harvey, Sidharth (Sid) Jaggi, David R. Karger, Dina Katabi, Sachin Katti, J¨org Kliewer, Michael Langberg, Hyunjoo Lee, Ben Leong, Petar Maymounkov, Payam Pakzad, Joon-Sang Park, Niranjan Ratnakar, Siddharth Ray, Jun Shi, Danail Traskov, Sriram Vishwanath, Harish Viswanathan, and Fang Zhao. In general, the en- tire network coding community has been a very delightful, friendly, and viii Preface intellectually-stimulating community in which to work, and we would like to thank all its members for making it so. We would also like to thank Tao Cui, Theodoros Dikaliotis and Elona Erez for their helpful suggestions and comments on drafts of this book. There are two further groups that we would like to thank—without them this book certainly could not have been produced. The first is the great group of profes- sionals at Cambridge University Press who saw the book to publication: we thank, in particular, Phil Meyler, Anna Littlewood, and Daisy Bar- ton. The second is our families, for their love and support during our graduate studies and the writing of this book. 1 Introduction Network coding, as a field of study, is young. It was only in 2000 that the seminal paper by Ahlswede, Cai, Li, and Yeung [4], which is generally attributed with the “birth” of network coding, was published. As such, network coding, like many young fields, is characterized by some degree of confusion, of both excitement about its possibilities and skepticism about its potential. Clarifying this confusion is one of the principal aims of this book. Thus, we begin soberly, with a definition of network coding. 1.1 What is network coding? Defining network coding is not straightforward. There are several defi- nitions that can be and have been used. In their seminal paper [4], Ahlswede, Cai, Li, and Yeung say that they “refer to coding at a node in a network as network coding”, where, by coding, they mean an arbitrary, causal mapping from inputs to outputs. This is the most general definition of network coding. But it does not distinguish the study of network coding from network, or multitermi- nal, information theory—a much older field with a wealth of difficult open problems. Since we do not wish to devote this book to network in- formation theory (good coverage of network information theory already exists, for example, in [28, Chapter 14]), we seek to go further with our definition. A feature of Ahlswede et al.’s paper that distinguishes it from most network information theory papers is that, rather than looking at general networks where essentially every node has an arbitrary, probabilistic effect on every other node, they look specifically at networks consisting of nodes interconnected by error-free point-to-point links.