Nullspace-Based Stopping Conditions for Network

0 downloads 0 Views 359KB Size Report
Aug 22, 2012 - or nullspace, as an improved stopping condition to elimi- nate redundant ... routers and related work on network coding in gossip net- works.
Nullspace-Based Stopping Conditions for Network-Coded Transmissions in DTNs ∗

1

Angela Hennessy1 , Alex Gladd2 , Brenton Walker1

The Laboratory for Telecommunications Sciences, 2 Raytheon BBN Technologies

{ahennessy, brenton}@ltsnet.net, [email protected]

ABSTRACT In a challenged network environment, where end-to-end connectivity may be a rare occurrence, delay-tolerant routing protocols must strike a balance between the increased robustness and reliability that comes with message replication and the resulting high bandwidth and storage overhead. Network coded routing, in which a node combines messages from different sources, has been shown to increase reliability in the presence of link failures with small additional overhead. A drawback of network coded routing is the lack of a natural stopping condition to control the dissemination of data. We describe an enhanced coding router that uses the mathematical structure of the orthogonal complement, or nullspace, as an improved stopping condition to eliminate redundant transmissions, and an additional technique to balance multiple coded data flows. These changes are incorporated into the DTN2 Reference Implementation and evaluated in two types of experiments. In a simple datamule scenario, our EBR router comes very close to perfect efficiency. In a more complicated scenario with segmented communities and occasional nodes moving between them, our solutions show a drastic improvement in delivery rates.

Categories and Subject Descriptors C.2.1 [Network Architecture and Design]: Store and forward networks

Keywords Bundle protocol, delay-tolerant networks, network coding

1.

INTRODUCTION

Network coding has become a popular topic in networking research, due to its resilience to changes in network topology, low overhead cost, and strong information theoretic results ∗ This work was funded in part by the US Dept. of Defense. The views expressed are those of the authors and may not necessarily reflect the views of the sponsoring agencies.

Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. CHANTS’12, August 22, 2012, Istanbul, Turkey. Copyright 2012 ACM 978-1-4503-1284-4/12/08 ...$15.00.

[1]. Nodes employing network coding combine and transmit linear combinations of incoming packets. The original packets can then be recovered via matrix inversion after a receiver collects a linearly independent set of coded packets. In a wireless setting, such as an ad-hoc or sensor network, where the traffic is inherently broadcast, network coding provides a more efficient means of data dissemination. Network coding is also a compelling tool for Delay-Tolerant Networks [6], and has been an active area of research for several years. In [20] the authors propose to use erasure coding in conjunction with existing DTN routing methods, and [11] proposes a route selection algorithm based on portfolio theory for transmitting erasure-coded data across a DTN. Network coded routing has been proposed for content distribution in peer-to-peer networks [21], where it led to decreased latency and increased bandwidth utilization. An analytical model for network coding in DTNs is developed in [13], and demonstrates benefits for resource-constrained nodes. Extensive simulation of several erasure coding schemes under a variety of mobility scenarios has been carried out in [2]. Although network coding provides a powerful method of distributing information, unconstrained network coding can waste network resources after the information has reached its destination. Therefore, developing efficient stopping conditions to control data flow and eliminate redundant transmissions is an important area of research. The seminal technique for controlling redundant transmissions in DTNs is epidemic routing [18] where nodes exchange summary vectors (either Bloom filters or simply lists of bundles) with neighbors, to ensure that they only send bundles that their neighbor lacks. However this approach is infeasible or inefficient in a network coding DTN, as discussed in section 2.1.4. Network coding requires efficient stopping conditions and flow balancing techniques that are aware of the mathematical structure of the underlying code. We propose and implement solutions to both these problems. Our novel contributions in this paper are as follows. • We describe and implement an efficient stopping condition based on the orthogonal complement, or nullspace structure. This idea was used as an analytical technique for network coding gossip protocols in [8], but to the best of our knowledge, we are the first to build a routing algorithm based on it. • We describe and implement techniques to balance multiple data flows between neighbors. • We make several modifications to make our router, the Encoding Bundle Router (EBR), compliant with an Internet-Draft for network coding in DTNs [10].

