Network Coding: Theory and Reality

the idea for which was first proposed by Ahlswede et al. in ... idea was originally meant for wired networks with special ..... Though the work is in progress and.
272KB taille 1 téléchargements 329 vues
Network Coding: Theory and Reality Mohit Saxena Department of Computer Science Purdue University

ABSTRACT Recent research in the domain of network coding has promised a complete paradigm shift for wired and wireless networks. In case of wired networks, improvements in the network capacity especially magnify for multicast scenarios. For wireless networks, the inherent broadcast nature of the medium provides ample opportunities for intelligent mixing of the information. The two major benefits offered by this approach are: throughput improvements for the whole system and a high degree of robustness. In theory, the gains are guaranteed and vary form a few percent to several folds depending on traffic patterns, congestion levels and other network characteristics. A few recent practical system implementations have also validated the gains, but all of them trade with the complexity of this paradigm. This paper discusses the state of the art research in this domain - both from a theoretical and a systems perspective. We describe the manifold applications of this approach in different kinds of networks, with the associated degree of complexity and the practical considerations. We discuss how coding-aware schemes can provide energy and throughput gains for wireless networks. Finally we present some novel and interesting open problems which could be researched further in this field.

1.

Figure 1: Butterfly network example.

a 2-way relay-node in a wireless setting is shown in Figure 2. Multicast networks are much simpler for using network coding because of the extra introduced complexity for intelligent decoding at the receiver in unicast transmissions. Apart from a broad classification of wired and wireless networks, network coding has manifold applications in various kinds of networks, such as P2P networks, sensor networks, mesh networks, vehicular networks, delay-tolerant networks, multimedia services and even in network security. This paper discusses the applications of network coding in such networks. In section 5, we describe the state of the art research in various spheres of networking utilizing this paradigm. Theoretical foundations of network coding lie in information and coding theory. Linear network coding is one of the most simplest way to encode and decode information. How-

INTRODUCTION

Network Coding is a fairly recent transmission paradigm, the idea for which was first proposed by Ahlswede et al. in the seminal paper on Network Information Flow [1]. The basic underlying idea is that one can approach the broadcast capacity by allowing the intermediate nodes within a network to intelligently code and decode the information carried by the different flows. This approach developed by theoreticians in the field of information theory, has gained a lot of popularity in the last few years in the domain of networking practitioners. The idea was originally meant for wired networks with special focus on exploiting the multicast nature of transmissions, as described using the famous butterfly network example (Figure 1). Later the idea was adopted for wireless networks by exploiting the inherent broadcast nature of the medium. A simple example demonstrating the use of network coding at

Figure 2: 2-way relay node example. 1

ever several practical considerations are associated with generation of linear random coefficients from the Galois field and the Gaussian eliminations used for decoding the linear combinations of the packets. These considerations not only add to the time complexity of network coding-based approaches, but also increase the complexity to implement them practically. In section 2, we briefly describe the underlying theoretical principles associated with network coding. Although a lot of theoretical research has been done to devise new and more efficient ways to code information, the number of practical systems are far less in number. In section ??, we discuss some novel open problems which could form as starting points for further research in this domain from a systems perspective. The remainder of the paper is organized as follows. Section 2 briefly describes some of the theoretical research carried out in the domain of network coding. It is followed by a description of the major benefits associated with the usage of this paradigm, with a special focus on wireless networks, in section 3. Section 4 outlines a layer-based classification of network coding. This describes how network coding can be coupled with different layers in the networking protocol stack and how much the system benefits with each of those approaches. Section 5 discusses the realistic applications of this paradigm in various kinds of networks. We also briefly touch upon some very recent research works which focus on magnifying the gains out of this approach by investigating its interplay with classical networking protocols such as those for routing and energy efficiency, in section 6. Finally we present some novel and interesting ideas which could form the basis of further systems research in this domain in section ??.

2.

