bonaha framework - ieee ccnc 2009

36
BonAHA: Service Discovery Framework for Mobile Ad-Hoc Applications Suman Srinivasan, Arezu Moghadam, Henning Schulzrinne Internet Real Time Lab, Columbia University, New York, USA IEEE CCNC 2009: M1-2 Personal Ad Hoc and Sensor Networks

Upload: suman-srinivasan

Post on 23-Jun-2015

463 views

Category:

Technology


0 download

DESCRIPTION

Overview of the BonAHA framework for applications running in opportunistic wireless ad-hoc networks. Uses Apple's Bonjour (ZeroConf) technology. This was the presentation made at the IEEE CCNC 2009 conference.

TRANSCRIPT

Page 1: BonAHA framework - IEEE CCNC 2009

BonAHA: Service Discovery Framework for Mobile Ad-Hoc Applications

Suman Srinivasan, Arezu Moghadam, Henning Schulzrinne

Internet Real Time Lab,

Columbia University, New York, USA

IEEE CCNC 2009: M1-2 Personal Ad Hoc and Sensor Networks

Page 2: BonAHA framework - IEEE CCNC 2009

Topics

• Problem/motivation

• Approach– Service discovery and Bonjour– BonAHA framework

• Demos

• Applications developed

• Related Work

Page 3: BonAHA framework - IEEE CCNC 2009

Motivation

• Mobile nodes; highly mobile networks– No infrastructure

• OLPC; mesh networks• New class of applications

– “Ad-hoc/Mobile-P2P applications”– Opportunistic networks

• Applications need to– Be aware of network transitions– State/metadata of nodes in the network

Page 4: BonAHA framework - IEEE CCNC 2009

Examples of applications

• Group chat

• File transfer

• File synchronization

• Local multiplayer games

Page 5: BonAHA framework - IEEE CCNC 2009

Solution 1: Raw multicast

• Initial solution– “Dumb” multicasting to announce and

get information from peers

Page 6: BonAHA framework - IEEE CCNC 2009

Solution 2: Service Discovery

• Looked at writing our own framework for solving this problem

• But, good news:– Service discovery does exactly this– Actually, something very similar

• ZeroConf: Most widely implemented– Apple’s Bonjour, Avahi, …

• Apple’s Bonjour– Still requires a learning curve– Developer has to rewrite code

Page 7: BonAHA framework - IEEE CCNC 2009

Problems

• Bonjour API – Three event listeners, five function calls– Have to be completely implemented if an ad-

hoc application wants to announce and listen

• Two other major problems– No internal state maintained by Bonjour for

services, related IP address and TXT records– Resolution can be done only on arrival or exit of

services/nodes

Page 8: BonAHA framework - IEEE CCNC 2009

BonAHA

• Aim to create a framework that solves these problems

• Much simpler, and more intuitive, API for ad-hoc applications

• Applications need not maintain state or do “resolution”– BonAHA will maintain state– No need for resolution; all nodes and

metadata are objects

Page 9: BonAHA framework - IEEE CCNC 2009

BonAHA• For registration

service = new BService("7ds_location2", "tcp");

service.set("Latitude", lat);service.set("Longitude", lon);service.register();service.setListener(this);

• For network transitions (nodes entering/leaving)– nodeUpdated()– nodeExited()

• No need for maintaining state

Page 10: BonAHA framework - IEEE CCNC 2009

register() function

Page 11: BonAHA framework - IEEE CCNC 2009

BonAHA framework

Node 2

Node 1

key21 = value21key22 = value22key23 = value23key24 = value24

key11 = value11key12 = value12key13 = value13key14 = value14

[2] node1.get(key13)

[1] node1.register()

[3] data = node1.fileGet( value13);

Page 12: BonAHA framework - IEEE CCNC 2009

TXTRecord

DNSRegistration

RegisterListener

serviceRegistered()

DNSSDService

BrowseListener

serviceFound() serviceLost() DNSSDService

ResolveListener

serviceResolved()

DNSSD.resolve()

DNSSD.register()

TXTRecord Host IP

DNSSD.browse()

set()

Bonjour State Diagram

Page 13: BonAHA framework - IEEE CCNC 2009

BService

BListener

serviceUpdated()

set() register() setListener()

serviceExited()

BNode

get() getHostName() getHostAddress()

BonAHAState Diagram

Page 14: BonAHA framework - IEEE CCNC 2009

Example: LocationFinder

• Very simple, impractical application– Only for providing a quick code sample

• Scenario– Two nodes meet each other– Lack global knowledge of location– Each can find out other’s last location

information and update their own location

Page 15: BonAHA framework - IEEE CCNC 2009

Code: LocationFinder

Page 16: BonAHA framework - IEEE CCNC 2009

Compare: Bonjour Code

Page 17: BonAHA framework - IEEE CCNC 2009

TicTacToe

• BonAHA sample application

• Shows use in– Multi-player games– Mutual awareness

Page 18: BonAHA framework - IEEE CCNC 2009

BonAHA Applications

BBS application

• Runs on iPod/iPhone

• Allows users to upload “posts”

• Other users can pick up “posts” and share their own

