beetle - stanford universitynetseminar.stanford.edu/seminars/05_14_15.pdf · beetle gateway should...
TRANSCRIPT
![Page 1: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/1.jpg)
Beetle:
Operating System Support for the Internet of Things
Amit Levy, James Hong, Laurynas Riliskis,Philip Levis, David Mazières, and Keith Winstein
![Page 2: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/2.jpg)
The Internet of Things Ideal Future
![Page 3: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/3.jpg)
The Internet of Things Today
![Page 4: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/4.jpg)
It's Not An Internet
● Connectivity is poor and constrained
– Edge devices cannot communicate with each other– Edge devices can only communicate with one
application● Vertical integration of peripherals, gateways, and cloud● Simple, desirable use cases are impossible
– Monitor battery life of all my devices
![Page 5: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/5.jpg)
Why? Some non-Fundamental Reasons
● Vendors want to “own the user experience”● Standardization takes time
– WWW, Z-Wave positive historical examples– Messaging probably a negative example
![Page 6: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/6.jpg)
What are the Fundamental Reasons?
![Page 7: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/7.jpg)
It's the gateway stupid!
![Page 8: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/8.jpg)
“It's the [Gateway] Stupid!”● IoT devices are feable and weak
– Low power: achieved by being mostly of– Simple network protocols: Bluetooth Low Energy et al
● Naming is harder– “Honey, what's the toaster's IP address, again?”
It's up to gateways to provide:connectivity, nameing, security...
![Page 9: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/9.jpg)
Operating Systems Today
![Page 10: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/10.jpg)
Operating Systems Today
![Page 11: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/11.jpg)
Operating Systems Today
● Small number of tailored device interfaces– Printer– File system– X Windows– HID– TCP/IP stack
![Page 12: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/12.jpg)
Linux is not IoT Scale!
![Page 13: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/13.jpg)
Operating Systems Today
● The IoT will have 1,000,000…,000 device types!● We can't hope to support each type in every OS
separately● For now, instead of safe, shared interfaces we get
exclusive streams– L2CAP sockets for BLE, serial devices for ZigBee, etc– 6lowpan is an exception (sort of)
![Page 14: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/14.jpg)
We need a single OS interface for all devices!
![Page 15: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/15.jpg)
Outline
● Looooooong Intro● Bluetooth LE architecture ● Beetle
– Network architecture– Mechanisms:
● HAT● Virtual devices● Service export control
![Page 16: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/16.jpg)
Outline
● Looooooong Intro● Bluetooth LE architecture ● Beetle
– Network architecture– Mechanisms:
● HAT● Virtual devices● Service export control
![Page 17: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/17.jpg)
Bluetooth Low Energy
● Single-hop protocol● Physical, Link and Application layers● Optimized for small exchanges and low energy:
– ~24 byte exchanges; infrequently– μA power consumtpion– Can run for years on coin battery
![Page 18: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/18.jpg)
Bluetooth Low Energy
L2CAP
Generic Attribute Protocol(GATT)
Link Layers
Connections
AdvertisingPackets
![Page 19: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/19.jpg)
Link Layer
● “Piconet” topology● Two roles:
– Peripheral (fitness band, watch, dead-bolt, etc)– Central (smart phone, laptop, gateway, etc)
● Centrals manage connections with multiple peripherals
● Peripherals can connect to a single central only
![Page 20: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/20.jpg)
L2CAP Channels
● Logical channels over single link● Reliable● Some channels reserved (e.g. GATT, signaling)
LengthChannel
IDPayload
L2CAP Header
![Page 21: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/21.jpg)
Generic Attribute Protocol (GATT)
Handle
0x02010x0201
0x02000x0200
0x02020x0202
0x02030x0203
measurementmeasurement
Type
serviceservice
contextcontext
featurefeature
0x02050x0205 serviceservice
Value
glucoseglucose
datadata
datadata
datadata
timetime
characteristics
0x05350x0535
0x05330x0533
0x05400x0540
measurementmeasurement
serviceservice
locationlocation
heart rateheart rate
datadata
datadata
0x02040x0204 record controlrecord control datadata
characteristics
![Page 22: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/22.jpg)
GATT● Two roles:
– Server has the attributes
– Peripherals and Centrals can be both clients and servers simultaneously
● Key/Type/Value store:
– Read/Write
– Notify/Indicate
– Find by type
Opcode Opcode parameters (type, value ...)Handle
![Page 23: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/23.jpg)
GATT: Simple Example
Notify 0x7: 152bpm
Notify 0x7: 157bpm
Notify 0x7: 152bpm
Notify 0x7: 154bpm
Notify every 1 second
Server Client
![Page 24: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/24.jpg)
A peripheral can only maintain one open connection!*
![Page 25: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/25.jpg)
One-to-One Communication
OSOS
BLEBLE
AppApp AppAppAppAppGateway
![Page 26: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/26.jpg)
The Internet of Things Today
![Page 27: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/27.jpg)
Today: Gateway Interposes on Data
● Each peripheral connects to a single app on the gateway
– Can only communicate directly with that app● App consumes GATT data. Mediates only supported interactions:
– Issue GATT commands to other connected peripherals
– Proprietary protocol to servers (e.g. over app-specific HTTP)
– (Limited) Intent-based interface to other apps● The app doesn't support an interaction you want?
– Tough luck...
![Page 28: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/28.jpg)
GATT: Three Important Properties
● Self-Describing:– Standardized service/characteristic types– Incorporates service discovery
● Transactional– Only onle outstanding command per connections in each
direction● High level
– Application-level transactions == protocol transactions
![Page 29: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/29.jpg)
Outline
● Looooooong Intro● Bluetooth LE architecture● Beetle
– Network architecture– Mechanisms:
● HAT● Virtual devices● Service export control
![Page 30: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/30.jpg)
Beetle
● Builds a network out of BLE● A software layer that runs on your gateway
– Device-to-device communication– Safe multi-app communication, locally or over Internet– Fine grained access control
● Completely backwards compatible with existing BLE devices
![Page 31: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/31.jpg)
Beetle: Design Overview
● Privileged user-space process on Linux and Android
● Provides networking to BLE devices
● Gateway routes between peripherals, apps and cloud
● Leverage richer user-interface on gateway
GATT
RadioGATT
Beet
le HATCharacteristic Caching
Access Control
Applications
![Page 32: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/32.jpg)
Beetle: Gateway Mechanisms
● Handle address translation (HAT)– Multi-link networking
● Virtual devices– Software connectivity– Interface with other protocols (e.g. HTTP, Intents)
● Service export control– Fined-grained security policies– Naming
![Page 33: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/33.jpg)
Handle Address Translation (HAT)
● Re-export peripheral services as gateway services● Proxied attributes on the gateway
– Associated with a remote attribute on a peripheral– Beetle routes messages to proxied attributes to the
appropriate peripherals● Translate peripherals handles into gateway address
space– Similar role to NAT in TCP/IP world
![Page 34: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/34.jpg)
Handle Address Translation (HAT)
0x02000x0200 serviceservice cadencecadence 0x01000x0100 serviceservice heartheart
0x05100x0510 serviceservice cadencecadence
0x12100x1210 serviceservice heartheart
![Page 35: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/35.jpg)
HAT: Discovery
● Typical BLE connection has fixed set of services● In Beetle, new services appear as more peripherals connect or
policy is changed● Take advantage of “Service Changed” characteristic
– Notifies client when new set of services changes– Provides a range of afected handles
● Keep track of which peripherals might notice the service has changed to minimize noise– If a peripheral never asks for a service, it shouldn't matter
![Page 36: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/36.jpg)
HAT: Notifications
● GATT notifications are a two-step process:– Subscribe/unsubscribe to notification by writing 1 or 0 to an attribute– Server begins notifying when value changes
● Cannot re-expose subscription attribute directly● Instead:
– Maintain a subscription set for every server notification source– Intercept subscribe and unsubscribe messages– Only forward first subscribe or last unsubscribe to server
![Page 37: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/37.jpg)
HAT Creates a Network
● Re-exporting attributes on gateway enables peripheral-to-peripheral communication
● Aggregating attributes from multiple servers allows many-to-many peripheral communication
● HAT must maintain app-level protocol semantic● Leverage knowledge of app-level protocol
semantics to retain reasonable performance
![Page 38: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/38.jpg)
![Page 39: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/39.jpg)
Demo: Lights and Switches
![Page 40: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/40.jpg)
Virtual Devices
● Virtual devices speak GATT for non-BLE links:– IPC, TCP/IP, USB, etc
● Provide access to non BLE services– GPS– Emulated device with test data– Legacy Internet services (e.g. HTTP)
● Complexity handled by HAT
![Page 41: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/41.jpg)
Virtual Devices: Local
● A user-level process that speaks GATT● Access to Beetle over IPC (e.g. UNIX domain sockets)● Similar to programming an app now (identical on Android)● Very useful:
– Multiple user apps– Expose local, non-BLE, sensors– Prototyping hardware– Custom multiplexing
![Page 42: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/42.jpg)
Virtual Devices: Network Services
● Virtual devices can exist on the Internet– In the cloud, local area network
● Scenario 1: Internet service supports Beetle– Beetle OS service connects directly over TCP– Don't need to write a tailored app
● Scenario 2: Legacy Internet service (e.g. HTTP/REST)– A local virtual device exports data over the legacy protocol
![Page 43: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/43.jpg)
![Page 44: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/44.jpg)
Service Export Control● So much connectivity!!● Need a way to control who sees what
– Strava shouldn't only see my current heart rate when I allow it● Routing at app-level protocol gives us more flexibility● Many possible criteria for access control
– Physical location– Identity– Pre-established trust– Out-of-band authentication (e.g. user login)
![Page 45: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/45.jpg)
Beetle● Gateway should route communication but not mediate application data
● Beetle is an OS service on the gateway that creates a network from BLE
● Three key mechanisms:
– HAT for peripheral communication
– Virtual devices for multiple-apps, device emulation and connecting other networks
– Service export control pushes policies to more featureful gateway devices
● Completely backwards compatible with existing BLE devices
![Page 46: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/46.jpg)
![Page 47: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/47.jpg)
Questions?
![Page 48: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/48.jpg)
![Page 49: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/49.jpg)
Beetle Linux Implementation
● Linux user-level process● ~1300 lines of code (in Go)● No changes to Kernel
– Although could be useful● Global handle address space● Virtual devices over UNIX domain sockets
![Page 50: Beetle - Stanford Universitynetseminar.stanford.edu/seminars/05_14_15.pdf · Beetle Gateway should route communication but not mediate application data Beetle is an OS service on](https://reader033.vdocuments.us/reader033/viewer/2022052720/5f0941647e708231d425f515/html5/thumbnails/50.jpg)
Peripheral-to-Peripheral RTT