cation of network coding, the node B intelligently mixes the two packets x1 and x2 before forwarding them. In case of a wireless network, it can simply broadcast a linear combination of the two packets, which reduces the total number of transmissions from 4 to 3. But the question is what exactly is a good linear combination for the packets. If B simply concatenates the two packets, then the total number of logical transmissions is 3, however the communication complexity is still the same. So a good linear combination is one which spreads the information associated with both the packets in such a manner that it can be decoded uniquely at the destination nodes. Linear coding provides such characteristics. It assumes the packets to be of the same size, say L bits. If they are not, then the shorter packets are padded with a trail of 0s. Then every packet is interpreted as a symbol of s consecutive bits over the field, F2s , also commonly known as Galois field. A linear combination of the original (native) packets is constructed using the addition and multiplication operations over this field with random linear coefficients, and coded to be transmitted. At the receiver end, this linear combination can be decoded uniquely once the basic set is constructed to get back the native packets. More formally, if we consider M 1 , ... ,M n as the set of n native packets generated by one of the sources. Then a linear Pn combination of these n packets is Cn = i=1 gi M i . Further, the summation has to be computed for each symbol position in the packet. The encoded packet contains the encoded data Cn , known as information vector and it also contains the encoding vector which represents the set of coefficients used, g = (g1 , ... , gn ). These coefficients are selected uniformly at random over the field F2s , and the selection process could be completely independent and distributed for each node in the network or could be deterministic and centralized. For decoding, the receiver has to wait until it receives a basic set of linear combinations of the native packets which are linearly independent. Once the basic set is received, the problem is as simple as solving a system of linear equations given the basic eigen values. This is the beauty of network coding that the receiver need not require all the n native packets to decode the combinations. This also forms the major underlying idea - how network coding can reduce the total number of transmissions and increase the capacity of the network. From the systems perspective, the combinations should be constructed at each intermediate node and the source itself in a way such that the time for which the receiver has to wait to re-construct the complete basic set is minimized. This is done by using the ideas of opportunistic listening and intelligent forwarding of the packets [3, 19].

THEORETICAL FOUNDATION

Yeung et al. provides a comprehensive description of the theoretical foundations of network coding in [28]. Theoretically, it can be classified with the kind of network it is being used in. Cyclic and acyclic networks need differentiation in terms of the coding approaches in general. The number of sources in the network play a major role in the choice of network coding techniques used. It also shares some limitations and advantages with algebraic coding techniques as discussed in [28]. We touch upon the basic fundamentals for network coding in this section without going much into the details.

2.1

Linear Network Coding

Figure 2 shows a toy system with a 2-way intermediate relay node which could be a router in a wireless mesh network, a node in an ad hoc network, or simply a peer in a P2P distribution network. The node B serves the purpose of relaying the information received from A and C. Without the application of network coding, it simply forwards the packets x1 and x2 to their respective destinations. This requires 4 actual transmissions in total for 2 packets. With the appli-

3.

NETWORK CODING: BENEFITS

After getting a flavor of the theory underlying this paradigm of network coding, we now discuss some more theoretical results supported by actual implementations for the capacity gains one could achieve using it. We specifically discuss the 2

4.

results for wireless networks, those for multicast and wired scenarios are discussed in detail in [28, 8].

3.1

Traditionally, network coding approaches have been always classified according to the kind of networks to which they are applied to - cyclic and acyclic networks, single or multiple source, unicast or multicast, wired or wireless, etc. We discuss a new way of classifying these approaches according to the way in which network coding is coupled with the networking protocol stack. The power of network coding varies with its application to different layers in the protocol stack.

Wireless Network Capacity

Recent work on finding maximum capacity gains which can be achieved using different forms of network coding in a wireless network has shown some interesting results [19, 17, 21]. Coding gain as defined in [19], is the ratio of the number of transmissions required by the current non-coding approaches, to the number of transmissions required used by a form of Digital Network Coding (COPE) to deliver the same set of packets. Coding+MAC gain is defined similarly as the expected throughput gain with COPE when an 802.11 MAC is used and all nodes are backlogged. For a simple 2-way relay node example (Figure 2) the coding gain is 1.33 and the Coding+MAC gain is 2. These are theoretical bounds, and the actual gains achieved for TCP and UDP flows are relatively lower due to practical factors such as additional overheads (headers ∼ 5-8%), imperfect overhearing and flow asymmetry. Similar gains can be analogously defined for more general topologies. Gupta and Kumar [12] established theoretically that the per node throughput of ad √ hoc networks with multi-pair unicast traffic scales as Θ(1/ n log n). Liu et al. [21] show that any arbitrary network coding and broadcasting at most provides a constant factor improvement in the throughput. Recently a new way of network coding has been proposed in literature which encodes signals instead of bits, and is termed as physical network coding [29] or analog network coding [17]. This approach exploits the phenomena of wireless interference and allows the medium to inherently mix the analog signals over the air. The coding gains using this approach are better than the ones achieved by its digital counterpart [19]. It nearly doubles the capacity of our 2-way relay node example (Figure 2) and further reduces the number of transmission time slots from 3 to 2.

