|
|
Line 1: |
Line 1: |
| '''Linear network coding''' is a technique which can be used to improve a network's throughput, efficiency and [[scalability]], as well as resilience to attacks and eavesdropping. Instead of simply relaying the [[Packet (information technology)|packets]] of information they receive, the [[Node (networking)|nodes]] of a network take ''several'' packets and combine them together for transmission. This can be used to attain the maximum possible [[information]] [[flow network|flow]] in a [[Network theory|network]].
| | Nice to satisfy you, I am Marvella Shryock. For many years I've been working as a payroll clerk. California is our beginning place. What I love doing is performing ceramics but I haven't produced a dime with it.<br><br>My homepage; [http://Wixothek.com/blog/557 home std test] |
| | |
| It has been proven that [[linear code|linear coding]] is enough to achieve the upper bound in multicast problems with one or more sources.<ref>S. Li, R. Yeung, and N. Cai, "Linear Network Coding"([http://pdos.lcs.mit.edu/decouto/papers/li03.pdf PDF]), in IEEE Transactions on Information Theory, Vol 49, No. 2, pp. 371–381, 2003</ref> However linear coding is not sufficient in general (e.g. multisource, multisink with arbitrary demands), even for more general versions of linearity such as [[convolutional coding]] and [[filter-bank coding]].<ref>R. Dougherty, C. Freiling, and K. Zeger, "Insufficiency of Linear Coding in Network Information Flow" ([http://code.ucsd.edu/~zeger/publications/journals/DoFrZe05-IT-Insufficiency/DoFrZe05-IT-Insufficiency.pdf PDF]), in IEEE Transactions on Information Theory, Vol. 51, No. 8, pp. 2745-2759, August 2005 ( [http://code.ucsd.edu/~zeger/publications/journals/DoFrZe05-IT-Insufficiency/DoFrZe05-IT-Insufficiency-erratum.pdf erratum])</ref> Finding optimal coding solutions for general network problems with arbitrary demands remains an open problem.
| |
| | |
| ==Encoding and decoding==
| |
| In a linear network coding problem, a group of nodes <math>P</math> are involved in moving the data from <math>S</math> source nodes to <math>K</math> sink nodes. Each node generates new packets which are linear combinations of earlier received packets, multiplying them by [[coefficient]]s chosen from a [[Galois field|finite field]], typically of size <math>GF(2^s)</math>.
| |
| | |
| Each node, <math>p_k</math> with [[Indegree#Indegree and outdegree|indegree]], <math>InDeg(p_k) = S</math>, generates a message <math>X_k</math> from the linear combination of received messages <math>\{M_i\}_{i = 1}^S</math> by the relation:
| |
| :<math>X_k = \sum_{i=1}^S g_k^i\cdot M_i</math>
| |
| where the values <math>g_k^i</math> are the coefficients selected from <math>GF(2^s)</math>. Note that, since operations are computed in a finite field, the generated message is of the same length as the original messages. Each node forwards the computed value <math>X_k</math> along with the coefficients, <math>g_k^i</math>, used in the <math>k^\text{th}</math> level, <math>g_k^i</math>.
| |
| | |
| Sink nodes receive these network coded messages, and collect them in a matrix. The original messages can be recovered by performing [[Gaussian elimination]] on the matrix{{citation needed|date=July 2012}}. In reduced row echelon form, decoded packets correspond to the rows of the form <math>e_i=[0 ... 0 1 0 ... 0]</math>.
| |
| | |
| == A brief history ==
| |
| A network is represented by a [[directed graph]] <math>\mathcal{G}=(V, E, C)</math>. <math>V</math> is the set of nodes or vertices, <math>E</math> is the set of directed links (or edges), and <math>C</math> gives the capacity of each link of <math>E</math>. Let <math>T(s, t)</math> be the maximum possible throughput from node <math>s</math> to node <math>t</math>. By the [[max-flow min-cut theorem]], <math>T(s, t)</math> is upper bounded by the minimum capacity of all [[Cut (graph theory)|cuts]], which is the sum of the capacities of the edges on a cut, between these two nodes.
| |
| | |
| [[Karl Menger]] proved that there is always a set of edge-disjoint paths achieving the upper bound in a [[unicast]] scenario, known as the [[max-flow min-cut theorem]]. Later, the [[Ford–Fulkerson algorithm]] was proposed to find such paths in a polynomial time. Then, Edmonds proved in the paper "Edge-Disjoint Branchings" the upper bound in the broadcast scenario is also achievable, and proposed a polynomial time algorithm.
| |
| | |
| However, the situation in the [[multicast]] scenario is more complicated, and in fact, such an upper bound can't be reached using traditional [[routing]] ideas. Ahlswede, et al. proved that it can be achieved if additional computing tasks (incoming packets are combined into one or several outgoing packets) can be done in the intermediate nodes.<ref name="Ahlswede2000">{{cite journal| first=Rudolf| last= [[Rudolf Ahlswede|Ahlswede]]| coauthors= N. Cai, Shuo-Yen Robert Li, and Raymond Wai-Ho Yeung| title=Network Information Flow| journal=IEEE Transactions on Information Theory, IT-46| pages= 1204–1216| year= 2000| doi=10.1109/18.850663| volume=46| issue=4}}</ref>
| |
| | |
| ==The butterfly network example ==
| |
| [[Image:Butterfly network.svg|thumb|Butterfly Network.]]
| |
| The butterfly network <ref name="Ahlswede2000"/> is often used to illustrate how linear network coding can outperform [[routing]]. Two source nodes (at the top of the picture) have information A and B that must be transmitted to the two destination nodes (at the bottom), which each want to know both A and B. Each edge can carry only a single value (we can think of an edge transmitting a bit in each time slot).
| |
| | |
| If only routing were allowed, then the central link would be only able to carry A or B, but not both. Suppose we send A through the center; then the left destination would receive A twice and not know B at all. Sending B poses a similar problem for the right destination. We say that routing is insufficient because no routing scheme can transmit both A and B simultaneously to both destinations.
| |
| | |
| Using a simple code, as shown, A and B can be transmitted to both destinations simultaneously by sending the sum of the symbols through the center – in other words, we encode A and B using the formula "A+B". The left destination receives A and A + B, and can calculate B by subtracting the two values. Similarly, the right destination will receive B and A + B, and will also be able to determine both A and B.
| |
| | |
| ==Random network coding ==
| |
| | |
| Random network coding <ref name="Ho2003">T. Ho, R. Koetter, M. Medard, D. R. Karger and M. Effros, [http://www.its.caltech.edu/~tho/i1.pdf "The Benefits of Coding over Routing in a Randomized Setting"] in 2003 IEEE International Symposium on Information Theory. doi:[http://dx.doi.org/10.1109/ISIT.2003.1228459 10.1109/ISIT.2003.1228459]</ref> is a simple yet powerful encoding scheme, which in broadcast transmission schemes allows close to optimal throughput using a decentralized algorithm. Nodes transmit random linear combinations of the packets they receive, with coefficients chosen from a Galois field. If the field size is sufficiently large, the probability that the receiver(s) will obtain linearly independent combinations (and therefore obtain innovative information) approaches 1. It should however be noted that, although random network coding has excellent throughput performance, if a receiver obtains an insufficient number of packets, it is extremely unlikely that they can recover any of the original packets. This can be addressed by sending additional random linear combinations until the receiver obtains the appropriate number of packets.
| |
| | |
| == Applications ==
| |
| Network coding is seen to be useful in the following areas:
| |
| * Alternative to [[forward error correction]] and [[Automatic repeat request|ARQ]] in traditional and wireless networks with packet loss. e.g.: [[Coded TCP]],<ref>http://arxiv.org/abs/1212.2291</ref> [[Multi-user ARQ]]<ref>http://www.ericsson.com/technology/research_papers/wireless_access/doc/Multi-User%20ARQ.pdf</ref>
| |
| * Robust and resilient to network attacks like snooping, eavesdropping, replay or data corruption attacks.<ref>http://securenetworkcoding.wikidot.com/</ref><ref>http://home.eng.iastate.edu/~yuzhen/publications/ZhenYu_INFOCOM_2008.pdf</ref>
| |
| * Digital file distribution and P2P file sharing. e.g.: [[Avalanche filesystem|Avalanche]] from Microsoft
| |
| * Distributed storage.<ref>http://netcod.org/papers/11AcedanskiDMK-final.pdf</ref><ref>http://www-bcf.usc.edu/~dimakis/RC_Journal.pdf</ref>
| |
| * Throughput increase in wireless mesh networks. e.g. : [[COPE (network coding)|COPE]],<ref>http://people.csail.mit.edu/rahul/papers/cope-ton2008.pdf</ref> [[Coding-aware routing]]<ref>http://arena.cse.sc.edu/papers/rocx.secon06.pdf</ref><ref>http://www.cs.wisc.edu/~shravan/infocom-07-2.pdf</ref>
| |
| * Bidirectional low energy transmission in wireless sensor networks.
| |
| * Many-to-many broadcast network capacity augmentations.
| |
| * Buffer and Delay reduction in spatial sensor networks: [[Spatial buffer multiplexing]] <ref>[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4146919 Welcome to IEEE Xplore 2.0: Looking at Large Networks: Coding vs. Queueing<!-- Bot generated title -->]</ref>
| |
| * Reduce the number of packet retransmission for a single-hop wireless multicast transmission, and hence improve network bandwidth.<ref>http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=4549741</ref>
| |
| | |
| == See also ==
| |
| * [[Secret sharing protocol]]
| |
| * [[Homomorphic signatures for network coding]]
| |
| * [[Triangular network coding]]
| |
| | |
| ==References==
| |
| {{Reflist}}
| |
| * Fragouli, C.; Le Boudec, J. & Widmer, J. "Network coding: An instant primer" in ''Computer Communication Review'', 2006.
| |
| | |
| Ali Farzamnia, Sharifah K. Syed-Yusof, Norsheila Fisa "Multicasting Multiple Description Coding Using p-Cycle Network Coding", KSII Transactions on Internet and Information Systems, Vol 7, No 12, 2013.
| |
| | |
| == External links ==
| |
| * [http://www.ifp.uiuc.edu/~koetter/NWC/index.html Network Coding Homepage]
| |
| * [https://wiki.lnt.ei.tum.de/doku.php?id=network_coding:bibliography_for_network_coding A network coding bibliography]
| |
| * An Overview of Network Coding in Broadcast Wireless Communication:[http://www.techntechie.com/the-overview-of-network-coding-in-broadcast-wireless-communication.html]
| |
| * Raymond W. Yeung, Information Theory and Network Coding, Springer 2008, http://iest2.ie.cuhk.edu.hk/~whyeung/book2/
| |
| * Raymond W. Yeung et al., Network Coding Theory, now Publishers, 2005, http://iest2.ie.cuhk.edu.hk/~whyeung/netcode/monograph.html
| |
| * Christina Fragouli et al., Network Coding: An Instant Primer, ACM SIGCOMM 2006, http://infoscience.epfl.ch/getfile.py?mode=best&recid=58339.
| |
| * Avalanche Filesystem, http://research.microsoft.com/en-us/projects/avalanche/default.aspx
| |
| * Random Network Coding, http://www.mit.edu/~medard/coding1.htm
| |
| * Digital Fountain Codes, http://www.icsi.berkeley.edu/~luby/
| |
| * Coding-Aware Routing, http://arena.cse.sc.edu/papers/rocx.secon06.pdf
| |
| * MIT offers a course: [http://web.mit.edu/professional/short-programs/courses/network_coding.html Introduction to Network Coding]
| |
| * [http://www.networkworld.com/news/2007/121007-network-coding.html Network coding: Networking's next revolution?]
| |
| * Coding-aware protocol design for wireless networks: http://scholarcommons.sc.edu/etd/230/
| |
| | |
| {{DEFAULTSORT:Network Coding}}
| |
| [[Category:Coding theory]]
| |
| [[Category:Information theory]]
| |
| [[Category:Finite fields]]
| |
| [[Category:Network performance]]
| |
| [[Category:Wireless sensor network]]
| |