SlideShare a Scribd company logo
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
Topics Problem/motivation Approach Service discovery and Bonjour BonAHA framework Demos Applications developed Related Work
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
Examples of applications Group chat File transfer File synchronization Local multiplayer games
Solution 1: Raw multicast Initial solution “ Dumb” multicasting to announce and get information from peers
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
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
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
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
register() function
BonAHA framework Node 2 Node 1 key21 = value21 key22 = value22 key23 = value23 key24 = value24 key11 = value11 key12 = value12 key13 = value13 key14 = value14 [2] node1.get(key13) [1] node1.register() [3] data = node1.fileGet( value13);
TXTRecord DNSRegistration RegisterListener serviceRegistered() DNSSDService BrowseListener serviceFound() serviceLost() DNSSDService ResolveListener serviceResolved() DNSSD.resolve() DNSSD.register() TXTRecord Host IP DNSSD.browse() set() Bonjour  State Diagram
BService BListener serviceUpdated() set() register() setListener() serviceExited() BNode get() getHostName() getHostAddress() BonAHA State Diagram
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
Code: LocationFinder
Compare: Bonjour Code
TicTacToe BonAHA sample application Shows use in Multi-player games Mutual awareness
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
BonAHA Applications BBS Application
BonAHA Applications Group chat Allows users to discover peers in local network and chat Rooms can be set up for private chats
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
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
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();
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)
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()
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?
Backup Slides
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
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
Apple’s Bonjour Details: Presented in Fall 2006 http://developer.apple.com/networking/bonjour/   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
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.
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
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)
Related Work - LightPeers http://www.daimi.au.dk/~bentor/LightPeers/
TXTRecord DNSRegistration RegisterListener serviceRegistered() DNSSDService BrowseListener serviceFound() serviceLost() DNSSDService ResolveListener serviceResolved() DNSSD.resolve() DNSSD.register() TXTRecord Host IP DNSSD.browse() set() Bonjour  State Diagram
BService BListener serviceUpdated() set() register() setListener() serviceExited() BNode get() getHostName() getHostAddress() BonAHA State Diagram

More Related Content

What's hot (20)

PPT
Socket Programming - nitish nagar
Nitish Nagar
 
PPT
Networking in java
shravan kumar upadhayay
 
PPT
Network programming in Java
Tushar B Kute
 
PDF
Chapter2 application layer
Khánh Ghẻ
 
PPTX
Introduction to Remote Procedure Call
Abdelrahman Al-Ogail
 
PDF
Java networking programs - theory
Mukesh Tekwani
 
DOCX
Simple chat room using python
VISHAL VERMA
 
PDF
Java Programming - 07 java networking
Danairat Thanabodithammachari
 
PPTX
Socket programming in Java (PPTX)
UC San Diego
 
PPT
05 rpc-case studies
hushu
 
PPT
Java Networking
Ankit Desai
 
PPT
Chapter2 l2 modified_um
Sajid Baloch
 
DOC
Remote procedure calls
imnomus
 
PPT
Java Networking
Sunil OS
 
PDF
Messaging With Erlang And Jabber
l xf
 
PPTX
Tcp/ip server sockets
rajshreemuthiah
 
PPTX
Linker and loader upload
Bin Yang
 
PPT
Chapter2ccna
robertoxe
 
PPT
Socket Programming Tutorial
Jignesh Patel
 
PPTX
Java socket programming
Mohammed Abdalla Youssif
 
Socket Programming - nitish nagar
Nitish Nagar
 
Networking in java
shravan kumar upadhayay
 
Network programming in Java
Tushar B Kute
 
Chapter2 application layer
Khánh Ghẻ
 
Introduction to Remote Procedure Call
Abdelrahman Al-Ogail
 
Java networking programs - theory
Mukesh Tekwani
 
Simple chat room using python
VISHAL VERMA
 
Java Programming - 07 java networking
Danairat Thanabodithammachari
 
