Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.

Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.

7.
A Better Way: Networking the Array <ul><li>Goal: Multihop data from the edge into Mexico City </li></ul><ul><li>Mexico deployment is different from typical sensor network applications </li></ul><ul><ul><li>Every bit of data is important </li></ul></ul><ul><ul><li>Radio connectivity is directional </li></ul></ul><ul><ul><ul><li>Due to distance, power, and regulations, we’re using directional antennas </li></ul></ul></ul><ul><ul><li>Routing is over a linear topology </li></ul></ul><ul><ul><li>Radio communication is not the greatest power consumer </li></ul></ul>

9.
Routing is Hard to Do Right <ul><li>Possible approach: Static Routes - topology is linear and nodes are immobile </li></ul><ul><li>Problem: Still as brittle as a single string -- can’t back track around breaks </li></ul><ul><li>Possible approach: Use AODV, DSR, Roofnet , etc. </li></ul><ul><li>Problem: Flapping links will make establishing end-to-end routes nearly impossible </li></ul><ul><li>What to do, what to do…? </li></ul>

17.
Delay Tolerant Networking <ul><li>Bundles are Basic Unit of Transport </li></ul><ul><ul><li>Written as files onto persistent store </li></ul></ul><ul><ul><li>Resilient across server / node restarts </li></ul></ul><ul><li>Custody Transfer of Bundles </li></ul><ul><ul><li>Represents a QOS agreement: custodian tries real hard to transfer custody and not delete until this has happened </li></ul></ul><ul><ul><li>Conceptually moves the “end” of an end to end transaction </li></ul></ul><ul><ul><li>Custody is asserted, rather than given. </li></ul></ul><ul><li>Overlay routing of Bundles among Custodians </li></ul><ul><ul><li>Custodians may be separated by intermediate nodes. </li></ul></ul>

18.
Delay Tolerant, Not Run-Over-by-a-Bus Tolerant <ul><li>Bad things can still happen with Custody Transfer </li></ul><ul><li>Brings up the question of trust. When should a node trust another more than it itself? </li></ul><ul><li>Risk vs. Resource trade-off </li></ul>VS

19.
Bundle Agents and Clients <ul><li>Client nodes register with Bundle Agents to send and receive Bundles on their behalf </li></ul><ul><ul><li>Email analogy: Pop or IMAP client connecting to a server </li></ul></ul><ul><ul><li>Based on the destination name, delivery is made to the corresponding Bundle Agent. </li></ul></ul><ul><ul><li>At this point it’s considered to be done. Again, similar to Email. </li></ul></ul><ul><li>Naming scheme allows for late binding and separation of names from nodes </li></ul><ul><ul><li>Determination of which node(s) receive the message may be deferred </li></ul></ul><ul><li>Connects different domains via gateways </li></ul><ul><ul><li>Late binding names allow different domains to communicate (through gateways). </li></ul></ul><ul><ul><li>Connects loosely coupled “Internets” </li></ul></ul><ul><ul><li>Official DTN specification uses Tuples: </li></ul></ul><ul><ul><ul><li>(Interdomain Label, Opaque Intradomain Label) </li></ul></ul></ul>

33.
Transmission Priority <ul><li>Transmission priority affects performance </li></ul><ul><ul><li>Want to avoid starvation </li></ul></ul><ul><li>Priority can be based on: </li></ul><ul><ul><li>Age </li></ul></ul><ul><ul><li>Transient vs. Local </li></ul></ul><ul><ul><li>Number of hops traversed </li></ul></ul><ul><ul><li>Number of times sent </li></ul></ul><ul><ul><li>Some other measure of how hard it was to get this far </li></ul></ul>

34.
What about Off the Shelf DTN? <ul><li>There is an official Bundle specification </li></ul><ul><li>There are 1 1/2 reference implementations of the Bundle specification </li></ul><ul><li>Why not use it? </li></ul><ul><li>Because… </li></ul><ul><ul><li>Only reason why Mars worked, and only way Mexico will work, is because scenario specific information was used. You MUST do this. </li></ul></ul><ul><ul><li>It’s impossible to do a good job in all scenarios </li></ul></ul><ul><ul><li>The more generic you try to be, the more it looks like flooding . </li></ul></ul><ul><ul><li>The more options and switches you support, the more brittle and complex it becomes </li></ul></ul><ul><ul><ul><li>See Sendmail configuration file </li></ul></ul></ul><ul><li>How do we remain flexible and customizable, yet stay SIMPLE? </li></ul>

