Aalto University School of Electrical Engineering
Liberouter: Towards Do-It-Yourself Networking Jörg Ott Teemu Kärkkäinen http://www.netlab.tkk.fi/~jo/ 6 March 2014
Down-to-Earth Neighborhood Networking: Localizing Content Sharing • Keeping content where is matters • Preserving an intuitive understanding of the sharing context: people in the same place (at the same time)
Aalto University School of Electrical Engineering
1) Networking platform 2) Sharing applications
Aalto University School of Electrical Engineering
Do-It-Yourself…
Aalto University School of Electrical Engineering
Opportunistic Networking • Think messages, not packets • Discover peers • Exchange upon an encounter (“contact”)
Aalto University School of Electrical Engineering
WLAN Bluetooth …
Opportunistic Networking • • • • • •
Think messages, not packets WLAN Bluetooth Discover peers … Exchange upon an encounter (“contact”) Store (and carry), forward (replicate) Takes time, messages may disappear (best effort) Performance = f(node density, mobility, …)
Aalto University School of Electrical Engineering
Networking abstractions • Direct device-to-device with low latency (IP) • Direct and multi-hop Messaging (Bundles) • Publish / subscribe mechanism – Applications register interest in content using metadata – Matching content will be delivered
• Search – Enable complex message queries against stored content – Based upon metadata description (generic matching)
• Floating content model – Spreading content in a limited area only [www.floating-content.net] – Defined by (location, radius, content lifetime) Aalto University School of Electrical Engineering
Platform- Platformspecific independent
Applications: API and Distribution HTML5 App
install
install
HTML5 App Distribution
HTML5 Shim
Native Apps
Native API
Platform-independent (needs JVM)
TCP
Aalto University School of Electrical Engineering
SCAMPI Router Pub/Sub
Unicast
Search
Storage Peer Discovery
Transport
Native API AppLib: Interaction with the router
Local support functions
addListener() removeListener()
publish() delete() subscribe()
msgReceived()
run() / stop()
discovery()
discovered()
SCAMPImessage • construction • parsing • manipulation
Contact
Start
Peer discovery (update)
Metdata
Location (update)
String | Bytes | File
Subscribe
End
Aalto University School of Electrical Engineering
Simple File Transfer Application class FileTransfer implements AppLibListener …
S
applib = new AppLib(); applib.addListener (new FileTransfer ()); applib.subscribe (“filetransfer”); t = new Thread (applib); t.start ();
messageReceived (applib, msg) { filename = recv_dir + “/” + msg.getAsString (“name”); filedatastream = msg.get (“file”); // write file to disk }
Aalto University School of Electrical Engineering
Class FileTransfer implements AppLibListener () …
P
// determine a file to send: my_file msg = new SCAMPIMessage(); msg.setLifeTime (24*3600); msg.put (“name”, myfile.getName ()); msg.put (“file”, myfile); msg.setMetadata (“file”, “name”, …); msg.setMetadata (“file”, “size”, …); applib.publish (msg, “filetranfer”); publish_done (applib, msg) { … }
Mobile devices alone may not be enough • Device-to-device communication is tricky – Mobile OSes and APIs designed for connecting to infrastructure
• How to bootstrap mobile devices? – Want to avoid dependency on the web
• Just using people’s mobiles may not be very reliable – Fluctuation in device density during the day, week, year – Potentially shorter range, battery constraints
• More predictable storage locations desirable – Apps need to keep their data somewhere Aalto University School of Electrical Engineering
Liberouter • Basic features – – – – –
WLAN access point Captive portal SCAMPI router Storage node Can mesh with other liberouters
Aalto University School of Electrical Engineering
Raspberry Pi WLAN i/f USB flash drive 8 GB system SD card Total: ~80 EUR
Liberouter • Basic features – – – – –
WLAN access point Captive portal SCAMPI router Storage node Can mesh with other liberouters
• Applications – – – –
Android liberouter distribution Native SCAMPI (Java) applications HTML5 SCAMPI-enabled HTML5 legacy
• Web Access – Local instance of the distributed app store – Content interface: browsing (and interaction) – Instrumenting non-SCAMPI nodes for forwarding Aalto University School of Electrical Engineering
Component List - Raspberry Pi - USB WiFi …
Misc
DIY Instructions - Building - Configuring
Software
- 3D Printed Covers - Power Options
- SCAMPI Route - Linux Distro
EVERYTHING ONLINE
Aalto University School of Electrical Engineering
Aalto University School of Electrical Engineering
1) Networking platform 2) Sharing applications
Aalto University School of Electrical Engineering
Deploying applications • Web Apps (HTML5) – Limitations due to frameworks – Require always-on Internet connectivity
• App Stores (native) – Native apps: access to device features – Store operator as a gatekeeper + quality control, trust − Internet dependency, delay, potential censorship
• An app is nothing but a (signed) bag of bits – Use messaging for distribution Aalto University School of Electrical Engineering
SCAMPI Apps
Aalto University School of Electrical Engineering
SCAMPI Apps
Aalto University School of Electrical Engineering
Remember: This is NOT the Internet! • Distance matters: focus on proximity • Not necessarily instant feedback about success/failure • Don’t try to compete with the Internet – Emphasis is on different paradigms
• • • • •
Applications operate invisibly in the background Respond immediately upon user attention Completeness, congruence & repeatability not essential Provide value-add with probabilistic operation Reflect this in the UI Aalto University School of Electrical Engineering
SCAMPImusic What does it sound like here?
Radio Stre
am
Compose a Radio Stream
Opportunistically Spread Content Aalto University School of Electrical Engineering
nearbyPeople • Exploiting ephemeral communities • Share a personal profile with interests in the background • Observe how information from others comes in • Exchange messages with people of interest • Organize get-togethers around a common event Aalto University School of Electrical Engineering
Simple Messaging & Sharing Apps
Aalto University School of Electrical Engineering
Distributed “Google Person Finder”
Aalto University School of Electrical Engineering
Conclusion • Exploring less dependency on Internet services • Building own networks of limited reach and scale • Suitable for a range of information sharing applications • Currently exploring – – – –
More diverse (outdoor) applications Application authoring Mutable contents, distributed editing, and merging Limited real-time elements
• Do try this at home! http://www.ict-scampi.eu/results/scampi-liberouter/ Aalto University School of Electrical Engineering