3.2

NETWORK CODING: A LAYER-BASED CLASSIFICATION

4.1

Application-aware network coding

Content distribution and primarily file sharing applications have been hugely benefitted by the usage of network coding [11, 13, 27]. However all of them has shown that network coding can be applied in an application-aware manner to magnify its gains. For peer-to-peer content distribution networks, the server can split a large file into a number of blocks. The principle of network coding is applied in the sense that the peer nodes try to download the different blocks or their linear combinations from the server and then distribute the downloaded blocks among them. In Avalanche, linear combinations of the file are sent and received between the peer nodes. Network coding can help in minimizing the total download time of the file and can also outperform traditional FEC techniques to achieve robustness in the system. However the gains achieved by network coding in P2P networks are still a topic of controversy [5] due to the inherent characteristics of such networks such as high degrees of churns, uniqueness for coefficients for large number of file blocks, etc.

4.2

Coding-aware routing

Recent work [24, 2] has tried to magnify the gains achieved by network coding by making routing aware of the opportunities available for network coding in the network. They study the tradeoff between routing flow “close to each other” for utilizing coding opportunities and “away from each other” for avoiding wireless interference. In short, they show that for a variety of mesh network topologies, a route selection technique which is aware of network coding opportunities leads to higher end-to-end throughput as compared to codingoblivious routing strategies.

Improving Robustness

Another major gain from network coding is that it improves the robustness and adaptability of the system [8]. By opportunistically forwarding the linear combinations and listening, it is well suited for cases where nodes have incomplete information about the global network state. Similarly for unreliable networks where packets may be dropped, traditionally automatic repeat request (ARQ) have been used as a solution. An alternative to this is the usage of Forward Error Correcting Codes (especially the recently popular Fountain Codes). However all of them are end-to-end, where packets are encoded and decoded only at the source and the destination. Ideas from network coding can be applied, thereby allowing intermediate nodes to also form linear combinations and can lead to significant improvements in the robustness of the overall system.

4.3

MAC-aware network coding

We categorize the work and architectures proposed in [19, 18, 14] in this category. All of them propose a shim layer between IP and MAC to implement network coding. This layer is aware of the MAC-layer behavior of the node and exploits the routing characteristics as well. The gains are high regardless of the applications in such approaches, but vary significantly with the kind of transport medium (TCP/UDP).

3

4.4

Physical network coding

Probably one of the most powerful form of network coding which is agnostic of the application or the transport medium is the outcome of recent work [17, 29]. However the implementation for coding of analog signals is highly complex and has to take into account several practical factors such as time synchronization, phase shifts, and attenuation of analog signals. Nevertheless, this approach of coding has been proven to be highly effective for toy topologies, with a large scope for further research to devise new methods to make it adaptable for more general scenarios.

5.

NETWORK CODING: REALISTIC APPLICATIONS

In the past few years, a lot of research has been done on evolving new systems built on this paradigm. However, some kind of networks have been benefited the most and network coding promises effective gains for them. In this section we discuss its applications in such networks, with particular emphasis on P2P and wireless networks.

5.1 5.1.1

Figure 3: Universal Software Radio Peripheral.

Wireless Network Applications Mesh Network

The inherent broadcast characteristics of the wireless medium provide ample opportunities for natural mixing of analog signals over the air. Two major requirements for effective network coding are intelligent coding (mixing) of the information and secondly opportunistic forwarding and listening to increase information diversity. Recent work on analog network coding [17] utilizes the phenomena of wireless interference by allowing multiple simultaneous transmissions for natural coding of analog signals. This approach of coding information produces maximum improvements in the capacity of the network. However its implementation requires incremental and cross-layer modifications. The advent of software radios [23] have opened numerous opportunities for research in this field. The need of costly Universal Software Radio Peripheral (USRP) board is still a limiting factor for software radios (Figure 3). Another case study for file sharing using network coding (application-aware) in Wireless Mesh Networks [13] identifies several control parameters which are necessary to maximize the benefits of this approach, such as the number of nodes, their spatial placement, the cooperation strategy to forward the file chunks, etc. Although this paper makes several simplifying assumptions like the usage of an ideal MAC layer protocol with no collisions and global synchronization; it is one of the first works for analyzing application-aware coding over a wireless mesh network in different scenarios.