We briefly summarize prior work on network coding DTN routers and related work on network coding in gossip networks.

1.1

Network Coded DTN Routers

A simple network coding DTN router splits a bundle into fragments and sends random linear combinations of these fragments to other nodes. Intermediate nodes can forward the existing encoded fragments, or create new encoded fragments by forming linear combinations of existing ones (reencoding). When a node receives enough encoded fragments, it can reconstruct the original bundle by inverting the encoding matrix. We clarify the following terminology which will be used throughout the paper: Bundle: the fundamental data unit of the bundle protocol [17]. Bundles too large to be transferred in a single contact are fragmented; we encode across these fragments. Every bundle is assigned a universally unique identifier [12] (UUID). e Fragment fi : a bundle of length L is split into M = d L k fragments of k bits, such that fi ∈ GF(2)k . Each fragment is associated with its parent bundle’s UUID. Coefficient vector c: a vector c = hc1 , c2 , . . . , cM i, where ci ∈ GF(2) and i ∈ [1, M ], controls which fragments to combine (xor) to create an encoded fragment. Encoded fragment wc : an encoded bundle made up of some PM linear combination of fragments such that wc = i=1 ci fi for some coefficient vector c. Re-encoding vector d: on a node with r encoded fragments, a re-encoding vector d = hd1 ,P d2 , . . . , dr i can create a new linear combination wc0 = ri=1 di wi . Reencoding vectors are only used in network coded routing, and re-encoding is only allowed for encoded fragments associated with the same original bundle (i.e., with the same UUID). Encoding Set: The set of encoded fragments and coefficient vectors held by a particular node, corresponding to a particular UUID. Encoding Matrix EA,x : a matrix whose rows contain the coefficient vectors of a particular encoding set. The encoding matrix for UUID x at a particular node A is denoted EA,x . Our implementation is based on SimpleNC and CANC, the network coding routers described in [14] and [15]. SimpleNC implements completely unbiased and unconstrained random linear network coding to disseminate large bundles. Its send algorithm uniformly randomly selects a UUID from its inventory, and sends a linear combination of a randomly chosen subset of the encoded fragments associated with that UUID. SimpleNC is inefficient because it never stops sending to any neighbor, regardless of what it has already sent, or what data the neighbor may already have, and because it selects from among its UUIDs with equal probability. For example a UUID with rank 2 has the same probability of being chosen as a UUID with rank 900. The CANC router attempted to remedy some of these issues by adding several external configuration hooks to the

SimpleNC router, as well as an external Context Agent which could dynamically control the rate at which nodes exchanged encoded fragments and the bias it used in selecting which UUID to send from. The Context Agent developed for CANC supported only basic experiments with a single UUID. It set the transmission rates between a pair of nodes based on the ranks of their encoding matrices for that UUID. Generally, if node A had a rank of 200/1000 and node B had a rank of 400/1000, then node A would send one bundle for every two that it received from node B. The CANC Context Agent would also completely stop transmission to a node which had a full rank encoding matrix for a UUID. One shortcoming of the CANC router is that it makes rate determinations based on rank alone, without regard to the actual spaces spanned by nodes’ encoding matrices. For example, two nodes could both have encoding matrices with rank 200, but the spaces they span could be completely orthogonal, or identical. In the latter case the correct behavior would be for the nodes to cease transmissions, since neither has any information that the other lacks. Besides the purely functional issues, both SimpleNC and CANC were based on an early preliminary specification for how to map a bundle into an encoding buffer, and how to convey coding meta-data along with the encoded fragments. Some of the problems with these prior implementations were the use of meta-data blocks to convey encoding information, and the inability to completely reproduce the original bundle, with all primary and extension blocks intact, at the receiving end after decoding. These issues were addressed in a later revision of the specification [10], and we have complied with the latest draft specification in EBR. While this does not affect performance, it makes the implementation in DTN2 simpler, and avoids some conflicts with the Bundle Protocol specification in the previous implementations.