36.
Click’s Elegance <ul><li>Click modules consume and produce the same data structure </li></ul><ul><ul><li>IP packets </li></ul></ul><ul><li>Same is nice and simple. Easy to compose modules if they input/output the same thing </li></ul><ul><li>IP is nice too (as opposed to something obscure or too generic) </li></ul><ul><ul><li>Strong foundation in specifications </li></ul></ul><ul><ul><li>Many compliant implementations as examples </li></ul></ul><ul><ul><li>People are already familiar with certain features and behaviors of IP routers </li></ul></ul>

37.
Click and DTN - High Level <ul><li>IP packets </li></ul><ul><li>IP specifications </li></ul><ul><li>Lots of existing IP routers </li></ul><ul><li>Lots of specific IP features/behavior to choose from </li></ul><ul><li>Bundles </li></ul><ul><li>Bundle specifications </li></ul><ul><ul><li>Experimental and evolving </li></ul></ul><ul><li>Very few Bundle servers </li></ul><ul><li>Lots of Bundle features and behavior to choose from </li></ul><ul><ul><li>In this area, Bundles have a richer set of potential behavior than IP </li></ul></ul>Click DTN

44.
Bolt: Compiler-like Analysis and Optimization for EmStar <ul><li>It Slices! It Dices! </li></ul><ul><li>It does static analysis and optimizations not otherwise possible across EmStar modules </li></ul><ul><li>No user changes or annotation required of EmStar code </li></ul><ul><ul><li>Though it could help </li></ul></ul><ul><li>Bolt statically infers type-safety violations between two functions in different processes (EmStar modules) </li></ul><ul><ul><li>Despite type-obscuring function calls and heavy use of function pointers </li></ul></ul><ul><li>Bolt uses subgraph isomorphism to identify and swap out combinations of modules with more efficient combinations that perform the same function </li></ul><ul><li>Analysis not completely sound nor complete, but hard given the circumstances </li></ul>

45.
Implementing DTN Using Bolt <ul><li>DTN looks like any other set of EmStar modules </li></ul><ul><li>What exactly are the EmStar modules that make up the DTN suite? </li></ul><ul><ul><li>Click has benefited from the existence of numerous IP router implementations </li></ul></ul><ul><ul><li>DTN must build up experience from real deployments (Mexico and others) </li></ul></ul><ul><ul><li>Identify and extract reusable DTN related components, for example: </li></ul></ul><ul><ul><ul><li>Managing a large number of concurrent file transfers between a pair of nodes </li></ul></ul></ul><ul><ul><ul><li>Despite large delay and disconnections </li></ul></ul></ul><ul><ul><ul><li>Recover across restarts </li></ul></ul></ul><ul><ul><ul><li>LTP (S. Burleigh) & File Mover (A. Parker) </li></ul></ul></ul><ul><ul><li>Goal is not necessarily to be able to build a complete DTN solution for your particular situation </li></ul></ul><ul><ul><li>Rather, to reuse the ones that make sense, and build from there </li></ul></ul>

48.
DTN’s Explicitness <ul><li>Would like lower layers to accommodate policies of upper layers automatically </li></ul><ul><li>Instead, current approach (in general) is to increasingly expose upper layers to the details of what is happening below. </li></ul>

49.
DTN Visibility & Accountability <ul><li>Messages (REPORTS) may be generated for a number of reasons </li></ul><ul><li>Custody assertion </li></ul><ul><li>Bundle refusal </li></ul><ul><li>Bundle fragmentation, etc. </li></ul><ul><li>These Reports may be sent to a node other than the original sender </li></ul><ul><li>Reports for which events and where to send them are explicitly indicated in the Bundle </li></ul>