5.1.2

Vehicular Ad hoc Networks (VANET)

All previous works using the approach of network coding have always assumed a static wireless network. Recent

4

work which proposes a network coding based file swarming protocol (application-aware) targeting vehicular ad hoc networks (VANET) takes into account major mobility issues such as intermittent connectivity, addressing, node/user density and unreliable channel [20]. This work has focused on file swarming in a mobile P2P (VANET) network and analyzes the impact of mobility on the download latency associated with a file. Though the work is in progress and preliminary results are presented, it is a first step towards understanding the benefits of network coding in a mobile setting.

5.1.3

Sensor Networks

Most of the coding-based work in sensor networks to increase the efficiency of data transmission to sink points utilizes another form of coding which is source coding. Recent work [16] uses Growth Codes to effectively recover from stochastic losses of information in a sensor network due to failure of nodes. This is however an example of distributed channel coding. Data gathering in sensor networks is always constrained by the limits on the storage space available at the sensor nodes. If the information is forwarded opportunistically in a selective manner, we can overcome this constraint to some extent. Work presented in [7] proposes a similar solution. Nodes are assumed to have storage space for one single packet. Overheard packets from neighboring nodes are multiplied with a random coefficient and added to the existing information at the sensor nodes. The sink node can therefore reconstruct n data packets with high probability, by gathering information from only n sensor nodes distributed anywhere in the network. This is a simple form of network coding.

5.2

P2P Networks

at each of the mobile nodes in such networks. Further they also show that the amount of load on the network may also affect the gains achieved by the usage of network coding based routing in such networks.

Peer-to-peer networks have a major application for content distribution, especially file sharing. Avalanche [27, 11] is one of the most widely known P2P application which uses network coding for content distribution. A file is split into a large number of blocks and the source (server) distributes random linear combinations of these blocks. Peer nodes in the network also distribute combinations of the blocks, in a manner such that they minimize the flow of redundant and non-innovative blocks. A non-innovative block is one which is useless to transmit to a neighboring peer. This is decided using the neighbor’s matrix of decoding coefficients or by explicit notification from him. Following work [10] presents the first full implementation of a P2P content distribution system that uses network coding. They empirically show that network coding overheads are relatively small both in terms of CPU utilization and I/O activity. However their system’s efficiency largely depends on how the peers are connected to each other. This indicates that there is a need for further analysis of the impact of peermatching algorithms on the efficiency of such a system. An interesting result for usage of network coding in P2P networks came up with the work presented in [5]. This work compares the maximum achievable throughput using network coding with routing in P2P networks. They present a simple model of P2P content distribution networks and theoretically prove that there is no added coding advantage for such networks. This is partly attributed to the inherent characteristics of a P2P network such as high degree of churns in such networks, overheads associated with decoding at each peer and unavailability of unique coefficients to code when there are a large number of pieces in the file to transfer. This work has nevertheless opened a debate between the proponents and competitors of Avalanche.

5.3

5.4

Network Security

Network coding increases the capacity of the network, but however relies on mixing of information within the network. A single malicious node within the network can thus corrupt the information vectors of all the other nodes within a short duration of time and can easily prevent decoding. In [15], the first distributed polynomial-time rate optimal network codes have been proposed which can work even in the presence of Byzantine nodes. Their solution requires minimal changes to the end-hosts and is information-theoretically secure. Moreover the algorithm is independent of the kind of underlying network - wired or wireless.

5.5

Storage and Network Coding

Distributed storage systems based on P2P architectures, require minimal communication overheads for maintaining data redundancy spread across a large number of nodes. Erasure code based schemes have promised less redundancy and thus lower bandwidth requirements in the past. However since the fragments need to be periodically replaced as the nodes fail, newer ways need to be devised to generate the file fragments in order to minimize the data transferred across the network. In [6], a new technique has been proposed to minimize this redundancy using a scheme known as Regenerating Codes. They use four different traces - PlanetLab All Pair Pings, Microsoft PC pings, Skype super peer pings and Gnutella peer application-level pings - to evaluate their system.

6.

Extreme Environments and DTNs