1.2

Gossip Protocols and Nullspaces

A gossip protocol attempts to spread messages throughout a network using a randomized flooding protocol, in which each node forwards messages to a random set of neighbors until all nodes have received the message. Just as in DTNs, network coding has been proposed to improve information dissemination in such networks, for example [3]. Our flow control algorithm is based on an analytical technique which has been used to prove results about network coding in gossip protocols. Generally, a node is said to be innovative with respect to a neighbor ([3] uses “helpful”) if it can increase the rank of the encoding matrix of that neighbor. Therefore, it is natural to analyze network coding algorithms based on the spaces spanned by their encoding matrices. We let YA,x denote the subspace of GF(2)M spanned by the rows of the encoding matrix EA,x (for a node A and UUID x). Instead of looking at the space spanned by the coefficient vectors, the authors of [8] examine the orthogonal complement, or nullspace of the encoding matrix, denoted ⊥ ⊥ by YA,x . By definition, YA,x is the subspace of GF(2)M consisting of all vectors that are orthogonal to EA,x . It should be noted that over GF(2), the nullspace may intersect nontrivially with YA,x . For example, if YA,x is spanned by the ⊥ vector h1, 1, 0, 0i, then this vector will also be in YA,x , since the dot product with itself is zero. A standard result from linear algebra is that the dimension of YA,x plus the dimen⊥ sion of YA,x is always equal to M .

2.

EBR ROUTER

The Encoding Bundle Router is implemented as an internal router module for the DTN2 Reference Implementation [4]. It combines elements from two branches of the early SimpleNC router: The CANC router [15], and proto-EBR, an early attempt to make SimpleNC conform to the proposed spec for network coding in DTNs [10]. EBR conforms with the draft specification, and efficiently addresses the performance issues presented by those earlier routers.

2.1

Stopping Condition Utilizing Nullpaces

We use the nullspace of the encoding matrix to derive an improved stopping condition for network coded routing. For simplicity of notation we fix a single UUID, x. Recall that a node A is innovative with respect to a neighbor B if node A can increase the rank of B’s encoding matrix EB,x . The goal of our stopping condition is to let node A transmit encoded fragments to node B if and only if A is innovative with respect to B. This is only possible if ⊥ ⊥ YA,x 6⊆ YB,x , or equivalently, YB,x 6⊆ YA,x . Therefore, it seems natural to have B send to A a full ⊥ so that A can test for innovabasis for either YB,x or YB,x tiveness. However repeatedly exchanging this much information would be cumbersome. An encoding set with M = 1000 original fragments would require on the order of M 2 bits, approximately 100kB for each exchange. Instead EBR nodes ⊥ exchange a small random linear projection of YB,x . We will show that with high probability this is sufficient for determining innovativeness of a neighbor. Of course this random projection discards information, so any decision about innovativeness made based on it will have some probability of error. We analyze this error in section 2.1.3. The payload sent from node B to node A is called a nullspace bundle, denoted NSBB,x . It contains the UUID and rank of the encoding matrix, EB,x , and zero or more random nullspace vectors. In practice an NSB contains information for several encoding sets. The size of the NSB is linear in the number of original fragments, M , and once an encoding set reaches full rank its nullspace is trivial, so the NSB contains no vectors.

2.1.1

Receiving Nullspace Bundles

Node A, upon receiving a nullspace bundle NSBB,x from node B, calls a function to determine if it is innovative with respect to node B for UUID x. Let v1 , . . . , vt denote the t random nullspace vectors received in NSBB,x . The following procedure will return true if A can conclude that it is innovative with respect to B for UUID x based on the nullspace bundle NSBB,x . function is innovative(NSBB,x ) if NSBB,x has no entry for x then return True end if if NSBB,x rank < rank(EA,x ) then return True end if for all vi ∈ NSBB,x do if EA,x · vi 6= 0 then return True end if end for return False end function

Figure 1: Format of a nullspace bundle

2.1.2