Socket programming in Java (PPTX)
UC San Diego
 
05 rpc-case studies
hushu
 
Java Networking
Ankit Desai
 
Chapter2 l2 modified_um
Sajid Baloch
 
Remote procedure calls
imnomus
 
Java Networking
Sunil OS
 
Messaging With Erlang And Jabber
l xf
 
Tcp/ip server sockets
rajshreemuthiah
 
Linker and loader upload
Bin Yang
 
Chapter2ccna
robertoxe
 
Socket Programming Tutorial
Jignesh Patel
 
Java socket programming
Mohammed Abdalla Youssif
 

Similar to BonAHA framework - IEEE CCNC 2009 (20)

ZIP
OneTeam Media Server
Mickaël Rémond
 
PDF
Creating microservices architectures using node.js and Kubernetes
Paul Goldbaum
 
PPT
MSMDC_CLI363
mokacao
 
PPT
Chapter2_L2.ppt
Rashmin Tanna
 
PPT
Network and distributed systems
Sri Prasanna
 
PPT
Rpc (Distributed computing)
Sri Prasanna
 
PPT
applicationapplicationapplicationapplication.ppt
DEEPAK948083
 
PPT
Chapter2 application
Van Quang Tran
 
PDF
Lightbend Fast Data Platform
Lightbend
 
PDF
Programming IoT Gateways with macchina.io
Günter Obiltschnig
 
PPTX
NodeJS guide for beginners
Enoch Joshua
 
PDF
Chapter 6-Remoting
Hoàng Hải Nguyễn
 
PPTX
Lecture 3 computer communications and networks
anasbro009
 
PDF
JmDNS : Service Discovery for the 21st Century
Gnu Alsonative
 
PDF
JmDNS : Service Discovery for the 21st Century
Gnu Alsonative
 
PPT
Robot Operating Systems (Ros) Overview &amp; (1)
Piyush Chand
 
PPT
Robot operating systems (ros) overview & (1)
Piyush Chand
 
PPTX
.NET Core Today and Tomorrow
Jon Galloway
 
PPT
Chapter2 Application
Diego Corrales
 
PPTX
Proposal
Constantine Priemski
 
OneTeam Media Server
Mickaël Rémond
 
Creating microservices architectures using node.js and Kubernetes
Paul Goldbaum
 
MSMDC_CLI363
mokacao
 
Chapter2_L2.ppt
Rashmin Tanna
 
Network and distributed systems
Sri Prasanna
 
Rpc (Distributed computing)
Sri Prasanna
 
applicationapplicationapplicationapplication.ppt
DEEPAK948083
 
Chapter2 application
Van Quang Tran
 
Lightbend Fast Data Platform
Lightbend
 
Programming IoT Gateways with macchina.io
Günter Obiltschnig
 
NodeJS guide for beginners
Enoch Joshua
 
Chapter 6-Remoting
Hoàng Hải Nguyễn
 
Lecture 3 computer communications and networks
anasbro009
 
JmDNS : Service Discovery for the 21st Century
Gnu Alsonative
 
JmDNS : Service Discovery for the 21st Century
Gnu Alsonative
 
Robot Operating Systems (Ros) Overview &amp; (1)
Piyush Chand
 
Robot operating systems (ros) overview & (1)
Piyush Chand
 
.NET Core Today and Tomorrow
Jon Galloway
 
Chapter2 Application
Diego Corrales
 
Ad

More from Suman Srinivasan (9)

PDF
Data science and Artificial Intelligence
Suman Srinivasan
 
PPTX
PHP, LAMP Stack & WordPress
Suman Srinivasan
 
PDF
My PhD thesis defense presentation
Suman Srinivasan
 
PDF
My PhD Thesis
Suman Srinivasan
 
PPT
Real-Time Video Analytics Using Hadoop and HBase (HBaseCon 2013)
Suman Srinivasan
 