Delay-tolerant networks and mobile sensor networks where different nodes meet occasionally require communication and routing algorithms which have least overheads. Traditionally probabilistic flooding-based routing schemes have been used for such networks. Recent work [25, 26] has presented new forwarding schemes which use network coding to significantly reduce the associated overheads. Nodes now do not simply forward the packets accumulated for long periods of time, but instead information that is coded over the contents of several packets overheard in the past. Erasure coding based routing used in [25] provides better worst-case delay performance with a fixed amount of overhead. Similar to delay-tolerant networks, there is another class of networks known as disruption-tolerant networks. Traditionally, epidemic routing has been proposed in such mobile disruption tolerant networks. Recent work [30] has investigated the benefits of using random network coding unicast communications in a mobile DTN. They show that these benefits increase with the bandwidth and buffer constraints

6.1

NETWORK CODING AND CLASSICAL NETWORKING PROBLEMS Energy Efficiency

Energy efficiency has been a well-explored problem in wireless ad hoc networks. Energy efficiency affects battery lives of the nodes in the network, thereby impacting the system lifetime also. Recent work [9] has proposed a novel network coding based approach to energy efficient broadcasting in a wireless ad hoc network. It investigates the tradeoffs and design choices in practical systems such as distributed generation management, effect of transmission range and mobility. The results are encouraging and show that there exists a potential for significant energy savings by deploying network coding over a practical wireless ad hoc network.

6.2

Routing

Opportunistic routing in multi-hop wireless networks with [3] or without [4] integration with the MAC layer for explicit scheduling of the packets, have proved to be effective in in5

creasing system throughput significantly. Listening and forwarding data packets opportunistically also forms the basis of network coding. This indicates that coding-aware routing has the potential of improving the network capacity as compared to coding-oblivious routing and opportunistic routing as well. A recent work [24] builds over the COPE architecture [19] and studies the trade-offs between routing flows ‘close to each other’ for utilizing coding opportunities and those which are ‘away from each other’ for avoiding wireless interference. Earlier approaches based on network coding to improve the network capacity have only tried to exploit the temporal diversity of traffic, by opportunistic forwarding of the packets. This work goes a step further and exploits both temporal and spatial diversity of the traffic by adaptively choosing routes aware of interference and coding opportunities. Another recent work [22] formulates optimal routing with network coding, given the topology and traffic, as a linear programming problem. They define a new routing metric ECX (Expected Number of Coded Transmissions) and show that their coding-aware routing scheme (ROCX) offers significant gains, particularly for networks with many long distant flows.

7.

[4] Szymon Chachulski, Michael Jennings, Sachin Katti, and Dina Katabi. Trading structure for randomness in wireless opportunistic routing. Proc. of SIGCOMM, 2007. [5] Dah Ming Chiu, Raymond W Yeung, Jiaqing Huang, and Bin Fan. Can network coding help in p2p networks? Proc. of International Symposium on Modeling and Optimization in Mobile, Ad Hoc and Wireless Networks, 2006. [6] Alexandros G. Dimakis, P. Brighten Godfrey, Martin J. Wainwright, and Kannan Ramchandran. Network coding for distributed storage systems. Proc. of INFOCOM, 2007. [7] Alexandros G. Dimakis, Vinod Prabhakaran, and Kannan Ramchandran. Ubiquitous access to distributed data in large-scale sensor networks through decentralized erasure codes. Proc. of IPSN, 2005. [8] Christina Fragouli, Jean-Yves Le Boudec, and Jorg Widmer. Network coding: An instant primer. Technical Report, LCA-Report-2005-010, 2005. [9] Christina Fragouli, Jorg Widmer, and Jean-Yves Le Boudec. A network coding approach to energy efficient broadcasting: from theory to practice. Technical Report, LCA-Report-2005-009, 2005. [10] Christos Gkantsidis, John Miller, and Pablo Rodriguez Rodriguez. Comprehensive view of a live network coding p2p system. Proc. of IMC, 2006. [11] Christos Gkantsidis and Pablo Rodriguez Rodriguez. Network coding for large scale content distribution. Proc. of IEEE INFOCOM, 2005. [12] Piyush Gupta and P.R. Kumar. The capacity of wireless networks. IEEE Trans. on Information Theory, Volume 46, Number 2. March 2000. [13] Anwar Al Hamra, Chadi Barakat, and Thierry Turletti. Network coding for wireless mesh networks: A case study. Proc. of International Symposium on a World of Wireless, Mobile and Multimedia Networks (WoWMoM), 2006. [14] Wenjun Hu, Sachin Katti, Hariharan Rahul, Dina Katabi, and Jon Crowcroft. Sending more for less bandwidth and power - a systems approach to network coding. Proc. of SOSP, 2005. [15] S. Jaggi, M. Langberg, S. Katti, T. Ho, D. Katabi, and M. Medard. Resilient network coding in the presence of byzantine adversaries. Proc. of INFOCOM, 2007. [16] Abhinav Kamra, Vishal Misra, Jon Feldman, and Dan Rubenstein. Growth codes: Maximizing sensor network data persistence. Proc. of SIGCOMM, 2006. [17] Sachin Katti, Shyamnath Gollakota, and Dina Katabi. Embracing wireless interference: Analog network coding. Proc. of SIGCOMM, 2007. [18] Sachin Katti, Hariharan Rahul, Wenjun Hu, Dina Katabi, and Muriel Medard. The importance of being opportunistic: Practical network coding for wireless environments. Proc. of Allerton, 2005.