Sending Nullspace Bundles

EBR sends nullspace bundles to all neighbors at configurable intervals. It maintains a table of which neighbors are due to receive an updated nullspace bundle, and when the link to that neighbor becomes available it sends a nullspace bundle if it is due. The nullspace due table can also be set based on other router events. By default it is set for all neighbors every five seconds. When a node wishes to send a nullspace bundle to a neighbor, the node first ensures that all known encoding sets have an up-to-date nullspace basis. EBR does not update the nullspace for an encoding set every time it changes. Instead, it marks the encoding set’s nullspace as “dirty”, and only recomputes is when needed. The format of the payload of a nullspace bundle used in the EBR router is shown in figure 1. If the node has full rank for a given encoding set, its nullspace is effectively empty, therefore the vector count and vector size are both zero. We use a distinct URI scheme, “nil://”, in the destination EID to distinguish nullspace bundles. The ssp of the EID does not convey any information at present, so it consists of a fixed arbitrary string.

2.1.3

Probability of Error in our Stopping Condition

Recall that a node A is innovative with respect to a neighbor B if it can send an encoded fragment which increases the rank of EB,x . Node A should generate and transmit encoded fragments to B if and only if YA,x 6⊆ YB,x . This ⊥ ⊥ is equivalent to YB,x 6⊆ YA,x ⊥ Let v be a vector chosen randomly from YB,x . The probability of error in our stopping condition is the probability ⊥ ⊥ ⊥ that both YB,x 6⊆ YA,x and v ∈ YA,x . That is, the probability that node A concludes that it has nothing innovative to send to node B, when in fact it does. This depends on the ⊥ ⊥ dimension of the intersection of YA,x and YB,x . ⊥ ⊥ Let n = dim(YA,x ∩ YB,x ), and let nA and nB be the ⊥ ⊥ ⊥ ⊥ dimensions of YA,x and YB,x , respectively. If YB,x ⊆ YA,x , then n = nB , and our stopping condition correctly halts ⊥ ⊥ transmissions from A to B. If YB,x 6⊆ YA,x , then ⊥ ⊥ P rob(v ∈ YA,x ∩ YB,x )

=

⊥ ⊥ ∩YB,x |YA,x | ⊥ |YB,x |

=

2n −1 2nB −1

If the nullspace bundle delivered from node B to node

A contains v1 , . . . , vt , t vectors chosen uniformly at random ⊥ from YB,x , then since the vectors are chosen independently, the joint probability of error is just the product.  0, if n = nB PError =  2n −1 t  2nB −1 , if n 6= nB The worst case for this error function arises when nodes A and B have almost the same nullspace, that is, they are almost synchronized. Even in that case, PError = ( 12 )3 , assuming the NSB contains three vectors. In any other case, the error probability is much smaller.

2.1.4

Comparison to Epidemic

Epidemic routing provides the archetype for comparing bundle inventories between neighbors in a DTN. Nodes periodically exchange either a Bloom filter or simply a list of bundles in their store, so a neighbor does not send redundant data. This approach is insufficient in a network coding DTN, however, because redundancy cannot be measured by testing bundle equality, and because the possible number of encoded fragments is so large. The fundamental problem is that for an encoding set with M original fragments, there are 2M − 1 possible encoded fragments. Bundle ID lists and Bloom filter checking do not allow for testing for innovativeness amongst subsets of this collection. In a purely erasure coding DTN, in which only the source node is allowed to generate a relatively small amount of redundancy, conventional bundle equality testing would be sufficient. However [7, 19] have found that allowing other nodes in the network to form new linear combinations from old ones (re-encoding) can greatly improve data dissemination performance in networks with high churn or bottlenecks. Therefore having an efficient method of exchanging inventory information that respects the mathematical structure of the underlying network code is very desirable.

2.2

Flow Balancing Between Encoding Sets