• Information on events, etc that they are interested in sharing

Page 19: BonAHA framework - IEEE CCNC 2009

BonAHA Applications

• BBS Application

Page 20: BonAHA framework - IEEE CCNC 2009

BonAHA Applications

Group chat

• Allows users to discover peers in local network and chat

• Rooms can be set up for private chats

Page 21: BonAHA framework - IEEE CCNC 2009

BonAHA Applications

File Sharing

• Users can share files with each other by dragging and dropping files onto peers’ computers

• Handles peers entering and leaving network

Page 22: BonAHA framework - IEEE CCNC 2009

Related Work

• Proem (2001)– Needs to run on “peerlet engine”– No public documentation of API

• JXTA– Excellent for P2P– Heavyweight for our goals

• Peer2Me– File transfer on Bluetooth

Page 23: BonAHA framework - IEEE CCNC 2009

Related Work

• LightPeers– Sep 2007 PhD dissertation (B. Christensen)– Similar model to BonAHA

• “Application”: Each application has its own GUID that identifies it

• “Session”: A group of nodes registered as running the application

– Code• Application app = new Application(appid);• lpconn = new Connection(app);• ses = lpconn.CreateSession();• List<Session> sessions = lpconn.GetSessionList();

Page 24: BonAHA framework - IEEE CCNC 2009

Related Work - LightPeers

• Differences with BonAHA– PING packet sent every second to

search for peers• In Bonjour, there is exponential backoff

– No library-daemon interface• LP “server” listens to packets

– Reimplementation of entire architecture (service discovery + framework)

Page 25: BonAHA framework - IEEE CCNC 2009

Future Work

• Develop useful applications• Fix some API features

– Allow one BService object to create several instances.E.g.: one node may want to serve HTTP on two ports.

• Perhaps add high-level communications API for simple networking tasks.E.g.: getFile(), notifyPeer(), sendObject()

Page 26: BonAHA framework - IEEE CCNC 2009

Conclusion

• New scenario: highly mobile networks without infrastructure

• Require a new class of application – “ad-hoc” or “mobile P2P” apps

• Require a new framework for programming these applications– BonAHA, built on top of ZeroConf

service discovery: a framework towards building such applications

Questions?

Page 27: BonAHA framework - IEEE CCNC 2009

Backup Slides

Page 28: BonAHA framework - IEEE CCNC 2009

Apple’s Bonjour

• Implementation of Zero Configuration Networking (ZeroConf) by Apple Computer– This is what enables sharing in iTunes,

iChat, etc.

• Implemented on Mac OS, Windows, Linux and some other POSIX platforms– Ported to Windows CE as well

Page 29: BonAHA framework - IEEE CCNC 2009

Apple’s Bonjour

• Two main components– mDNS Daemon

• Takes care of all Zeroconf events• Listens to network events (link up, down, …)• Listens to mDNS traffic and keeps track of

all service announcements and requests

– Library (Interfaces for C, Java, …)• Allows applications to announce, browse for

and resolve services

Page 30: BonAHA framework - IEEE CCNC 2009

Apple’s Bonjour

• Details: Presented in Fall 2006– http://developer.apple.com/networking/b

onjour/

• Important things to remember– IP address autoconfiguration: Link-local

addressing• Pick random from 169.254/16

– Hostname resolution: mDNS• DNS-like protocol, each host listens on

224.0.0.251, port 5353

Page 31: BonAHA framework - IEEE CCNC 2009

Apple’s Bonjour

• Service Discovery: DNS-SD– DNS PTR records– Announcement of form:

ServiceName._http._tcp.local.

– Browsing for _http._tcp.local. gives list of web service instances

– Resolving ServiceName yields hostname, TXT records, etc.

Page 32: BonAHA framework - IEEE CCNC 2009

Bonjour API

• Factory class: DNSSD• Interfaces: Callback functions for events

– BrowseListener: Service browsing– ResolveListener: Name Resolution– RegisterListener: Service

Registration– QueryListener: DNS Record

Resolution– DomainListener: Domain Resolution

Page 33: BonAHA framework - IEEE CCNC 2009

Bonjour API

• BrowseListener– serviceFound() when services appear– serviceLost() when service leaves

• ResolveListener: – serviceResolved() to get hostname, TXT

records

• RegisterListener: – serviceRegistered() when registration

succeeds (or fails)

Page 34: BonAHA framework - IEEE CCNC 2009

Related Work - LightPeers

http://www.daimi.au.dk/~bentor/LightPeers/

Page 35: BonAHA framework - IEEE CCNC 2009

TXTRecord

DNSRegistration

RegisterListener

serviceRegistered()

DNSSDService

BrowseListener

serviceFound() serviceLost() DNSSDService

ResolveListener

serviceResolved()

DNSSD.resolve()

DNSSD.register()

TXTRecord Host IP

DNSSD.browse()

set()

Bonjour State Diagram

Page 36: BonAHA framework - IEEE CCNC 2009

BService

BListener

serviceUpdated()

set() register() setListener()

serviceExited()

BNode

get() getHostName() getHostAddress()

BonAHAState Diagram