CONCLUSION

Improvements in network capacity due to network coding promise a paradigm shift in the way communication take place in the state of the art networks. At the same time, it is well known that the notion of network coding has always been debated and it has its own complexities and disadvantages. In this paper, we have presented the current research in the domain of network coding from both a theoretical and system’s perspective. We have described the major benefits of this approach in general, with special focus on wireless networks. We present a novel layer-based classification for network coding based approaches. We also discuss the diverse applications of network coding and touch upon the recent research in this field. The solutions proposed by coding-based techniques to classical networking problems have been discussed in some detail. Finally, we have presented some novel and interesting ideas which could pave new paths for further research in this domain.

8.

REFERENCES

[1] Rudolf Ahlswede, Ning Cai, Shuo-Yen Robert Li, and Raymond W. Yeung. Network information flow. IEEE Trans. of Information Theory, Vol. 46, No. 4, July 2000. [2] Xingkai Bao and Jing Li. Progressive network coding for message-forwarding in ad-hoc wireless networks. Proc. of SECON, 2006. [3] Sanjit Biswas and Robert Morris. Exor: Opportunistic multi-hop routing for wireless networks. Proc. of SIGCOMM, 2005. 6

[19] Sachin Katti, Hariharan Rahul, Wenjun Hu, Dina Katabi, Muriel Medard, and Jon Crowcroft. Xors in the air: Practical wireless network coding. Proc. of SIGCOMM, 2006. [20] Uichin Lee, JoonSang Park, Joseph Yeh, Giovanni Pau, and Mario Gerla. Codetorrent: Content distribution using network coding in vanet. Proc. of MobiShare, 2006. [21] Junning Liu, D. Goeckel, and D. Towsley. The throughput order of ad hoc networks employing network coding and broadcasting. Proc. of MILCOM, 2006. [22] Bin Ni, Naveen Santhapuri, Zifei Zhong, and Srihari Nelakuditi. Routing with opportunistically coded exchanges in wireless mesh networks. Proc. of SECON, 2006. [23] GnuRadio: The GNU Software Radio. http://www.gnu.org/software/gnuradio. [24] Sudipta Sengupta, Shravan Rayanchu, and Suman Banerjee. An analysis of wireless network coding for unicast sessions: The case for coding-aware routing. Proc. of INFOCOM, 2007. [25] Yong Wang, Sushant Jain, Margaret Martonosi, and Kevin Fall. Erasure-coding based routing for opportunistic networks. Proc. of SIGCOMM’05 WDTN Workshop, 2005. [26] Joerg Widmer and Jean-Yves Le Boudec. Network coding for efficient communication in extreme networks. Proc. of SIGCOMM’05 WDTN Workshop, 2005. [27] Avalanche: File Swarming with Network Coding. Microsoft research. http://research.microsoft.com/camsys/avalanche. [28] Raymond W. Yeung, Shuo-Yen Robert Li, Ning Cai, and Zhen Zhang. Network coding theory. Foundations and Trends in Communications and Information Theory, 2006. [29] Shengli Zhang, Soung Chang Liew, and Patrick Lam. Hot topic: Physical-layer network coding. Proc. of MobiCom, 2006. [30] Xiaolan Zhang, Giovanni Neglia, Jim Kurose, and Don Towsley. On the benefits of random linear coding for unicast applications in disruption tolerant networks. Proc. of 4th International Symposium on Modeling and Optimization in Mobile, Ad Hoc and Wireless Networks, 2006.

7