2Background – Routing in Time-Varying Networks This network is partitioned into disconnected componentsRouting from A to B is impossibleBut… routing from A toward B is possible when components collide… even if A and B are never connectedSo… make sure the components collide once in a whileThis requires a store-and-forward delivery mechanism similar to mail and .
3Where Is This Important? MarsMarsSatelliteEarthSatelliteMarsBase StationEarthBase StationMars Rover
4Where Is This Important? Developing RegionsChallenges:Infrastructure is unreliable (eg. electricity, connectivity)Communication and access to Internet is poor in rural areasCosts must be very low to be affordableIdea:Use buses as “data mules” to ferry data between disconnected networksData hops on the bus, hops off again closer to destinationWe trade communication response time for low cost, by using mechanical backhaul (bus) for remote linksKey Applicationswith attachmentsOffline web browsing
5DTN – Remaining Problems DTNRG goes a long way toward a solution, but from our perspective there are a few remaining problems:Node MobilityNodes drop out and re-appear in a different place in the network!How to notify other nodes of the new location?How to re-direct any bundles already in transit to the old location?RoutingDTN reference implementation includes three routing algorithms:Static: uses static (manually configured) routing tablesFloodLink StateWe need a dynamic routing protocol that supports a high degree of node mobility.Our Tetherless Computing Architecture (TCA) addresses these problems
6TCA Overview Node Types All nodes run the TCA Protocol There are three types of nodes:Mobile: a leaf node (an end-user device typically, such as a phone, laptop, or PC)Router: forwards data between nodesGateway: a special type of Router with a permanent connection to InternetPhone(Mobile)Village Kiosk(Router)Bus(Router)Bus Terminal(Gateway)
7TCA OverviewRegionsA collections of nodes sharing a single gateway forms a RegionA Region is a disconnected network in generalRegionPhone(Mobile)Village Kiosk(Router)Bus(Router)Bus Terminal(Gateway)
8TCA Overview A Higher-Level View : Many Regions Unlike Regions, the Internet is usually available and connectedGateways are the points at which the Regions connect to the InternetA Region is associated with the gateway that serves itTCA uses the Internet to host a Registry containing the current location (Region) of each nodeRegion AInternetGateway ARegistryRegion CGateway CGateway BRegion B
9TCA Protocol Stack The TCA Protocols deal with: Registering a mobile node in the networkRouting bundles addressed to a mobile nodeRoute discoveryTCA Protocol Implementation:Mostly implemented at the Application LayerUses the services of the DTN Bundle LayerTCAApplication LayerBundle LayerConvergence LayerDTNTCPUDP…Before discussing the protocols, some background on naming and addressing….
10TCA Naming and Addressing Naming in DTNThe naming scheme in DTN is borrowed from existing Internet standardsNames are URIs, of the form <scheme name>:<scheme-specific part, or ssp>The <scheme name> specifies the format and meaning of the <ssp>Each “endpoint” in DTN (an application-level source or sink of bundles) has a URI “Endpoint ID”Example: dtn://blackice.uwaterloo.caNaming in TCATCA defines a custom scheme named “tca”TCA Endpoint ID’s are of the form: tca://<host>/<app> where<host> is a GUID (globally unique identifier) of the node (analogous to <ip address> in TCP)<app> is the identifier of an application on that node (analogous to <port> in TCP)Example: tca://blackice/appThese names are just identifiers, not sufficient information to actually contact a node.
11TCA Naming and Addressing Contd. AddressesIn addition to its name, each node has an address at which it may be contactedThis address is tied to a particular convergence layer (eg. tcp)This address is again expressed as a URI:Example: tcp:// :5000A route (or a single hop thereof) can be expressed as a mapping from name to addressnameaddressFor example:tca://blackice/apptcp:// :5000means: to send a bundle to the endpoint named tca://blackice/app, send it using thetcp concvergence layer, to the TCP/IP address port 5000.Unlike in TCP/IP, in TCA it is not necessary (or even useful) for addresses to be known globally. Only a node’s nearest neighbors – its direct contacts – need to know its address.
12TCA Late-Bound Bundles Example: hail sends bundle to blackicebundle is forwarded up the default route to hail’s gatewayhail’s gateway looks up blackice’s gateway in the Registry and send bundleblackice’s gateway forwards the bundle to blackice along known routetca://blackice > :5Region AInternettca://windstormtca://gwaaddr: :5tca://blackiceRegistryRegion Ctca://gwcTca://gwbRegion Btca://hurricanetca://hail
13TCA Late-Bound Bundles Contd. Details:Each node knows the address of the next hop router toward its gateway. This is its default route used for all bundles addressed to unknown endpoints.This enables routing from hail in Region C toward gateway C.Each node knows the address of the previous hop router toward any router that has previously registered with it. (registration to be discussed later).This enables routing from gateway A to blackice in region A, assuming blackice has previously registered in region A.Implementation Notes:The Registry is implemented as a Distributed Hash Table (using OpenDHT).The Registry contains the SHA1 hash of an endpoint id, not the endpoint id itself.
14TCA Registration Example: blackice registers blackice sends a special registration bundle up the default routethe “reverse path” is constructed along the waygateway updates the Registry with blackice’s new locationif a previous registration for blackice existed, gateway initiates a change-of-addressRegion Atca://blackice > :5Internettca://windstormtca://gwaaddr: :5tca://blackiceRegistryRegion Ctca://gwctca://gwbRegion Btca://hurricanetca://hail
15TCA Registration Contd. Details:The register bundle is forwarded up the default route.Each node along the way modifies the register bundle, adding its address as last_hopEach node along the way adds the route back to the mobile to its routing table, using the last_hop addressGateway C checks the Registry to see if blackice has previously registered in a different region, deleting the previous entry if any.In either case, Gateway C adds the new Registry entry for blackice, specifying its own address as blackice’s gateway.If blackice had previously registered in another region, Region B, Gateway C sends a “change of address” bundle (COA) to Gateway B.Gateway B forwards the COA toward blackice’s previous location using the reverse path.At each hop along the reverse path, the node destroys its route table entry for blackice after forwarding the COA.Implementation Notes:No race condition! If a bundle is in-flight to a route undergoing destruction, it becomes a regular unbound bundle at some point. Thereafter, the right thing happens.Registration bundles are sent to the special endpoint id tca://registry
16TCA Route Discovery Motive Most infrastructure nodes (“permanent” Routers and Gateways) will have their route tables configured manually on setup.Mobiles (and perhaps some Routers) need to choose routes dynamically, based on their current locationDetailsSimilar to DHCPNode A detects a new link. eg. potential neighbour node B at tcp:// :5000Node A probes the DTN port on this link by sending an ASK bundleIf B is a TCA router, it responds with an ADV bundleADV contains B’s eid, and the eid of its reachable gatewayIn future, ADV could contain additional info (link schedule, capacity, etc.)Node A can now decide whether to add a permanent route to B… and if so, whether to make this route its default route.
17TCA Protocol Implementation TCA Control logic is implemented outside DTN for greater separation of concernsTCA Controller runs as an ordinary DTN client applicationAll Control messages are sent as bundles through the ordinary DTN APIInter-Node Control bundles are sent to the eid of the destination ControllerInter-Layer Control bundles are sent to a special eid tca://localhost/bundlelayerTCA ControllerTCA ControllerTCA ControllerTCAregister(eid)Bundle LayerBundle LayerBundle LayerConvergence LayerConvergence LayerConvergence LayerDTNTCP…TCP…TCP…register(eid)register(eid)mobileroutergateway
18TCA Control Bundles Cross-Calls (Inter-Node) Up-Calls (Inter-Layer) src = tca://<host_eid>/admindest = tca://<host_eid>/adminUp-Calls (Inter-Layer)src = tca://localhost/bundlelayerdest = tca://<host_eid>/adminregister(mobile_eid, link_spec)coa(mobile_eid, gateway_link_spec)ask(link_spec)adv(link_spec, adv_str)ask_sentadv_sentcoa_sentcontact_downcontact_uplink_availablelink_unavailablereg_received(mobile_eid, link_spec)routes(route_list)unb_received(eid)Down-Calls (Inter-Layer)src = tca://<host_eid>/admindest = tca://localhost/bundlelayeradd_route(pattern, link_spec)del_routes(pattern)get_routes(pattern)Complete Control API documentation:
21TCA Design Controversy Layering TCA Control over Bundle LayerQ: Is it the “right” separation of concerns?Q: What functionality belongs in each layer?Q: One process or two?Q: Even if “right”, is it worth the trouble?A: No clear answer. Similar to question of which parts of a protocol stack belong in kernel, and which in user-level code.Inter-Layer Communication as BundlesQ: Is this a good idea?A: Similar to the question of control-over-data channel versus separate control channel. We have opted for control-over-data channel.
22Future Work We have a concrete application driving all future work: Government services offered through kiosks in rural IndiaPlan to use a bus and kiosk network, running TCA protocolsTopics of Current ResearchMutual Authentication (Bus-Kiosk, Kiosk-User)More advanced routing protocols using multiple routes:Multiple buses with different schedules, destinations, gatewaysFlow control – utilizing finite bus capacity:Maximize fairnessMaximize throughputMixed-media communicationsCheap, high-capacity bus (but slow!)Expensive, low-capacity cell network (but always available!)OCMP uses policy definitions to send data using most suitable medium
23Conclusion 1. TCA solves two of the problems with DTN: Node mobility Routing in a changing network2. The Control API provides an extension point for future work3. We hope our approach has applications of social importance in developing regions