PPTX
OSGi summary
Suman Srinivasan
 
PPTX
ActiveCDN on NetServ
Suman Srinivasan
 
PPT
Suman's PhD Candidacy Talk
Suman Srinivasan
 
PPT
7DS Version 1
Suman Srinivasan
 
Data science and Artificial Intelligence
Suman Srinivasan
 
PHP, LAMP Stack & WordPress
Suman Srinivasan
 
My PhD thesis defense presentation
Suman Srinivasan
 
My PhD Thesis
Suman Srinivasan
 
Real-Time Video Analytics Using Hadoop and HBase (HBaseCon 2013)
Suman Srinivasan
 
OSGi summary
Suman Srinivasan
 
ActiveCDN on NetServ
Suman Srinivasan
 
Suman's PhD Candidacy Talk
Suman Srinivasan
 
7DS Version 1
Suman Srinivasan
 
Ad

Recently uploaded (20)

PDF
Python basic programing language for automation
DanialHabibi2
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
July Patch Tuesday
Ivanti
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PPTX
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Python basic programing language for automation
DanialHabibi2
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
July Patch Tuesday
Ivanti
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 

BonAHA framework - IEEE CCNC 2009

  • 1. 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
  • 2. Topics Problem/motivation Approach Service discovery and Bonjour BonAHA framework Demos Applications developed Related Work
  • 3. 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
  • 4. Examples of applications Group chat File transfer File synchronization Local multiplayer games
  • 5. Solution 1: Raw multicast Initial solution “ Dumb” multicasting to announce and get information from peers
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. BonAHA For registration service = new BService(&quot;7ds_location2&quot;, &quot;tcp&quot;); service.set(&quot;Latitude&quot;, lat); service.set(&quot;Longitude&quot;, lon); service.register(); service.setListener(this); For network transitions (nodes entering/leaving) nodeUpdated() nodeExited() No need for maintaining state
  • 11. BonAHA framework Node 2 Node 1 key21 = value21 key22 = value22 key23 = value23 key24 = value24 key11 = value11 key12 = value12 key13 = value13 key14 = value14 [2] node1.get(key13) [1] node1.register() [3] data = node1.fileGet( value13);
  • 12. TXTRecord DNSRegistration RegisterListener serviceRegistered() DNSSDService BrowseListener serviceFound() serviceLost() DNSSDService ResolveListener serviceResolved() DNSSD.resolve() DNSSD.register() TXTRecord Host IP DNSSD.browse() set() Bonjour State Diagram
  • 13. BService BListener serviceUpdated() set() register() setListener() serviceExited() BNode get() getHostName() getHostAddress() BonAHA State Diagram
  • 14. 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
  • 17. TicTacToe BonAHA sample application Shows use in Multi-player games Mutual awareness
  • 18. 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
  • 19. BonAHA Applications BBS Application
  • 20. BonAHA Applications Group chat Allows users to discover peers in local network and chat Rooms can be set up for private chats
  • 21. 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
  • 22. 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
  • 23. 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();
  • 24. 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)
  • 25. 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()
  • 26. 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?
  • 28. 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
  • 29. 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
  • 30. Apple’s Bonjour Details: Presented in Fall 2006 http://developer.apple.com/networking/bonjour/ 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
  • 31. 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.
  • 32. 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
  • 33. 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)
  • 34. Related Work - LightPeers http://www.daimi.au.dk/~bentor/LightPeers/
  • 35. TXTRecord DNSRegistration RegisterListener serviceRegistered() DNSSDService BrowseListener serviceFound() serviceLost() DNSSDService ResolveListener serviceResolved() DNSSD.resolve() DNSSD.register() TXTRecord Host IP DNSSD.browse() set() Bonjour State Diagram
  • 36. BService BListener serviceUpdated() set() register() setListener() serviceExited() BNode get() getHostName() getHostAddress() BonAHA State Diagram