When a node A establishes contact with a neighbor B, it must pick an encoding set from which to generate encoded fragments. We developed and implemented a technique to weight multiple encoding sets, with the goal of favoring encoding sets which appear locally scarcer. EBR uses a table, is innovative table(B, x), to keep track of the neighbors, B, and UUIDs, x, for which it believes it is innovative. It also tracks the ranks, rB,x of each neighbor’s encoding matrix EB,x . When choosing an encoding set from which to send its next encoded fragment to B, node A creates a list of the innovative UUIDs x1 , . . . , xs whose maximum ranks are M1 , . . . , Ms , and computes a weight wxi ∈ [−1, 1] for each. wxi =

rA,xi − rB,xi Mi

The UUID with the largest weight is then chosen for transmission. This has the effect that all UUIDs will reach full rank on the neighbor around the same time. It also allows for caching optimizations, since only one encoding set is being used at a time. This is important in DTN stacks such as IBR-DTN [16], in which only small collections of bundles are loaded from disk at any one time. Figure 2 shows the normalized ranks from an experiment in which node A transmits two encoding sets to node B, con-

Figure 2: Flow balancing between two encoding sets sisting of M = 200 and 500 original fragments, respectively. We see that A alternates between sending from the two encoding sets, but that their ranks increase at roughly the same rate. Whenever one encoding set’s normalized rank gets ahead of the other’s, the next nullspace bundle (sent at 5 second intervals) updates the sender’s knowledge and causes it to switch. This algorithm could be adjusted to incorporate different heuristics, such as favoring encoding sets which are almost full rank on a neighbor, or some notion of bundle priority.

3.

EXPERIMENTS

We ran two types of experiments to compare EBR to the SimpleNC and CANC routers. The first is modelled after the simple data mule scenario previously used to evaluate CANC [15], but is carried out on an Emulab [5] with bandwidthcontrolled ethernet links. The second is a segmented “island hopping” model previously used to evaluate SimpleNC, which is carried out on the Virtual MeshTest mobile wireless testbed (VMT) [9].

3.1

Data Mule Experiments

Our first group of experiments were designed to compare EBR against SimpleNC and CANC routers in a simple three node, two-hop data mule scenario. Our experiments were motivated by the data mule scenario in [15], but in order to run a larger number of controlled experiments we ran them on an Emulab testbed [5]. Emulab is a testbed control system, which is used mainly for wired network experiments. It allows us to run controlled experiments with real software implementations and operating systems, and subject them to arbitrary network conditions, including forming and breaking of links and controlled bandwidth and delay. Our data mule scenario features three nodes, a source, a sink, and an intermediate mule node. Using Emulab RPC events we alternately bring up and down links between the source and mule, and sink and mule. Each link is up for 60 seconds while the other is down. Both links are restricted to 5Mbps. In this experiment the source sends a 100,000,000B bundle which is split into 1000 fragments. Figure 3 shows mean latency and overhead results for the three-node experiment, which was run seven times for each router. Overhead refers to the number of encoded fragments transmitted across all nodes. Perfect efficiency in this case

Figure 4: Island-hopping scenario

Figure 3: Three Node Data Mule Experiment would be 2000 encoded fragment transmissions, and EBR comes very close to achieving that. Since SimpleNC does not have any rate controls, all the nodes are transmitting as fast as possible whenever they are in contact. This results in a huge number of unnecessary transmissions, which leads to higher latency. CANC partially addresses this issue by incorporating rate controls based on nodes’ respective ranks. Due to our improved stopping condition, the EBR router shows improvements over CANC and SimpleNC both in terms of latency and overhead. The overhead figure for EBR does not include the number of nullspace bundles sent between nodes; the average total number of nullspace bundles in our experiments was 227. Each nullspace bundle contained three nullspace vectors, with a maximum total payload size of 403 Bytes. The nullspace bundles were sent every 5 seconds. Therefore, the total size of all the nullspace bundles is less than one single encoding. Since the source sends only one large bundle, this experiment has only one UUID, and therefore does not gain any benefit from the balancing of data flows.

3.2

Island-Hopping Experiments

