Mobility-Enhanced Network Services Todd Hodes, Randy Katz Computer Science Division University of California, Berkeley http://www.cs.berkeley.edu Scenario Soda Hall Current Cell • Enter campus, check PDA for list of services – e.g., obtain campus map, check building location Enter Soda Hall “foyer services” • Available services change – e.g., Current map changes Move to Auditorium “auditorium services” “foyer services” • See additional services presented – e.g., Obtain VCR and A/V switching controls – e.g.., Existing light switch UI widget remapped to local lights Print Notes • Select printer; location noted on current map • Print & retrieve file, return to auditorium Location-based Services • • • • Maps + Coarse-grained location tracking Printers, lights, audio/video equipment DNS, NTP many others... Outline • Requirements • Architecture – Location & Scope – Services as Partitioned Application Components • Prototype Applications • Summary • Future Work Requirements 3 clients 1) Non-intrusive Mobile Devices 2) Remote-Controllable Devices / Apps 1 2 3) Service Discovery 4) Transducers between objects and clients objects ? 4 1) Client Devices • Use of small mobile devices – promotes goal of “non-intrusive” usage – allows users to interact with their “usual” device rather a “new” (local) one Remote Control This? Or this? 2) Controllable Objects computer IP control interfaces accessible via IP RS-232 device • Define and create specific API for control of apps • Expose control interface over the network while separating/minimizing UI assumptions Example Devices: UCB CoLab Echo Canceller Mic amp A / V switch Scan Converters TV monitor, Camera, & Speaker sets Computers Receiver Serial mux LiveBoard Not shown: VCR, power control, ON-AIR sign, WaveLAN base station, ... 3) Service Discovery clients objects query ? advertise register Service Discovery Service Other Services • Advertise, register, & query – Scalable management of hierarchy of available services – Scoping, rate-limiting for wide-area • Naming ...... Scoped Discovery Bootstrap (header) SIP IP addr port ticket application-specific payload … beacon packets • Mobility beaconing is an announce/listen protocol – unify with a service location announce/listen protocol – announced data is location information • Advertisements (push) vs. queries (pull) – push: user anonymity, power, traffic • Contrast announce/listen with lookup-based schemes – adaptive scoping/forwarding (vs. DHCP) – no root servers (vs. DNS) – granularity varies with subnets, not area; no additional hardware required if connectivity assumed (vs. GPS) Scoping Heuristics (scoped) beacon with ticket request + ticket • Tickets included in scoped beacons • For local per-service access – Without ticket, services are inaccessible • For local service directory (cache) access – Without a received beacon, contents (and existence) unknown 4) Transducing Interfaces Application Proxy Client Wireless Device Proxy Wired IP Device RS-232 • Map between object and client interfaces at application proxy – remap endpoints & data types, aggregate/subset, compose • Exploit: – COM/Java Beans-style introspection to discover objects’ interface definitions or explicit Interface Specifications – exposed indirection between client app and device (control protocol) to vary UI On-the-fly Transduction Client Application Proxy Wireless Original or Generated UI Wired IP Device Proxy Generation Process Device RS-232 Control Interface and/or Existing UI Code • Utilize interface specification for on-the-fly UI generation/modification • Still can use existing client-specific UI code Remapping on off (boolean) (enumerated) 0.5 0.0 1.0 (real) • Client UI data type to that expected by control interface • Current interface widget(s) to new servers • Control messages to other control messages Aggregate or Subset Aggregate Interface Definitions Client Application Proxy Device Proxies Devices • Create custom UIs that can use a portion of the functionality from one or more control interfaces • controllable objects/servers remain independent Compose Aggregate Interface Definitions Client Application Proxy Device Proxies Devices • Compose device/server interaction behind unified interface • Create complex behaviors from independent controllable objects/servers Application Interfaces Summary • Allow multiple possible interfaces – Match heterogeneity in client devices – Match differences in available sevices – Mach per-user variations to suit differing usage models • Build complex behaviors from independent components – Transparent widget remapping of data type and endpoints – Feature subsets & aggregates – Composition Soda 405 Testbed Service Discove ry Service Screenshots Service Interaction Client Monolithic A/V controller Screenshots (cont.) Lights Map with Exported Object Locations Screenshots (cont.) Audio / Video Switching Camera Control Screenshots (cont.) Video Monitor Switching (RVIC client & server) Detailed Example: RVIC • “Remote-controlled VIC” – Removes the UI from the monitor, places it in the user’s hand • vic’s UI overhead is useless if not used at a desktop – Reduces vic’s video window configuration complexity by supporting “standard configurations” • Messaging style: – idempotent, string-based – use announce/listen for reliability, eventual consistency RVIC Messages • RoomServer Messages: • • • • • • Get SessionList [scope attribute] Get MonitorList [scope attribute] Get SourcesList <session> InitMonitor <monitor> Get RoomPresets InitRoom <preset> • RvicServer Messages: • Get MonitorConfigs • Set MonitorConfig <configSpec> • Set VideoWindow <windowSpec> <source> RVIC Message Data • [scope attribute] : – from Service Directory bootstrap beacon • address/port + ticket – or hierarchical scope attribute string for conversion to addr/port • “…/Berkeley Campus/Soda Hall/326 Soda” (TBD) • <session> : SDP session name • <windowSpec> : integer window number, with windows ordered from top to bottom then left to right • <source> : a CNAME of a session source Detailed Example: RVIC (cont.) • Request rate and Consistency update scaling: – Eventual consistency via announce/listen – Exposes basic tradeoff in latency/bandwidth • update state on each action: minimize latency • rate-limit updates via timers and population estimation (a la SDP): tight bandwidth control • Multi-user policies atop mechanism: – – – – “Free-for-all:” no locking Dedicated controller: coarse locking Rotating controller: fine-grained locking Voting: no locking, but latency issues (c.f., SCUBA) Summary An architecture and prototype system for composable mobile services • IP Dial Tone isn’t enough – Deploy services, provide seamless access • Embed location information into data networks • Variable application interfaces – discover interfaces, move GUIs – transduce to reduce need for a priori interfaces • Used by instructor and students to control an augmented classroom (UCB CoLab) Continuing Work • MASH collaboration laboratory (326 Soda) – MBone video and audio – Conference control elements • Pilot PDA + Metricom interface implementation • User Interfaces (with J. Landay, M. Newman) – Presentation of controls – Behavior specification – Reconciliation of conflicting behaviors • Extend discovery beyond local-area – hierarchy, scoping, union/intersection Related Work • • • • • • • • Mobile IP, Overlay Networking Service Location Protocol PARCTab, Active Badges Application Partitioning (Rover, Wit, …) Proxies/Gateways DHTML, Universal Remote Controls Location-based applications (Mobisaic, …) Distributed object systems (CORBA, DCE, …) Device Mobility • Mobile IP, Overlays Composing Interface Definition Client Application Proxy Device Proxy Device Device Proxy Device • Create complex behaviors – From independent controllable objects/servers – UNIX pipe / HTTP proxy model – Exploits exposed application interface definition and indirection – Remap an RPC to multiple RPCs on-the-fly