ORBIT: Location- based services Henning Schulzrinne Columbia University
Location-based services Finding services based on location physical services (stores, restaurants, ATMs, …) electronic services (media I/O, printer, display, …) not covered here Using location to improve (network) services communication incoming communications changes based on where I am configuration devices in room adapt to their current users awareness others are (selectively) made aware of my location security proximity grants temporary access Privacy rules for access to context data
Location-based services & SIP We’re using SIP (and SIMPLE) as generic protocols for effecting change (“actuators”) send MESSAGE to devices distributing event information (“sensors”) Advantages: people and rooms identified by URIs cross-domain, with extensive security mechanisms domains don’t need to trust each other scalable to global system many other systems are mostly local
Location-based services Presence-based approach: UA publishes location to presence agent (PA) becomes part of general user context other users (human and machines) subscribe to context call handling and direction location-based anycast (“anybody in the room”) location-based service directory Languages for location-based services building on experience with our XML-based service creation languages CPL for user-location services LESS for end system services
Location information geospatial longitude, latitude, altitude civil time zone, country, city, street, room, … categorical type of location properties of location privacy (“no audio privacy”) suitability for different communication media
Determining location GPS may not be practical (cost, power, topology) Add location beacons extrapolate based on distance moved odometer, pedometer, time-since-sighting idea: meet other mobile location beacons estimate location based on third-party information
PA device controller SUBSCRIBE to each room SUBSCRIBE to configuration for users currently in rooms 1.discover room URI 2.REGISTER as contact for room URI tftp HTTP Example: user-adaptive device configuration SLP “all devices that are in the building” RFC 3082? signal strength location REGISTER To: 815cepsr Contact: SIP room 815
Architectures for (geo) information access Claim: all using protocols fall into one of these categories Presence or event notification “circuit-switched” model subscription: binary decision Messaging , SMS basically, event notification without (explicit) subscription but often out-of-band subscription (mailing list) Request-response RPC, HTTP; also DNS, LDAP typically, already has session-level access control (if any at all) Presence is superset of other two
Presence/Event notification Three places for policy enforcement subscription binary only policy, no geo information subscriber may provide filter could reject based on filter (“sorry, you only get county-level information”) greatly improves scaling since no event-level checks needed notification content filtering, suppression only policy, no geo information third-party notification e.g., event aggregator can convert models: gateway subscribes to event source, distributes by both policy and geo data
Presence model subscription policy event generator policy subscriber filter rate limiter change to previous notification? for each watcher subscriber (watcher) SUBSCRIBE NOTIFY
Policy rules There is no sharp geospatial boundary Presence contains other sensitive data (activity, icons, …) and others may be added Example: future extensions to personal medical data “only my cardiologist may see heart rate, but notify everybody in building if heart rate = 0” Thus, generic policies are necessary
Processing models Sequential model: for each subscriber, apply rules to new data doesn’t scale well to large groups Relational database model: re-use indexing and other query optimizations well-defined query and matching semantics e.g., mySQL and PostGres have geo extensions At time of subscription: SELECT address FROM policies WHERE person=$subscriber (AND now() between(starttime,endtime) OR starttime is null) AND (a3=$a3 or a3 is null) …