The island hopping scenario features 47 stationary nodes in three geographically separated groups of 10-20 nodes, and three mobile “traveller nodes”. Each traveller node does a random walk around its home island for 60 minutes and visits a neighboring island for 15 minutes, spending two minutes in transit in each direction. This cycle, depicted in figure 4, repeats for about 10 hours. There are four source nodes in island I, and each generates a bundle with a 5,000,000B payload and encodes it with a fragment size of 100,000B. This gives 500 source fragments in SimpleNC, and 501 source fragments in EBR (since the entire original bundle is encapsulated in the encoding buffer, its size is slightly more than 5,000,000B). The goal of this scenario is to deliver a full-rank collection of encoded fragments to island III, so that the nodes, collectively, could recover the original bundle. These experiments were carried out on the Virtual MeshTest wireless testbed [9]. VMT allows us to subject real wireless nodes running real DTN stacks to emulated mobile environments. The wireless testbed is effectively a many-tomany analog channel emulator based on an array of programmable attenuators. Given a desired physical arrange-

ment of nodes, VMT computes what the path loss between nodes should be and programs the attenuators to achieve those path losses. By updating the attenuations every second, VMT can emulate the dynamic conditions of a mobile wireless environment for real wireless nodes. VMT also uses virtual machines and live migration between physical nodes to support experiments with fairly large numbers of nodes. The current VMT system has two 8-port RF switches and two offline virtualization servers. The wireless physical nodes have Broadcom BCM4321 802.11 WiFi cards, which we run in 802.11b ad-hoc mode with an effective maximum throughput of about 5Mb/s.

3.2.1

Results and Analysis

It was seen in [19] that because of the segmented nature of the network, with two bottlenecks between islands, that a network coding router, such as SimpleNC performs drastically better in the island-hopping scenario than a randompropagating erasure coding router (with no re-encoding of bundles). Here we see that the improvements in EBR provide another drastic improvement in performance, doubling the bundle success rate after 10 hours, and delivering all bundles with much lower and more consistent latency. We use the group rank metric to track the rank of the collection of all coefficient vectors in each island. That is, the rank of the collection of all coefficient vectors for a particular UUID amongst all stationary nodes on an island. Since the source nodes all live on island I, it starts the experiment with full rank. The group rank of island II increases quickly as the traveller nodes deliver encoded fragments from island I, and the group rank of island III follows more slowly. Figure 5 plots the group rank of island III vs time for each of the four source UUIDs in the experiment, which was run twice. We see that EBR consistently delivers all UUIDs to island III in under six hours, while SimpleNC takes seven or more hours, and occasionally performs very poorly for one of the four bundles. The highly variable performance of SimpleNC was also noted in [15]. Both of the major functional improvements in EBR are on display here. First, the practice of exchanging ranks and nullspace bundles prevents nodes from wasting contact time transmitting encoded fragments when they have nothing innovative for their neighbor. This allows them to send only from UUIDs for which they do have innovative content, or to reserve the entire bandwidth for receiving bundles from a more well-stocked node. Second, the weighting of UUIDs based on relative ranks leads nodes to prioritize transmission from UUIDs which appear locally more scarce. Ideally the nodes would bias their selection of UUIDs

5.

Figure 5: Data delivery progress in the islandhopping scenario based on the codimension of the intersection of their rowspaces inside their own rowspace, but computing this would be very intensive, and would require that nodes exchange encoding matrices. Since the nullspace test already makes transmission of completely redundant encoded fragments very improbable, comparing relative ranks is a very effective prioritization method.

4.

CONCLUSIONS AND FUTURE WORK

A major obstacle to designing more advanced DTN routing protocols which incorporate network coding is the difficulty of efficiently exchanging information about, and testing for redundancy. We have designed and implemented an efficient and effective stopping condition for network coding DTN nodes based on sharing a random linear projection of the nullspace of a node’s encoding matrix. Our experiments show that EBR outperforms previous network coding DTN routers in a simple two-hop data mule scenario, and in a much larger highly segmented island-hopping scenario. We believe the practice of transmitting random projections of encoding matrices has many broader applications in DTN router development. For instance the problem of distributed reliability in a network coded DTN is difficult for many of the same reasons as the test for innovativeness, and could be addressed by letting groups of nodes share collective nullspace projections, reducing them as the group acquires more information, until they can conclude that they collectively have full rank. Similar techniques could be used to control distributed storage algorithms. Our implementation, EBR, conforms with the draft specification and efficiently addresses the performance issues presented by earlier routers. It is hoped that it provides the basis and framework for more comprehensive use of network coding in DTN routers in the future.

