NG9-1-1 Prototype Demo Jong Yul Kim, Wonsang Song, and Henning Schulzrinne Internet Real-Time Lab, Columbia University Overview • Prototype Architecture and Components • Demonstration of Features – – – – – – – – – Demo 1 : Location determination Demo 2 : Call Routing Demo 3 : Multimedia and Mapping Demo 4 : Inviting third party Demo 5: Fully Mute / Partially Mute Demo 6 : Callback Demo 7 : Logging Demo 8 : Queue Demo 9 : Overload Control Prototype Architecture GPS LIS Location Info DHCP Server Location key Location Info LoST Cluster Location PSAP Info sip:psap@domain2 w/location 911 112 PSAP sip:psap@domain2 with location SIP UA PSAP SIP Proxy urn:service:sos w/out location Local SIP Proxy Conference Server civil location geo location sip:psap@domain2 with location sip:rep@domain2 with location 911 POTS/Wireless Network IP Gateway psapd 3PCC Controller GeoLynx / Google Maps SIPc, a multi-function SIP UA GPS LIS Location Info DHCP Server Location key Location Info LoST Cluster Location PSAP Info sip:psap@domain2 w/location 911 112 PSAP sip:psap@domain2 with location SIP UA PSAP SIP Proxy urn:service:sos w/out location Local SIP Proxy civil location geo location sip:psap@domain2 with location sip:rep@domain2 with location 911 POTS/Wireless Network IP Gateway psapd 3PCC Controller GeoLynx / Google Maps • Function (caller side) – Identifies and initiates emergency call – Determines location from various sources • Function (calltaker side) – Interfaces with location mapping software – Shows calltaker status, responder list, incident type • Implementation – Tcl/Tk based User Interface and SIP stack – External programs for audio, video, application sharing, stun, etc. Location Information Sources GPS LIS Location Info DHCP Server Location key Location Info LoST Cluster Location PSAP Info PSAP SIP UA PSAP SIP Proxy urn:service:sos w/out location LIS sip:psap@domain2 with location sip:psap@domain2 w/location 911 112 Local SIP Proxy civil location geo location DHCP Server GPS sip:psap@domain2 with location sip:rep@domain2 with location 911 POTS/Wireless Network IP Gateway psapd 3PCC Controller GeoLynx / Google Maps CDP Skyhook • Function – Provides location information to SIPc • Implementation – GPS : USB device and NMEA 0183 parser – Location Information Server built using Apache, MySQL, and PHP LoST Cluster GPS LIS Location Info DHCP Server Location key Location Info LoST Cluster Location PSAP Info PSAP sip:psap@domain2 with location sip:psap@domain2 w/location 911 112 SIP UA PSAP SIP Proxy urn:service:sos w/out location Local SIP Proxy civil location geo location sip:psap@domain2 with location sip:rep@domain2 with location 911 POTS/Wireless Network IP Gateway psapd 3PCC Controller GeoLynx / Google Maps • Function – Translates (Location, Service) to a PSAP URL and emergency dial string – Verifies civic address • Implementation – PostgreSQL with PostGIS extension as a Database • US county boundary polygons to simulate geo PSAP boundary • Sample MSAG data for civic PSAP boundary – Tomcat + Axis for Web Service sipd, a SIP proxy and registrar GPS LIS Location Info DHCP Server Location key Location Info LoST Cluster Location PSAP Info PSAP sip:psap@domain2 with location sip:psap@domain2 w/location 911 112 SIP UA PSAP SIP Proxy urn:service:sos w/out location Local SIP Proxy civil location geo location sip:psap@domain2 with location sip:rep@domain2 with location 911 POTS/Wireless Network IP Gateway psapd 3PCC Controller GeoLynx / Google Maps • Function – Routes call to destination – Resolves SIP URL to a reachable address – Invokes sip-cgi for in-network special services • Implementation – CINEMA (Columbia InterNet Extensible Multimedia Architecture) – sip-cgi is perl-based psapd, a back-to-back SIP UA GPS LIS Location Info DHCP Server Location key Location Info LoST Cluster Location PSAP Info PSAP sip:psap@domain2 with location sip:psap@domain2 w/location 911 112 SIP UA PSAP SIP Proxy urn:service:sos w/out location Local SIP Proxy civil location geo location sip:psap@domain2 with location sip:rep@domain2 with location 911 POTS/Wireless Network IP Gateway psapd 3PCC Controller GeoLynx / Google Maps • Function – Facilitates multi-party conference setup – Distributes incoming call to call takers – Logs call details • Implementation – CINEMA C++ library (libsipapi) – Call distribution logic is written in Tcl psapd handles an incoming call caller conf. server psapd call taker (1) INVITE psap (loc, SDP1) Make Conference Select Available Calltaker (2) INVITE calltaker (loc, no SDP) Call-info: <sos call’s confuri>; purpose=incident • All signals go through psapd 180 Ringing 180 Ringing • psapd controls conference instances through MSCML (3) 200 OK (SDP2) (4) INVITE calltaker conf. (no loc, SDP2) (5) 200 OK (SDP2') • Media is directed to conference server (6) ACK (7) ACK (SDP2') (8) media (9) INVITE caller conf. (no loc, SDP1) (10) 200 OK (SDP1') (11) 200 OK (SDP1') (12) ACK (13) ACK (14) media (15) sos call established Conference Server GPS LIS Location Info DHCP Server Location key Location Info LoST Cluster Location PSAP Info PSAP sip:psap@domain2 with location sip:psap@domain2 w/location 911 112 SIP UA PSAP SIP Proxy urn:service:sos w/out location Local SIP Proxy Conference Server civil location geo location sip:psap@domain2 with location sip:rep@domain2 with location 911 POTS/Wireless Network IP Gateway psapd 3PCC Controller GeoLynx / Google Maps • Function – – – – Mixes and records audio Distributes video Call Queuing Interactive Voice Response • Implementation – sipconf from CINEMA – Snowshore IP Media Server from Cantata Technology Location Mapping Software GPS LIS Location Info DHCP Server Location key Location Info LoST Cluster Location PSAP Info PSAP sip:psap@domain2 with location sip:psap@domain2 w/location 911 112 SIP UA PSAP SIP Proxy urn:service:sos w/out location Local SIP Proxy Conference Server civil location geo location sip:psap@domain2 with location sip:rep@domain2 with location 911 POTS/Wireless Network IP Gateway psapd 3PCC Controller GeoLynx / Google Maps • Function – Plots caller’s location and other information on a local map – Shows nearby responders on map • Implementation – Geolynx Mapping System from GeoComm – Google Maps Emergency Call Flow (2) Location + Service Identifier (1) Location LoST Cluster (3) PSAP URL + emergency dial-string INVITE call taker From: caller (7) <Location> (6) (4) SOS caller (5) dial emergency dialstring or INVITE PSAP URL To: urn:service:sos SIP proxy INVITE PSAP URL To: urn:service:sos <Location> <Location> push emergency button call taker Media Stream Media Stream Demo 1 : Location Determination • DHCP • CDP • SkyHook DHCP for Location • • • Mainly for stationary users We modified ISC’s dhcpd to generate location information Use MAC address to get location information DHCPINFORM [MAC=00:11:20:9d:a0:03] request or response DHCPACK [option=0:US:1:NY:2:NEW YORK: 3:NEW YORK:6:AMSTERDAM:19:1214] DHCP Server CDP for Location • • • • Mainly for stationary and nomadic users Cisco Discovery Protocol (Layer2) Cisco switches broadcast switch/port ID periodically. A Switch covers a floor, a port leads to a jack in a room -> room-level accuracy Switch 2 Path of CDP advertisement Segment from switch 2/port 5 Physical location Invoke cdpCap cdpCap listens to advertisements Switch/port LIS SIP UA Send switch/port information SkyHook for Location • • • • Mainly for nomadic, mobile users Wireless device receives signals from Wi-Fi sites in range Skyhook compares signals to its database of geographically known locations Location data is used to direct safety services Taken from http://www.skyhookwireless.com Demo 2 : LoST http://honamsun.cs.columbia.edu:8080/index.jsp Demo 3 : Multimedia and Mapping Demo 4 : Inviting third party caller conf. server psapd call taker (0) sos call established (1) REFER (refer-to:3rd-party) (2) 202 ACCEPTED (3) NOTIFY (100 Trying) (4) 200 OK (5) INVITE 3rd-party (loc, no SDP) (6) 200 OK (SDP3) (7) INVITE 3rd-party conf. (no loc, SDP3) (8) 200 OK (SDP3') (9) ACK (10) ACK (SDP3') (11) media (12) NOTIFY (200 OK) (13) 200 OK (14) multi-party sos call established 3rd party Demo 5 : Fully / Partially Mute Demo 6 : Callback caller conf. server psapd (2) INVITE caller In-Reply-To: <original sos call’s callid> (no loc, no SDP) (3) 200 OK (loc, SDP2) call taker (1) INVITE psap Call-info: <original sos call’s confuri>; purpose=callback (SDP1) (4) INVITE caller conf. (no loc, SDP2) (5) 200 OK (SDP2') (6) ACK (7) ACK (SDP2') (8) media (9) INVITE calltaker conf. (no loc, SDP1) (10) 200 OK (SDP1') (11) 200 OK Call-info: <sos call’s confuri>; purpose=incident (loc, SDP1') (12) ACK (13) ACK (14) media (15) sos call established Demo 7 : Logging http://ng911serv.cs.columbia.edu/psap/ Demo 8 : Automatic Call Distribution • Based on availability of call taker • Language-based distribution • Queue – Auto-Response based on time and location of new incoming call Demo 9 : Overflow Control SUBSCRIBE NOTIFY INVITE REDIRECT INVITE Demo 9 : Overflow Control SUBSCRIBE NOTIFY INVITE INVITE Future Work • Implement additional Features – Auto-Response based on time and location of incoming call – Video Push to caller (e.g. CPR how-to) • Measuring and reducing latency More Information • A VoIP Emergency Services Architecture and Prototype – Matthew Mintz-Habib, Anshuman Rawat, Henning Schulzrinne, and Xiaotao Wu – ICCCN 2005, Oct. 2005 • An Enhanced VoIP Emergency Services Prototype – Jong Yul Kim, Wonsang Song, and Henning Schulzrinne – ISCRAM 2006, May 2006 • More information available on http://ng911.tamu.edu