Acknowledgements Thanks are due to Dr. Sanjay Shakkottai for suggesting the use of normal vectors to convey information about the encoding set and directing us to the work of [8].

REFERENCES

[1] R. Ahlswede, N. Cai, S. Li, and R. Yeung. Network information flow. IEEE Transactions on Information Theory, 46(4):1204–1216, 2000. [2] M. Chuah, P. Yang, and Y. Xi. How mobility models affect the design of network coding schemes for disruption tolerant networks. In Proc. of NetCod, 2009. [3] S. Deb and M. M´edard. Algebraic gossip: a network coding approach to optimal multiple rumor mongering. In Proc. 42nd Allerton Conference on Communication, Control, and Computing, 2004. [4] DTNRG. DTN bundle protocol ref. implm. http://www.dtnrg.org/wiki/Code. [5] http://www.emulab.net. [6] K. R. Fall. A delay-tolerant network architecture for challenged internets. In Proc. of SIGCOMM’03, 2003. [7] C. Gkantsidis and P. Rodriguez. Network coding for large scale content distribution. In Proc. of INFOCOM’05, 2005. [8] B. Haeupler. Analyzing network coding gossip made easy. In Proc. of the 43rd Symp. on Theory of Computing (STOC), 2011. [9] D. Hahn, G. Lee, B. Walker, M. Beecher, and P. Mundur. Using virtualization and live migration in a scalable mobile wireless testbed. SIGMETRICS Perform. Eval. Rev., 38:21–25, January 2011. [10] J. Zinky and A. Caro and G. Stein. Bundle protocol erasure coding extension. Internet Draft. [11] S. Jain, M. Demmer, R. Patra, and K. Fall. Using redundancy to cope with failures in a delay tolerant network. In Proc. ACM Sigcomm, 2005. [12] P. Leach, M. Mealling, and R. Salz. A Universally Unique IDentifier (UUID) URN Namespace. RFC 4122, 2005. [13] Y. Lin, B. Li, and B. Liang. Stochastic analysis of network coding in epidemic routing. In IEEE JSAC, 26(5): 794-808, 2008. [14] A. Petz, C.-L. Fok, C. Julien, B. Walker, and C. Ardi. Network coded routing in delay tolerant networks: An experience report. In Proc. of ExtremeCom, 2011. [15] A. Petz, A. Hennessy, B. Walker, C.-L. Fok, and C. Julien. An architecture for context-aware adaptation of routing in delay-tolerant networks. In Proc. of ExtremeCom, 2011. [16] S. Schildt, J. Morgenroth, W.-B. P¨ ottner, and L. Wolf. Ibr-dtn: A lightweight, modular and highly portable bundle protocol implementation. Electronic Communications of the EASST, 37:1–11, Jan 2011. [17] K. Scott and S. Burleigh. Bundle Protocol Specification. RFC 5050 (Experimental), Nov. 2007. [18] A. Vahdat and D. Becker. Epidemic routing for partially connected ad hoc networks, 2000. [19] B. Walker, C. Ardi, A. Petz, J. Ryu, and C. Julien. Experiments on the spatial distribution of network code diversity in segmented dtns. In Proc. of CHANTS’11, 2011. [20] Y. Wang, S. Jain, M. Martonosi, and K. Fall. Erasure-coding based routing for opportunistic networks. In Proc. of WDTN, pages 229–236, 2005. [21] M. Yang and Y. Yang. Peer-to-peer file sharing based on network coding. In Proc. of IEEE ICDCS, 2008.