RFC 8148
Next-Generation Vehicle-Initiated Emergency Calls
Next-Generation Vehicle-Initiated Emergency Calls πβ¨
Internet Engineering Task Force (IETF) πΈ is who put this out, and it's RFC 8148 π (the title is up above, bestie).
- Authors: R. Gellens (Core Technology Consulting), B. Rosen (NeuStar, Inc.), H. Tschofenig (Individual) π―ββοΈ
- Category: Standards Track π
- ISSN: 2070-1721
- Date: May 2017 π
- Obsoletes / Updates: the title block doesn't list anything it obsoletes or updates π¦
Abstract β¨
okay so this doc is about how we use IP-based emergency services stuff to handle the next generation of emergency calls that cars make ππ¨. These calls can happen automatically after a crash or serious incident, or a vehicle occupant can trigger one by hand. Either way, the call carries vehicle, sensor, and location data about the crash or incident π§ . People call these "Automatic Crash Notification" (ACN) or "Advanced Automatic Crash Notification" (AACN), even when a human pressed the button π. The "Advanced" part just means the call can carry a richer set of data π₯.
This doc also registers a MIME media type and an Emergency Call Data Type for that vehicle, sensor, and location data. People often call it "crash data," even though there isn't necessarily a crash π. It also registers an INFO package so that data can ride along in SIP INFO requests π¦. The actual data format, contents, and structure live in an external spec, which this doc points to π.
This doc reuses the technical bits of next-gen Pan-European eCall, which is the mandated, standardized system for emergency calls from in-vehicle systems (IVSs) in Europe and some other regions πͺπΊ. The big difference is the crash data set. This doc uses the Vehicle Emergency Data Set (VEDS) instead of the eCall Minimum Set of Data (MSD) π. It's basically an extension of the IETF eCall doc. The MSD becomes optional, VEDS becomes mandatory, and it adds attribute values to the metadata/control object for extra functionality π. It registers a new INFO package that's identical to the eCall one, except it adds the VEDS MIME type π . Last but not least, it describes legacy circuit-switched ACN systems and how they migrate to next-gen emergency calling, just for background and context π¦.
Status of This Memo π
ok this is the paperwork bit, but it matters π«Ά. This is an Internet Standards Track document. It's a product of the IETF, it represents the consensus of the IETF community, it got public review, and the Internet Engineering Steering Group (IESG) approved it for publication π. For more on Internet Standards, see Section 2 of RFC 7841 π.
For the current status, any errata, and how to give feedback, check http://www.rfc-editor.org/info/rfc8148 π.
Copyright Notice π
Copyright (c) 2017 IETF Trust and the persons identified as the document authors. All rights reserved. π
This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as in effect on the date of publication. Please review those documents carefully, bestie, because they describe your rights and restrictions for this doc π. Code Components extracted from this document must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions. They're provided without warranty, as described in the Simplified BSD License π
.
Table of Contents πΈ
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. Document Scope . . . . . . . . . . . . . . . . . . . . . . . 8
4. Overview of Legacy Deployment Models . . . . . . . . . . . . 8
5. Migration to Next Generation . . . . . . . . . . . . . . . . 10
6. Vehicle Data . . . . . . . . . . . . . . . . . . . . . . . . 13
7. Data Transport . . . . . . . . . . . . . . . . . . . . . . . 14
8. Call Setup . . . . . . . . . . . . . . . . . . . . . . . . . 16
9. New Metadata/Control Values . . . . . . . . . . . . . . . . . 17
9.1. New Values for the "action" Attribute . . . . . . . . . . 18
9.2. Example <request> Element . . . . . . . . . . . . . . . . 19
9.3. The <ack> Element . . . . . . . . . . . . . . . . . . . . 19
9.4. The <capabilities> Element . . . . . . . . . . . . . . . 20
10. Test Calls . . . . . . . . . . . . . . . . . . . . . . . . . 21
11. Example Call Initiation . . . . . . . . . . . . . . . . . . . 22
12. Security Considerations . . . . . . . . . . . . . . . . . . . 27
13. Privacy Considerations . . . . . . . . . . . . . . . . . . . 28
14. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28
14.1. MIME Media Type Registration for
application/EmergencyCall.VEDS+xml . . . . . . . . . . . 28
14.2. Registration of the "VEDS" Entry in the Emergency Call
Data Types Registry . . . . . . . . . . . . . . . . . . 30
14.3. New Action Values . . . . . . . . . . . . . . . . . . . 30
14.4. Emergency Call Static Messages Registry . . . . . . . . 31
14.5. Emergency Call Vehicle Lamp IDs Registry . . . . . . . . 32
14.6. Emergency Call Vehicle Camera IDs Registry . . . . . . . 33
14.7. The EmergencyCallData.VEDS INFO Package . . . . . . . . 35
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 38
15.1. Normative References . . . . . . . . . . . . . . . . . . 38
15.2. Informative references . . . . . . . . . . . . . . . . . 39
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 40
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 40
1. Introduction β¨
okay so emergency calls from in-vehicle systems are literal lifesavers ππ. Whether the car calls automatically after a crash or serious incident, or a passenger presses the button by hand, these calls help cut down on road deaths and injuries, because emergency services can respond fast and appropriately to what actually happened, often with way better location accuracy π.
Drivers often have pretty bad location awareness, especially outside major cities, at night, and when they're away from home (especially abroad) ππ. In the scariest cases, the victims might not be able to call at all because they're hurt or trapped π.
For more than two decades, some cars have had telematics systems that, among other things, place an emergency call automatically after a crash, or manually when someone hits the emergency call button π. These systems usually have on-board location determination that uses satellite-based positioning, inertial sensors, gyroscopes, and so on, so they can give an accurate position for the vehicle π°οΈ. Built-in systems get extra perks from being part of the car: more power capacity, the ability to have larger or specialized antennas, engineering that avoids or minimizes degradation from vehicle glass coatings, and less interference from other vehicle systems, etc. So the Public Safety Answering Point (PSAP) can get a good estimate of where the vehicle is during an emergency πΊοΈ. Vehicle manufacturers are adopting these systems more and more, for the safety benefits and also for the extra features and services they enable (for example, remote engine diagnostics, remote door unlock, stolen vehicle tracking and disabling, etc.) πβ¨.
A common name for these systems is Automatic Crash Notification (ACN) or Advanced Automatic Crash Notification (AACN). Sometimes people say "Collision" instead of "Crash." In this document, "ACN" is the general term π . ACN systems send some amount of incident-specific data, generally called "crash data" (the term is used even if there wasn't actually a crash π). Different systems send different amounts, but standardized formats, structures, and mechanisms are needed for interoperability among systems and PSAPs π€.
As of the date of this document, in-vehicle telematics systems that are deployed today are circuit-switched and don't have a standards-based way to send crash data straight to the PSAP. They usually rely on either a human advisor or an automated text-to-speech system to read some crash data out loud to the PSAP call taker, or in some cases use a proprietary mechanism π. Usually the call taker first has to realize the call is about a vehicle incident, then listen to the data and transcribe it π. Circuit-switched ACN systems are called "CS-ACN" here.
The move to next-generation emergency calling is a huge opportunity to level up crash data. A standardized set gets sent during call setup, so the PSAP can process it in an integrated, automated way and make it available to the call taker when the call comes in π₯. It also lets the call taker ask a vehicle to do things, like flash its lights or unlock its doors π¦. Plus, manufacturers can use the same standardized mechanisms for data transmission and request processing for internal use if they want, like telemetry between the vehicle and a service center for both emergency and non-emergency uses, including location-based services, multimedia entertainment systems, remote door unlocking, remote diagnostics, and roadside assistance ππ.
Next-generation ACN means these calls can be recognized and processed as such during call setup, and routed to an equipped PSAP where the vehicle data is available to help the call taker assess and respond to the situation π§. Next-generation (IP-based) ACN systems are called NG-ACN here.
An ACN call can be initiated by a vehicle occupant or automatically initiated by vehicle systems in the event of a serious incident. (The "A" in "ACN" does stand for "Automatic", but the term is broadly used for the whole class of calls placed by an in-vehicle system (IVS) or by Telematics Service Providers (TSPs) that carry incident-related data as well as voice.) Automatically triggered calls indicate a car crash or some other serious incident (for example, a fire). Manually triggered calls include reports of observed crashes or serious hazards (such as impaired drivers or roadway debris), requests for medical assistance, and so on π¨.
The Association of Public-Safety Communications Officials (APCO) and the National Emergency Number Association (NENA) have jointly developed a standardized set of incident-related vehicle data for ACN use, called the Vehicle Emergency Data Set (VEDS) [VEDS]. Such data is often referred to as crash data, even though it applies to incidents other than crashes π¦.
This document describes how the IETF mechanisms for IP-based emergency calls are used to provide the realization of next-generation ACN. It's designed with North American ACN requirements in mind (and both APCO and NENA are based in the U.S.), but it's specified generically so the technology can be reused or extended for requirements in other regions π.
This document reuses the technical aspects of next-generation Pan-European eCall (a mandated and standardized system for emergency calls by in-vehicle systems within Europe), as described in [RFC8147] πͺπΊ. However, this document specifies use of a different set of vehicle (crash) data, specifically VEDS rather than the eCall Minimum Set of Data (MSD). This document is an extension of [RFC8147], with the differences being that this document makes the MSD data set optional and VEDS mandatory, and it adds new attribute values to the metadata/control object defined in that document. This document also registers a new INFO package (identical to that defined in [RFC8147] with the addition of the VEDS MIME type) π.
This document registers the application/EmergencyCallData.VEDS+xml MIME media type, the VEDS Emergency Call Data Type, and the EmergencyCallData.VEDS INFO package, so this and related data can be carried in SIP INFO requests π¬.
Section 6 introduces VEDS. Section 7 describes how VEDS data and metadata/control blocks are transported within NG-ACN calls. Section 8 describes how such calls are placed πΊοΈ.
These mechanisms are used to place emergency calls that are identifiable as ACN calls and that carry standardized crash data in an interoperable way π .
Calls by in-vehicle systems are placed using cellular networks, which might ignore location information sent by an originating device in an emergency call INVITE, instead substituting their own location information (although often determined in cooperation with the originating device) π‘. Standardized crash data structures typically include location as determined by the IVS. A benefit of this is that it allows the PSAP to see both the location as determined by the cellular network and the location as determined by the IVS πβ¨.
This specification inherits the ability to utilize test call functionality from Section 15 of [RFC6881] π§ͺ.
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
This document reuses terminology defined in Section 3 of [RFC5012]. On top of that, we use these abbreviations π§ :
3GPP: 3rd Generation Partnership Project
AACN: Advanced Automatic Crash Notification
ACN: Automatic Crash Notification
APCO: Association of Public-Safety Communications Officials
EENA: European Emergency Number Association
ESInet: Emergency Services IP network
GNSS: Global Navigation Satellite System (which includes
various systems such as the Global Positioning System or
GPS)
IVS: In-Vehicle System
MNO: Mobile Network Operator
MSD: Minimum Set of Data
NENA: National Emergency Number Association
NG: Next Generation
POTS: Plain Old Telephone Service (normal, circuit-switched
voice calls)
PSAP: Public Safety Answering Point
TSP: Telematics Service Provider
VEDS: Vehicle Emergency Data Set
Because the endpoints of a next-generation ACN call are a PSAP and either an IVS or a TSP, the term "IVS" is used to stand in for either an IVS or a TSP whenever we talk about signaling behavior (for example, sending VEDS data, sending a SIP INVITE request, receiving a SIP INFO request, etc.). That way we don't have to keep writing "IVS or TSP" over and over π.
3. Document Scope
This document is focused on how an ACN emergency call is set up and how incident-related data (including vehicle, sensor, and location data) is transmitted to the PSAP using IETF specifications. For the direct model, this is the end-to-end description (between the vehicle and the PSAP). For the TSP model, it describes the call leg between the TSP and the PSAP, and leaves the call leg between the vehicle and the TSP up to the entities involved (i.e., IVS and TSP vendors), who are free to use the same mechanism for both legs, or not π―.
Note that Europe has a mandated and standardized system for emergency calls by in-vehicle systems. This Pan-European system is known as "eCall" and is the subject of a separate document, [RFC8147], which this document builds on πͺπΊ. Vehicles designed to operate in multiple regions might need to support eCall as well as NG-ACN as described here. A vehicle IVS might determine whether to use eCall or ACN by first working out the region or country it's in (for example, from a GNSS location estimate and/or the identity of, or information from, an MNO). If other regions adopt other data formats, a multi-region vehicle might need to support those too π. This document adopts the call setup and other technical aspects of [RFC8147], which uses [RFC7852]. That makes it straightforward to use a different data set while keeping the other technical aspects unchanged. So both next-generation eCall (NG-eCall) and the NG-ACN mechanism described here are compatible, differing primarily in the specific data block that is sent (the eCall MSD in the case of NG-eCall, and VEDS in this document) and in some additions to the metadata/control data block. If other regions adopt their own vehicle data sets, that can be accommodated in a similar way without changing the other technical aspects π. Note that any additional data formats require a new INFO package to permit transport within SIP INFO requests π¦β¨.
4. Overview of Legacy Deployment Models β¨
okay so before we get to the glow-up, let's look at how legacy (circuit-switched) systems handled emergency calls from in-vehicle systems ππ¨. These systems can generally convey at least location, and in some cases telematics data, to the PSAP π. Most of them use one of three architectural models, described here as "TSP", "direct", and "paired". The three models are illustrated below π.
In the TSP model, both emergency and routine TSP service calls are placed to a TSP π . A proprietary technique (e.g., a proprietary in-band modem) is used for data transfer between the TSP and the vehicle.
In an emergency, a TSP agent typically verifies the emergency, bridges in the PSAP, and communicates location, crash data (such as impact severity and trauma prediction), and other data (such as the vehicle description) to the PSAP call taker orally (in some cases, a proprietary out-of-band interface is used) π£οΈ. Since the TSP knows the location of the vehicle (from on-board GNSS and sensors), location-based routing is usually used to route to the appropriate PSAP πΊοΈ. In some cases, the TSP is able to transmit location automatically, using similar techniques as for wireless calls β¨. A three-way voice call is generally established between the vehicle, the TSP, and the PSAP, allowing communication between the PSAP call taker, the TSP agent, and the vehicle occupants (who might be unconscious) π.
///----\\\ proprietary +-----+ 911 trunk or POTS +------+
||| IVS |||-------------->| TSP |--------------------->| PSAP |
\\\----/// crash data +-----+ location via trunk +------+
Figure 1: Legacy TSP Model
In the paired model, the IVS uses a local link (typically Bluetooth [Bluetooth]) with a previously paired handset to establish an emergency call with the PSAP (by dialing a standard emergency number; 9-1-1 in North America) π±. It then communicates location data to the PSAP via text-to-speech, and crash data might or might not be conveyed using text-to-speech too π€. Some such systems use an automated voice prompt menu for the PSAP call taker (e.g., "this is an automatic emergency call from a vehicle; press 1 to open a voice path to the vehicle; press 2 to hear the location read out") so the call taker can request location data via text-to-speech π.
///----\\\ +----+ 911/etc. voice call via handset +------+
||| IVS |||-->| HS |----------------------------------->| PSAP |
\\\----/// +----+ location via text-to-speech +------+
(Note: "HS" is handset.)
Figure 2: Legacy Paired Model
In the direct model, the IVS directly places an emergency call with the PSAP by dialing a standard emergency number (9-1-1 in North America) ππ¨. Such systems might communicate location data to the PSAP via text-to-speech, and crash data might or might not be conveyed using text-to-speech π€·ββοΈ. Some such systems use an automated voice prompt menu (e.g., "this is an automatic emergency call from a vehicle; press 1 to open a voice path to the vehicle; press 2 to hear the location read out") to allow the call taker to request location data via text-to-speech π§.
///----\\\ 911/etc. voice call via IVS +------+
||| IVS |||---------------------------------------->| PSAP |
\\\----/// location via text-to-speech +------+
Figure 3: Legacy Direct Model
5. Migration to Next Generation π
Moving emergency calls from in-vehicle systems to next-generation (all-IP) technology under this document gives us a standardized way to identify these calls and convey crash data with the call setup π«Ά. It also unlocks additional communications modalities and enhanced functionality π₯. This means ACN calls and crash data can be automatically processed by the PSAP and made available to the call taker in an integrated, automated way π. Because the crash data is carried in the initial SIP INVITE (per [RFC7852]), the PSAP can present it to the call taker at the same time the call appears π. The PSAP can also process the data to take other actions π. For example, if multiple calls from the same location arrive while the PSAP is busy and a subset of them are NG-ACN calls, a PSAP might choose to store the information and reject the calls, since the IVS will receive confirmation that the information has been successfully received π. A PSAP could also include a message stating that it is aware of the incident and responders are on the way, and a PSAP could call the vehicle back when a call taker is available π².
Migrating origination devices and networks, PSAPs, emergency services networks, and other telephony environments to next-generation technology brings better interoperability and functionality π. This matters most for emergency calls carrying extra data, like vehicle crash data π . (In the U.S., a network specifically for emergency responders is being developed. This network, FirstNet, will be next generation from the start, enhancing the ability for data exchange between PSAPs and responders π.)
NG-ACN calls can be recognized as such during call set-up π. They can be routed to a PSAP that is prepared, both technically and operationally, to handle such calls. The vehicle-determined location and crash data can be processed automatically by the PSAP and made available to the call taker at the same time as the call appearance β. Enhanced functionality includes the ability for the PSAP call taker to request that the vehicle take an action, such as sending an updated set of data, conveying a message to the occupants, flashing lights, unlocking doors, etc. π¦
Vehicle manufacturers using the TSP model can choose to use the same mechanism to carry telematics data, and requests and responses between the vehicle and the TSP, for both emergency and non-emergency calls, as they use for the interface with the PSAP π.
An IVS establishes a next-generation emergency call (see [RFC6443] and [RFC6881]) with an initial INVITE. That INVITE contains a Request-URI indicating an ACN emergency call and Call-Info header fields indicating that both vehicle crash and capabilities data are included πΈ. The IVS typically does not perform routing or location queries, relying on the MNO for this π.
[RFC8147] registers new service URN children within the "sos" subservice π. These URNs request NG-ACN resources and differentiate between manually and automatically triggered NG-ACN calls, which might be subject to different treatment depending on policy π§. The two service URNs registered in [RFC8147] are urn:service:sos.ecall.automatic and urn:service:sos.ecall.manual π. The same service URNs are used for ACN as for eCall, since in any region only one of these is supported, so a distinction isn't needed πββοΈ. (Further, PSAP equipment might support multiple data formats, allowing a PSAP to handle a vehicle that erroneously sent the wrong data object.)
Note that in North America, routing queries performed by clients outside of an ESInet typically treat all sub-services of "sos" identically to "sos" with no sub-service πΊοΈ. However, the Request-URI header field keeps the full sub-service, and route and handling decisions within an ESInet or PSAP can take the sub-service into account π§ . For example, in a region with multiple cooperating PSAPs, an NG-ACN call might be routed to a PSAP that is NG-ACN capable, or to one that specializes in vehicle-related incidents πβ¨.
Migration of the three architectural models to next generation (all-IP) is described below π¦.
In the TSP model, the IVS transmits crash and location data to the TSP, either by reusing the mechanisms and data objects described in this document or by using a proprietary mechanism π. In an emergency, the TSP bridges in the PSAP, and the TSP transmits crash and other data to the PSAP using the mechanisms and data objects described in this document π«Ά. There is a three-way call between the vehicle, the TSP, and the PSAP, allowing communication between the PSAP call taker, the TSP agent, and the vehicle occupants (who might be unconscious) π. The TSP relays PSAP requests and vehicle responses π¨.
proprietary
///----\\\ or standard +-----+ standard +------+
||| IVS |||------------------->| TSP |------------------->| PSAP |
\\\----/// crash+other data +-----+ crash+other data +------+
Figure 4: Next-Generation TSP Model
The vehicle manufacturer and the TSP can choose to use the same mechanisms and data objects on the left call leg in Figure 4 as on the right π. (Note that the TSP model can be more difficult when the vehicle is in a different country than the TSP, e.g., a US resident driving in Canada, because of the additional complexity in choosing the correct PSAP based on vehicle location performed by a TSP in a different country π.)
In the direct model, the IVS communicates crash data to the PSAP directly, using the mechanisms and data objects described in this document π .
///----\\\ NG emergency call +------+
||| IVS |||----------------------------------------->| PSAP |
\\\----/// crash + other data +------+
Figure 5: Next-Generation Direct Model
In the paired model, the IVS uses a local link to a previously paired handset to establish an emergency call with the PSAP. It is unclear what facilities are or will be available for transmitting crash data through the link to the handset for inclusion in an NG emergency call, and for receiving additional data items from the response π€. Hence, manufacturers that use the paired model for legacy calls might choose to adopt either the direct or TSP model for next-generation calls π¦.
///----\\\ (undefined) +----+ standard +------+
||| IVS |||----------------->| HS |--------------------->| PSAP |
\\\----/// (undefined) +----+ crash + other data +------+
Figure 6: Next-Generation Paired Model
Regardless of model, if the call is routed to a PSAP that is not NG-ACN capable, the PSAP ignores (or does not receive) the vehicle data π¬. The IVS or TSP can detect this when the status response to the INVITE (e.g., 200 OK) lacks a metadata/control structure acknowledging receipt of the data [RFC8147] π. The IVS or TSP then proceeds as it would for a CS-ACN call (e.g., oral conveyance of data) π£οΈβ¨.
6. Vehicle Data β¨
okay so APCO and NENA teamed up π«Ά and built a standardized set of incident-related vehicle data for ACN use, called the Vehicle Emergency Data Set (VEDS) [VEDS]. People usually call this crash data, but it's useful in incidents that aren't crashes too ππ₯
VEDS is basically the shared language π It's a standard data set for transmitting, exchanging, and interpreting vehicle-related data. Because the format is standard, an IVS or TSP can generate it and then PSAPs, emergency responders, and medical facilities can all read it and actually understand it. It's giving teamwork π The data includes incident-related stuff like airbag deployment, the vehicle's location and compass orientation, its spatial orientation (upright, on a side, on its roof, or on its bumper), and sensor data that can hint at how bad the crash was and how likely it is that the occupants got seriously hurt, and more π All of this helps the PSAP and responders figure out what kind of response might be needed. Some of it also shows up in U.S. government guidelines for field triage of injured patients [triage-2008] [triage-2011]. Those guidelines help responders spot possible severe internal injuries and make big decisions about where a patient should go and how to get them there π©ΊπΈ
VEDS is an XML structure (see [VEDS]) that rides along in SIP using the application/EmergencyCallData.VEDS+xml MIME media type π
If new data blocks ever get needed (say for other regions or for enhanced data), here's the standardization process in a nutshell π§
o A set of data is standardized by a Standards Development Organization (SDO) or appropriate organization.
o A MIME media type for the crash data set is registered with IANA.
- If the data is specifically for use in emergency calling, the MIME media type is normally under the application type with a subtype starting with EmergencyCallData.
- If the data format is XML, then by convention the name has a suffix of "+xml".
o The item is registered in the "Emergency Call Data Types" registry, as defined in Section 11.1.9 of [RFC7852].
- For emergency-call-specific formats, the registered name is the root of the MIME media type (not including the EmergencyCallData prefix and any suffix such as "+xml") as described in Section 4.1 of [RFC7852].
o A new INFO package is registered that permits carrying the new media type, the metadata/control object (defined in [RFC8147]), and for compatibility, the MSD and VEDS objects, in SIP INFO requests.
7. Data Transport π¦
[RFC7852] sets up a general mechanism for including blocks of data within a SIP emergency call, and this document uses that mechanism π This document also registers an INFO package (in Section 14.7) so NG-ACN-related data blocks can ride along in SIP INFO requests. (Per [RFC6086], new SIP INFO method usages need an INFO package defined, so that's why π)
VEDS is an XML structure defined by APCO and NENA [VEDS]. It gets carried in a body part with the MIME media type application/EmergencyCallData.VEDS+xml π
An IVS sends a VEDS data block (see [VEDS]) by including it as a body part of a SIP message per [RFC7852]. The body part gets identified by its MIME media type (application/EmergencyCallData.VEDS+xml) in its Content-Type header field. It also gets a unique identifier, listed in a Content-ID header field in the body part. The SIP message is marked as containing VEDS data by adding (or appending to) a Call-Info header field at the top level of the SIP message. That Call-Info header field has a Content Identifier (CID) URL pointing at the body part's unique identifier, plus a "purpose" parameter that identifies the data as a VEDS data block per the "Emergency Call Data Types" registry entry. The "purpose" parameter's value is "EmergencyCallData.VEDS". A VEDS data block is carried in a SIP INFO request using the INFO package defined in Section 14.7 β¨
A PSAP or IVS sends a metadata/control object (see [RFC8147]) by including it in a SIP message as a MIME body part per [RFC7852]. The body part is identified by its MIME media type (application/EmergencyCallData.Control+xml) in its Content-Type header field. It also gets a unique identifier listed in a Content-ID header field. The SIP message is marked as containing the metadata/control block by adding (or appending to) a Call-Info header field at the top level of the SIP message. That Call-Info header field holds a CID URL referencing the body part's unique identifier, plus a "purpose" parameter identifying the data as a metadata/control block per the "Emergency Call Data Types" registry entry. The "purpose" parameter's value is "EmergencyCallData.Control". A metadata/control object is carried in a SIP INFO request using the INFO package defined in Section 14.7 π
A body part holding a VEDS or metadata/control object has a Content-Disposition header field value containing "By-Reference", and it is always enclosed in a multipart body part (even if it would otherwise be the only body part in the SIP message) π«Ά
An IVS starting an NG-ACN call includes a VEDS data block and a metadata/control object in the initial INVITE, which tell the PSAP what it's capable of. The VEDS and metadata/control body parts (and the Presence Information Data Format Location Object (PIDF-LO)) have a Content-Disposition header field with the value "By-Reference; handling=optional". Specifying handling=optional stops the INVITE from getting rejected if it passes through a legacy element (like a gateway between SIP and circuit-switched environments) that doesn't understand the VEDS or metadata/control (or PIDF-LO) objects π The PSAP then creates a metadata/control object acknowledging receipt of the VEDS data and includes it in the SIP final response to the INVITE. The metadata/control object is not included in provisional (e.g., 180) responses π
If the IVS gets an acknowledgment for a VEDS data object with received=false, that means the PSAP couldn't properly decode or process the VEDS. What the IVS does next is not defined (it might just log an error, for example) π Since the PSAP can request an updated VEDS during the call, if the initial VEDS is unsatisfactory in any way, the PSAP can choose to ask for another one π₯
A PSAP can ask the vehicle to send an updated VEDS data block during a call. To do that, the PSAP creates a metadata/control object requesting VEDS data and includes it as a body part of a SIP INFO request sent within the dialog. The IVS then includes an updated VEDS data object as a body part of a SIP INFO request and sends it within the dialog. If the IVS can't send the VEDS for any reason, it sends a metadata/control object instead, containing an <ack> element that acknowledges the request, plus an <actionResult> element with the "success" parameter set to "false" and a "reason" parameter (and optionally a "details" parameter) explaining why the request can't be done π Per [RFC6086], metadata/control objects and VEDS data are sent using the INFO package defined in Section 14.7. Also, to match how a VEDS or metadata/control block gets sent in a SIP message other than a SIP INFO request, one or more Call-Info header fields are included in the SIP INFO request referencing the VEDS or metadata/control block. See Section 14.7 for more on using SIP INFO requests within NG-ACN calls π¦
Any metadata/control object a PSAP sends can ask the vehicle to do something (like send a data block, flash lights, provide a camera feed, and so on) π The IVS sends an acknowledgment for any request other than a successfully executed send-data action. Multiple requests with the same "action:" value MUST be sent in separate metadata/control body parts (so there's no ambiguity in the acknowledgment) π For each metadata/control block received that contains one or more <request> elements (except for successfully executed send-data requests), the IVS sends a metadata/control object containing an <ack> element acknowledging the received metadata/control block, along with an <actionResult> element for each <request> element β¨
If the IVS knows that VEDS data it sent earlier has changed, it MAY send an unsolicited VEDS in any convenient SIP message, including a SIP INFO request during the call πΈ The PSAP sends an acknowledgment for an unsolicited VEDS object. If the IVS sent the unsolicited VEDS in a SIP INFO request, the acknowledgment goes out in a new SIP INFO request; otherwise, it's sent in the reply to the SIP request containing the VEDS π«Ά
8. Call Setup π
An IVS starting an NG-ACN call sends a SIP INVITE request using one of the SOS sub-services "SOS.ecall.automatic" or "SOS.ecall.manual" in the Request-URI. This SIP INVITE request includes standard sets of both crash and capabilities data, as described in Section 7 π¨
Entities along the path between the vehicle and the PSAP can identify the call as an ACN call and handle it appropriately π£οΈ The PSAP can identify the crash and capabilities data included in the SIP INVITE request by checking the Call-Info header fields for "purpose" parameters whose values start with EmergencyCallData. The PSAP can access the data it's capable of handling and is interested in by checking those "purpose" parameter values π§
This document extends [RFC8147] by reusing the call setup and other normative requirements, with one exception: in this document, support for the eCall MSD is OPTIONAL and support for VEDS is REQUIRED π This document also adds new attribute values to the metadata/control object defined in [RFC8147] π
9. New Metadata/Control Values β¨
okay so this section is where the metadata/control structure from [RFC8147] gets some brand-new attribute values, and bestie, it's giving main character energy π π
the <ack> element isn't just for the PSAP acknowledging crash data anymore. the IVS can send one back too π«Ά it uses it to acknowledge a request the PSAP made, and to say whether that request actually got carried out, but only in cases where the request wouldn't otherwise get an acknowledgment. like, if the PSAP asks the vehicle to send data and the vehicle sends it, the data itself counts as the success ack. iykyk π¦ (see Section 8 for the details)
the <capabilities> element is the vehicle's little "here's what I can do" list πβ¨ the IVS sends it from itself to the PSAP (like in the very first INVITE) so the PSAP knows the vehicle's powers. its child elements list every action and data type the vehicle supports, plus every lamp (light) and camera it has π
then there are new <request> values so the PSAP can ask the vehicle to do extra stuff π§
Mandatory Actions (the IVS and the PSAP MUST support):
- Transmit data object (VEDS MUST be supported; MSD MAY be supported)
Optional Actions (the IVS and the PSAP MAY support):
- Display and/or play static (pre-defined) message
- Display and/or speak dynamic text (text supplied in action)
- Flash or turn on or off a lamp (light)
- Honk horn
- Lock or unlock doors
- Enable a camera
the <ack> element says which object is being acknowledged (either a data object, or a metadata/control block holding <request> elements) and whether it worked or flopped π
the <capabilities> element has <request> children that describe the actions (including data types, lamps, and cameras) the IVS supports πΈ
the <request> element carries attributes that name the request and hold any info it needs, and it MAY have a <text> child for a dynamic message π the "action" attribute is mandatory and says which specific action it is. [RFC8147] set up an IANA registry for the allowed values, and this document adds new ones to that registry in Table 1. β¨
9.1. New Values for the "action" Attribute
these are the new "action" values π
msg-static: displays or plays a pre-defined message, translated for the language of the vehicle's interface π a registry for messages and their IDs gets created in Section 14.4. vehicles put the highest registered message in their <capabilities> element to say they support every message up to and including that value. the message identification registry is also defined in Section 14.4. only one static message is defined to start (it's listed in Table 2). since every compliant vehicle is expected to support all static messages in every language the vehicle supports, it's super important to keep the number of them small π so this registry runs under "Specification Required" rules as defined in [RFC5226], which needs a stable, public document and implies expert review of that publication.
msg-dynamic: displays or speaks (via text-to-speech) a message inside a child <text> element in the request π£οΈ
honk: sounds the horn π―
lamp: flashes a lamp (light) or turns it on or off π‘ the lamp is identified by a lamp ID token in an "element-id" attribute. the desired state is "on", "off", or "flash", set in a "requested-state" attribute, and how long that state lasts goes in a "persistence" attribute β° a registry of lamp identification values is defined in Section 14.5. the starting values (listed in Table 3) are head, interior, fog-front, fog-rear, brake, brake-center, position-front, position-rear, turn-left, turn-right, and hazard π¨
enable-camera: adds a one-way media stream (set up by a SIP re-INVITE sent by the vehicle) so the PSAP call taker can watch a camera feed πΉ a registry of camera identification values is defined in Section 14.6. the starting values (listed in Table 4) are backup, left-rear, right-rear, forward, rear-wide, lane, interior, night-front, night-rear, night-left, and night-right π
door-lock: locks or unlocks all the door locks π a "requested-state" attribute holds either "locked" or "unlocked" to say which one it should be.
Note that there is no "request" action to play dynamic media (such as an audio message). If the PSAP wants that, it can send a SIP re-INVITE to set up a one-way media stream for it π§
9.2. Example <request> Element
here's an example of what a <request> block can look like π
<?xml version="1.0" encoding="UTF-8"?>
<EmergencyCallData.Control
xmlns="urn:ietf:params:xml:ns:EmergencyCallData:control"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<request action="send-data" datatype="VEDS"/>
<request action="lamp" element-id="hazard"
requested-state="flash" persistence="PT1H"/>
<request action="msg-static" int-id="1"/>
<request action="msg-dynamic">
<text>Remain calm. Help is on the way.</text>
</request>
</EmergencyCallData.Control>
Figure 7: <request> Example π
9.3. The <ack> Element
the <ack> element is sent by the PSAP to acknowledge unsolicited data the IVS sent, and sent by the IVS to acknowledge a <request> element, except for a "send-data" request that succeeded π«Ά (for example, a request to show a message to the vehicle occupants gets acknowledged, but a request to transmit VEDS data doesn't, because the VEDS that gets transmitted is the acknowledgment). an <ack> sent by an IVS points to the unique ID of the metadata/control object holding the request(s). for each request being acknowledged, it says whether the request was successfully performed and, if it wasn't, why not π
9.3.1. Examples of the <ack> Element
<?xml version="1.0" encoding="UTF-8"?>
<EmergencyCallData.Control
xmlns="urn:ietf:params:xml:ns:EmergencyCallData:control"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ack ref="1234567890@atlanta.example.com">
<actionResult action="msg-dynamic" success="true"/>
<actionResult action="lamp" success="false" reason="unable"
details="The requested lamp is inoperable"/>
</ack>
</EmergencyCallData.Control>
Figure 8: Example <ack> from IVS to PSAP π§Ύ
9.4. The <capabilities> Element
the <capabilities> element [RFC8147] is sent by the IVS to tell the PSAP what it can do πβ¨
it has a <request> child element for each action the vehicle supports. the vehicle MUST support sending the VEDS data object, so it includes at least a <request> child with the "action" attribute set to "send-data" and the "supported-values" attribute listing every data block the IVS supports, which MUST include "VEDS". all other actions are OPTIONAL π
if "msg-static" is supported, there's a <request> child with the "action" attribute set to "msg-static" and the "int-id" attribute set to the highest static message the vehicle supports. a registry to map "int-id" values to static text messages is created in Section 14.4. by putting its highest supported static message number in <capabilities>, the vehicle says it supports all the static messages in the registry up to and including that value πΈ
if "lamp" is supported, there's a <request> child with the "action" attribute set to "lamp" and the "supported-values" attribute set to all the supported lamp IDs. a registry for lamp ID values is created in Section 14.5 π‘
if "enable-camera" is supported, there's a <request> child with the "action" attribute set to "enable-camera" and the "supported-values" attribute set to all the supported camera IDs. a registry for camera ID values is created in Section 14.6 πΉ
9.4.1. Example <capabilities> Element
<?xml version="1.0" encoding="UTF-8"?>
<EmergencyCallData.Control
xmlns="urn:ietf:params:xml:ns:EmergencyCallData:control"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<capabilities>
<request action="send-data" supported-values="VEDS"/>
<request action="lamp"
supported-values="head;interior;fog-front;
fog-rear;brake;position-front;position-rear;
turn-left;turn-right;hazard"/>
<request action="msg-static" int-id="3"/>
<request action="msg-dynamic"/>
<request action="honk"/>
<request action="enable-camera"
supported-values="backup; interior"/>
<request action="door-lock"/>
</capabilities>
</EmergencyCallData.Control>
Figure 9: <capabilities> Example π
10. Test Calls π§ͺ
okay so test calls are a bit of a special case π₯Ή an NG-ACN test call gets recognized and treated somewhat like a real NG-ACN call, but it does NOT get emergency call treatment and a PSAP call taker doesn't handle it. how test NG-ACN calls are handled is outside the scope of this document π usually the test call facility lets the IVS, the user, or the TSP check that an NG-ACN call can be set up successfully with voice and/or other media. the IVS might also be able to check that the crash data got through π
this document builds on [RFC8147], which inherits the ability to use test call functionality from Section 15 of [RFC6881]. a service URN starting with "test." means it's a test call π¦ per [RFC8147], "urn:service:test.sos.ecall" is used for test NG-ACN calls.
MNOs, emergency authorities, ESInets, and PSAPs handle a vehicle call that requests the "test" service URN so the desired functionality gets tested, but that's outside the scope of this document π«§ (one possibility: MNOs route these calls as non-emergency calls to an ESInet, which routes them to a PSAP that supports NG-ACN calls. the PSAP accepts the test call, sends a crash data acknowledgment, and plays an audio clip (for example, saying the call reached an appropriate PSAP and the vehicle data was processed successfully) on top of supporting media loopback per [RFC6881].) β¨
Note that since test calls are placed using "test" as the parent service URN and "sos" as a child, such calls are NOT treated as emergency calls, so some functionality might not apply (such as preemption, or availability for devices lacking service ("non-service-initialized" (NSI) devices) if those are available for emergency calls). π«
11. Example Call Initiation β¨
okay so Figure 10 is basically the story of how an NG-ACN call starts ππ¦ the vehicle kicks things off by calling through an MNO, and the MNO hands it to an ESInet, same as any emergency call would go. the ESInet then picks an NG-ACN-capable PSAP using the location info and the fact that it's an NG-ACN call (it's giving smart routing π ). the call hits the Emergency Services Routing Proxy (ESRP) first, since that's the entry point to the ESInet, and the ESRP sends it on to the right NG-ACN-capable PSAP, where a call taker finally picks up π and in deployments with no ESInet at all, the MNO just routes the call straight to an appropriate NG-ACN-capable PSAP. no detours needed π«Ά
+---------------------------------------+
| |
+------------+ | +-------+ |
| | | | PSAP2 | |
| | | +-------+ |
| Originating| | |
| Mobile | | +------+ +----------------------+ |
Vehicle-->| Network |--|->| ESRP |--->| PSAP1 --> Call Taker | |
| | | +------+ +----------------------+ |
| | | |
+------------+ | +-------+ |
| | PSAP3 | |
| +-------+ |
| |
| |
| |
| ESInet |
+---------------------------------------+
Figure 10: Example Call Initiation
Figure 11 shows an example SIP emergency call INVITE request that the IVS generates ππ₯ it packs in a PIDF-LO with vehicle-determined location info, a VEDS block with crash data, and a metadata/control block with capabilities data (so much info, bestie π). the INVITE's request URI has the urn:service:sos.ecall.automatic service URN. for brevity, the example VEDS block skips the VEDS location info, even though that's generally there π
the VEDS data structure is giving "crashed vehicle report" π it says the car is a model year 2015 Saab 9-5 (a car that does not exist π« ), and the front airbag deployed because of the crash. the <VehicleBodyCategoryCode> is set to "101", so it's a passenger car, and the <ConvertibleIndicator> is "false", so it's not a convertible π
next up is <VehicleCrashPulse>, which tells us the force of impact, based on the change in velocity over the duration of the crash pulse, was 100 MPH π₯ the principal direction of the force is "12" (that's 12 o'clock, a frontal collision) and it lives in <CrashPulsePrincipalDirectionOfForceValue>. the <CrashPulseRolloverQuarterTurnsValue> counts the quarter turns in a rollover as a number, and in our case it's 1 π
no roll bar was deployed, as <VehicleRollbarDeployedIndicator> being "false" shows πΈ
then there's the seat belt and seat sensor stuff for each seat position. in our example we've got the driver seat (value "1" in <VehicleSeatLocationCategoryCode>), and it shows the seat belt was monitored (<VehicleSeatbeltMonitoredIndicator>), the seat belt was fastened (<VehicleSeatbeltFastenedIndicator>), and the seat sensor said the seat was occupied (<VehicleSeatOccupiedIndicator>) πͺβ¨
the vehicle's empty weight is 600 kilograms in our example π§
<SevereInjuryIndicator> is "true", which means there's a likelihood that a vehicle occupant has a severe injury needing immediate trauma care. that's a serious one, so please take it seriously π«Ά
the rest of the extra info includes whether there's fuel leakage (<FuelLeakingIndicator>), whether the vehicle got hit multiple times (<MultipleImpactsIndicator>), how the vehicle is oriented at final rest (<VehicleFinalRestOrientationCategoryCode>), and that no parts of the vehicle are currently detected as being on fire (<VehicleFireIndicator>) π₯π
ββοΈ
INVITE urn:service:sos.ecall.automatic SIP/2.0
To: urn:service:sos.ecall.automatic
From: <sip:+13145551111@example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
Geolocation: <cid:target123@example.com>
Geolocation-Routing: no
Call-Info: <cid:1234567890@atlanta.example.com>;
purpose=EmergencyCallData.VEDS
Call-Info: <cid:1234567892@atlanta.example.com>;
purpose=EmergencyCallData.Control
Accept: application/sdp, application/pidf+xml,
application/EmergencyCallData.Control+xml
Recv-Info: EmergencyCallData.eCall
Allow: INVITE, ACK, PRACK, INFO, OPTIONS, CANCEL, REFER, BYE,
SUBSCRIBE, NOTIFY, UPDATE
CSeq: 31862 INVITE
Content-Type: multipart/mixed; boundary=boundary1
Content-Length: ...
--boundary1
Content-Type: application/sdp
...Session Description Protocol (SDP) goes here
--boundary1
Content-Type: application/pidf+xml
Content-ID: <target123@atlanta.example.com>
Content-Disposition: by-reference;handling=optional
<?xml version="1.0" encoding="UTF-8"?>
<presence
xmlns="urn:ietf:params:xml:ns:pidf"
xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model"
xmlns:gp="urn:ietf:params:xml:ns:pidf:geopriv10"
xmlns:dyn="urn:ietf:params:xml:ns:pidf:geopriv10:dynamic"
xmlns:gml="http://www.opengis.net/gml"
xmlns:gs="http://www.opengis.net/pidflo/1.0"
entity="sip:+13145551111@example.com">
<dm:device id="123">
<gp:geopriv>
<gp:location-info>
<gml:Point srsName="urn:ogc:def:crs:EPSG::4326">
<gml:pos>-34.407 150.883</gml:pos>
</gml:Point>
<dyn:Dynamic>
<dyn:heading>278</dyn:heading>
<dyn:direction></dyn:direction>
</dyn:Dynamic>
</gp:location-info>
<gp:usage-rules/>
<method>gps</method>
</gp:geopriv>
<timestamp>2012-04-5T10:18:29Z</timestamp>
<dm:deviceID>1M8GDM9A_KP042788</dm:deviceID>
</dm:device>
</presence>
--boundary1
Content-Type: application/EmergencyCallData.VEDS+xml
Content-ID: <1234567890@atlanta.example.com>
Content-Disposition: by-reference;handling=optional
<?xml version="1.0" encoding="UTF-8"?>
<AutomatedCrashNotification xmlns="http://www.veds.org/acn/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Crash>
<CrashVehicle>
<ItemMakeName xmlns="http://niem.gov/niem/niem-core/2.0">
Saab
</ItemMakeName>
<ItemModelName xmlns="http://niem.gov/niem/niem-core/2.0">
9-5
</ItemModelName>
<ItemModelYearDate
xmlns="http://niem.gov/niem/niem-core/2.0">
2015
</ItemModelYearDate>
<Airbag>
<AirbagCategoryCode>FRONT</AirbagCategoryCode>
<AirbagDeployedIndicator>true
</AirbagDeployedIndicator>
</Airbag>
<ConvertibleIndicator>false</ConvertibleIndicator>
<PowerSourceCategoryCode>MAIN</PowerSourceCategoryCode>
<VehicleBodyCategoryCode
xmlns="http://niem.gov/niem/domains/jxdm/4.1">
101
</VehicleBodyCategoryCode>
<VehicleCrashPulse>
<CrashPulseChangeInVelocityMeasure>
<MeasurePointValue
xmlns="http://niem.gov/niem/niem-core/2.0">
100
</MeasurePointValue>
<MeasureUnitText
xmlns="http://niem.gov/niem/niem-core/2.0">
MPH</MeasureUnitText>
</CrashPulseChangeInVelocityMeasure>
<CrashPulsePrincipalDirectionOfForceValue>12
</CrashPulsePrincipalDirectionOfForceValue>
<CrashPulseRolloverQuarterTurnsValue>1
</CrashPulseRolloverQuarterTurnsValue>
</VehicleCrashPulse>
<VehicleRollbarDeployedIndicator>false
</VehicleRollbarDeployedIndicator>
<VehicleSeat>
<VehicleSeatLocationCategoryCode>1
</VehicleSeatLocationCategoryCode>
<VehicleSeatOccupiedIndicator>true
</VehicleSeatOccupiedIndicator>
<VehicleSeatbeltFastenedIndicator>true
</VehicleSeatbeltFastenedIndicator>
<VehicleSeatbeltMonitoredIndicator>true
</VehicleSeatbeltMonitoredIndicator>
</VehicleSeat>
<VehicleUnladenWeightMeasure
xmlns="http://niem.gov/niem/niem-core/2.0">
<MeasurePointValue
xmlns="http://niem.gov/niem/niem-core/2.0">
600
</MeasurePointValue>
<MeasureUnitText
xmlns="http://niem.gov/niem/niem-core/2.0">
kilogram
</MeasureUnitText>
</VehicleUnladenWeightMeasure>
</CrashVehicle>
<FuelLeakingIndicator>true</FuelLeakingIndicator>
<MultipleImpactsIndicator>false</MultipleImpactsIndicator>
<SevereInjuryIndicator>true</SevereInjuryIndicator>
<VehicleFinalRestOrientationCategoryCode>Driver
</VehicleFinalRestOrientationCategoryCode>
<VehicleFireIndicator>false</VehicleFireIndicator>
</Crash>
</AutomatedCrashNotification>
--boundary1
Content-Type: application/EmergencyCallData.Control+xml
Content-ID: <1234567892@atlanta.example.com>
Content-Disposition: by-reference;handling=optional
<?xml version="1.0" encoding="UTF-8"?>
<EmergencyCallData.Control
xmlns="urn:ietf:params:xml:ns:EmergencyCallData:control"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<capabilities>
<request action="send-data" supported-datatypes="VEDS"/>
<request action="lamp"
supported-values="head;interior;fog-front;fog-rear;
brake;position-front;position-rear;turn-left;
turn-right;hazard"/>
<request action="msg-static" int-id="3"/>
<request action="msg-dynamic"/>
<request action="honk"/>
<request action="enable-camera"
supported-values="backup;interior"/>
<request action="door-lock"/>
</capabilities>
</EmergencyCallData.Control>
--boundary1--
Figure 11: SIP INVITE for a Vehicle-Initiated Emergency Call
12. Security Considerations ππ
okay bestie, this section is SERIOUS but also kind of iconic, so let's go. π«Ά
Since this document relies on [RFC8147] and [RFC7852], the security considerations described in those specifications apply here. The security considerations of [RFC5069] apply as well. Implementors are cautioned to read and understand the discussion in those documents. πβ¨ no skipping the homework, periodt!
In emergency service systems where location data is supplied or determined with the assistance of an end host, it is possible that the location is incorrect, either intentionally (e.g., in a denial-of-service attack against the emergency services infrastructure) or due to a malfunctioning device. π the location could be WRONG, whether someone did it on purpose (like a denial-of-service attack on the emergency services infrastructure) or because a device is glitching. The reader is referred to [RFC7378] for a discussion of some of these vulnerabilities. π₯ go read that one too!
In addition to the security considerations discussion specific to the metadata/control object in [RFC8147], note that vehicles MAY decline to carry out any requested action (e.g., if the vehicle requires but is unable to verify the certificate used to sign the request). π so yes, a vehicle is allowed to say "nope" to a request. The vehicle MAY use any value in the reason registry to indicate why it did not take an action (e.g., the generic "unable" or the more specific "security-failure"). π it can explain itself with any reason from the registry, like a generic "unable" or a more specific "security-failure". Because some actions carry more potential risk than others (e.g., unlocking a door versus flashing lights), vehicle policy MAY decline to carry out some requests in some circumstances (e.g., decline a request to unlock doors, send an updated VEDS, or enable a camera received in a vehicle-terminated call while carrying out such requests received in a vehicle-initiated emergency call). π okay so not all actions are equal, lowkey. Unlocking a door is way riskier than flashing lights, so the vehicle's policy is allowed to turn down some of the risky stuff in some situations, like refusing to unlock doors, sending an updated VEDS, or turning on a camera that came in on a vehicle-terminated call while still doing those same things for requests that came in on a vehicle-initiated emergency call. π
13. Privacy Considerations π¦
Since this document builds on [RFC8147], which itself builds on [RFC7852], the data structures specified there, and the corresponding privacy considerations discussed there, apply here as well. The VEDS data structure contains optional elements that can carry identifying and personal information, both about the vehicle and about the owner, as well as location information, so it needs to be protected against unauthorized disclosure, as discussed in [RFC7852]. Local regulations may impose additional privacy protection requirements. π the privacy stuff from the earlier RFCs still counts, and the VEDS can have personal info (about the car AND the owner) plus location, so keeping it locked down is a MUST-level vibe. Local laws might add even MORE privacy rules on top, so check those too!
The additional functionality enabled by this document, such as access to vehicle camera streams, carries a burden of protection, so implementations need to be careful that access is only provided within the context of an emergency call or to an emergency services provider (e.g., by verifying that the request for camera access is signed by a certificate issued by an emergency services registrar). π₯π camera access is a BIG deal, so only give it out during an actual emergency call or to a real emergency services provider. Like, verify that the camera request is signed by a certificate from an emergency services registrar. No cap, that's the kind of check that keeps everyone safe. π«Ά
14. IANA Considerations π§
This document registers the application/EmergencyCallData.VEDS+xml MIME media type and adds "VEDS" to the "Emergency Call Data Types" registry. This document adds to and creates sub-registries in the "Emergency Call Metadata/Control Data" registry created in [RFC8147]. In addition, this document registers a new INFO package. π three registry moves in one section, bestie, it's a lot!
14.1. MIME Media Type Registration for application/EmergencyCall.VEDS+xml π
IANA has registered a new MIME media type according to the procedures of [RFC6838] and guidelines in [RFC7303]. β¨
MIME media type name: application
MIME subtype name: EmergencyCallData.VEDS+xml
Mandatory parameters: none
Optional parameters: charset
Indicates the character encoding of enclosed XML.
Encoding considerations:
Uses XML, which can employ 8-bit characters, depending on the
character encoding used. See Section 3.2 of RFC 7303
[RFC7303].
Security considerations:
This media type is designed to carry vehicle crash data
during an emergency call.
This data can contain personal information including vehicle
VIN, location, direction, etc. Appropriate precautions need
to be taken to limit unauthorized access, inappropriate
disclosure to third parties, and eavesdropping of this
information. Please refer to Sections 9 and 10 of [RFC7852]
for more information.
When this media type is contained in a signed or encrypted
body part, the enclosing multipart (e.g., multipart/signed
or multipart/encrypted) has the same Content-ID as the data
part. This allows an entity to identify and access the data
blocks it is interested in without having to dive deeply
into the message structure or decrypt parts it is not
interested in. (The "purpose" parameter in a Call-Info
header field identifies the data, and the CID URL points to
the data block in the body, which has a matching Content-ID
body part header field.)
Interoperability considerations: None
Published specification: [VEDS]
Applications which use this media type: Emergency Services
Additional information: None
Magic Number: None
File Extension: .xml
Macintosh file type code: TEXT
Persons and email addresses for further information:
Randall Gellens, rg+ietf@randy.pensive.org;
Hannes Tschofenig, Hannes.Tschofenig@gmx.net
Intended usage: LIMITED USE
Author:
This specification is a work item of the IETF ECRIT working
group, with mailing list address <ecrit@ietf.org>.
Change controller: The IESG <ietf@ietf.org>
The security considerations in that registration are a must-read, bestie: the VIN, location, and direction are personal, so limit who can see it and watch out for eavesdroppers. π Check Sections 9 and 10 of [RFC7852] for the full story.
14.2. Registration of the "VEDS" Entry in the Emergency Call Data Types Registry π
IANA has added "VEDS" to the "Emergency Call Data Types" registry, with a reference to this document; the "Data About" value is "The Call". The "Emergency Call Data Types" registry was established by [RFC7852]. π
14.3. New Action Values π¬
This document adds new values for the "action" attribute of the <request> element in the "Emergency Call Action" registry created by [RFC8147]. π«Ά
+---------------+-------------------------+
| Name | Description |
+---------------+-------------------------+
| msg-static | Section 9.1 of RFC 8148 |
| | |
| msg-dynamic | Section 9.1 of RFC 8148 |
| | |
| honk | Section 9.1 of RFC 8148 |
| | |
| lamp | Section 9.1 of RFC 8148 |
| | |
| enable-camera | Section 9.1 of RFC 8148 |
| | |
| door-lock | Section 9.1 of RFC 8148 |
+---------------+-------------------------+
Table 1: Emergency Call Action Registry New Values
14.4. Emergency Call Static Messages Registry π¬
This document creates a new sub-registry called "Emergency Call Static Messages" in the "Emergency Call Metadata/Control Data" registry established by [RFC8147]. Because compliant vehicles are expected to support all static messages translated into all languages supported by the vehicle, it is important to limit the number of such messages. As defined in [RFC5226], this registry operates under "Specification Required", which requires a stable, public document and implies expert review of the publication. The expert should determine that the document has been published by an appropriate emergency services organization (e.g., NENA, EENA, or APCO) or by the IETF with input from an emergency services organization, and that the proposed message is sufficiently distinguishable from other messages. π§ the bar is high, so only super clear, legit messages get in!
The contents of this registry are:
- ID: An integer identifier to be used in the "int-id" attribute of a metadata/control <request> element.
- Message: The text of the message. Messages are listed in the registry in English; vehicles are expected to implement translations into languages supported by the vehicle.
When new messages are added to the registry, the message text is determined by the registrant; IANA assigns the IDs. Each message is assigned a consecutive integer value as its ID. This allows an IVS to indicate by a single integer value that it supports all messages with that value or lower. The value 0 is reserved; usable messages start with 1. π’β¨ it's like a ladder: supporting 5 means you've got 1 through 5!
The initial set of values is listed in Table 2.
+----+--------------------------------------------------------------+
| ID | Message |
+----+--------------------------------------------------------------+
| 0 | Reserved |
| | |
| 1 | Emergency services has received your information and |
| | location but cannot speak with you right now. We will get |
| | help to you as soon as possible. |
+----+--------------------------------------------------------------+
Table 2: Emergency Call Static Messages Registry Initial Values
14.5. Emergency Call Vehicle Lamp IDs Registry π‘
This document creates a new sub-registry called "Emergency Call Vehicle Lamp IDs" in the "Emergency Call Metadata/Control Data" registry established by [RFC8147]. This new sub-registry uniquely identifies the names of automotive lamps (lights). As defined in [RFC5226], this registry operates under "Expert Review" rules. The expert should determine that the proposed lamp name is clearly understandable and is sufficiently distinguishable from other lamp names. π lamps need clear names so nobody gets confused!
The contents of this registry are:
- Name: The identifier to be used in the "element-id" attribute of a metadata/control <request> element.
- Description: A description of the lamp (light).
The initial set of values is listed in Table 3.
+----------------+---------------------------------------------+
| Name | Description |
+----------------+---------------------------------------------+
| head | The main lamps used to light the road ahead |
| | |
| interior | Interior lamp, often at the top center |
| | |
| fog-front | Front fog lamps |
| | |
| fog-rear | Rear fog lamps |
| | |
| brake | Brake indicator lamps |
| | |
| brake-center | Center high-mounted stop lamp |
| | |
| position-front | Front position/parking/standing lamps |
| | |
| position-rear | Rear position/parking/standing lamps |
| | |
| turn-left | Left turn/directional lamps |
| | |
| turn-right | Right turn/directional lamps |
| | |
| hazard | Hazard/four-way lamps |
+----------------+---------------------------------------------+
Table 3: Emergency Call Lamp ID Registry Initial Values
14.6. Emergency Call Vehicle Camera IDs Registry πΈ
okay so this section makes a brand new sub-registry called "Emergency Call Vehicle Camera IDs" π It lives inside the "Emergency Call Metadata/Control Data" registry that [RFC8147] set up. Its whole job is to give automotive cameras their own identifiers π¦
The registry runs under "Expert Review" rules, as defined in [RFC5226] π The expert has one main thing to check: the proposed camera name has to be clearly understandable AND sufficiently distinguishable from the other camera names. no copycats allowed π ββοΈ
Each entry has two fields:
Name: the identifier used in the "element-id" attribute of a control <request> element πΈ
Description: a description of the camera π
The starting set of values is in Table 4 π
+-------------+-----------------------------------------------------+
| Name | Description |
+-------------+-----------------------------------------------------+
| backup | Shows what is behind the vehicle, e.g., often used |
| | for driver display when the vehicle is in reverse. |
| | Also known as rearview, reverse, rear visibility, |
| | etc. |
| | |
| left-rear | Shows view to the left and behind (e.g., left-side |
| | rearview mirror or blind spot view) |
| | |
| right-rear | Shows view to the right and behind (e.g., right- |
| | side rearview mirror or blind spot view) |
| | |
| forward | Shows what is in front of the vehicle |
| | |
| rear-wide | Shows what is behind the vehicle (e.g., used by |
| | rear-collision detection systems), separate from |
| | backup view |
| | |
| lane | Used by systems to identify road lane and/or |
| | monitor the vehicle's position within lane |
| | |
| interior | Shows the interior (e.g., driver) |
| | |
| night-front | Night-vision view of what is in front of the |
| | vehicle |
| | |
| night-rear | Night-vision view of what is behind the vehicle |
| | |
| night-left | Night-vision view of what is to the left of the |
| | vehicle |
| | |
| night-right | Night-vision view of what is to the right of the |
| | vehicle |
+-------------+-----------------------------------------------------+
Table 4: Emergency Call Vehicle Camera IDs Registry Initial Values β¨
14.7. The EmergencyCallData.VEDS INFO Package π§
this section registers the EmergencyCallData.VEDS INFO package in the "Info Packages Registry" π
both endpoints (the IVS and the PSAP equipment) put "EmergencyCallData.VEDS" in a Recv-Info header field, per [RFC6086]. that's how they say "yep, I can receive SIP INFO messages carrying data like this" π«Ά
supporting this package means you can receive the NG-ACN-related body parts specified in this document π₯
any SIP INFO request carrying emergency call data from this document has its Info-Package header field set to "EmergencyCallData.VEDS", again per [RFC6086] π
the requirements of Section 10 of [RFC6086] are addressed in the following sections. receipts, bestie π
14.7.1. Overall Description π
this part explains what kind of info rides along in INFO requests for this package, and which applications and functionalities User Agents (UAs) can use it for π
SIP INFO requests for this package carry emergency call data as defined in this document. the application is vehicle-initiated emergency calls set up using SIP π the functionality is carrying vehicle data and metadata/control info between vehicles and PSAPs. it's giving connection β¨
14.7.2. Applicability π¦
this part explains why the INFO package mechanism got picked over the other options for this use case π€
the SIP INFO method was chosen after comparing the requirements against the intent and effects of INFO versus other approaches. those other approaches were the SIP MESSAGE method, SIP OPTIONS method, SIP re-INVITE method, media-plane transport, and non-SIP protocols π§
here's the tea π΅ the transport of emergency call data blocks happens inside a SIP emergency dialog, per Section 7, and is normally carried in the initial INVITE request and its response. INFO only gets used when emergency-call-related data needs to go out mid call π
SIP MESSAGE could work, but it isn't tied to a SIP dialog the way INFO is, so it might not be associated with the dialog. SIP OPTIONS or re-INVITE could also work, but they're seen as less clean than INFO π
SIP SUBSCRIBE/NOTIFY could be coerced into service, but the semantics don't fit well π subscribe/notify gives one-way communication made of (often multiple) notifications from notifier to subscriber, saying certain events in the notifier have happened. what's needed here is TWO-WAY communication of data related to the emergency dialog, so it's a hard no π ββοΈ
media-plane mechanisms got discounted too. the number of messages needing to be exchanged in a dialog is normally zero or very few, and the data is also very small. the overhead of user-plane setup (for example, using the Message Session Relay Protocol (MSRP) as transport) would be disproportionately large π
so, based on all that analysis, the SIP INFO method was chosen to provide mid-call data transport π
14.7.3. INFO Package Name π·οΈ
the INFO package name is EmergencyCallData.VEDS π
14.7.4. INFO Package Parameters πΈ
None
14.7.5. SIP Option-Tags β
None
14.7.6. INFO Request Body Parts π§
the body of an EmergencyCallData.VEDS INFO package is a multipart body. it can hold:
- zero or one application/EmergencyCallData.VEDS+xml parts (containing a VEDS data block)
- zero or more application/EmergencyCallData.Control+xml parts (containing a metadata/control object)
- zero or one application/EmergencyCallData.eCall.MSD parts (containing an MSD)
at least one VEDS, MSD, or metadata/control body part is expected. what happens when you receive a SIP INFO request with none of those is undefined π
the body parts are sent per [RFC6086]. on top of that, to line up with how these body parts get sent in non-INFO messages, each associated body part is referenced by a Call-Info header field at the top level of the SIP message. the body part has a Content-Disposition header field set to "By-Reference" π
a VEDS block, metadata/control block, or MSD is always enclosed in a multipart body part, even if it would otherwise be the only body part in the SIP message π«§ the outermost multipart that contains only body parts associated with the INFO package has a Content-Disposition value of "Info-Package" π
service providers in the call path are not expected to add Additional Data [RFC7852] to SIP INFO requests, unlike what they'd do with an initial INVITE request π ββοΈ
14.7.7. INFO Package Usage Restrictions π«
usage is limited to vehicle-initiated emergency calls as defined in this document. that's it, that's the rule π
14.7.8. Rate of INFO Requests π
the SIP INFO request is used within an established emergency call dialog to send requests, updated data, or an acknowledgment. requests are normally sent only on manual action from the PSAP call taker, who suspects some part of the vehicle state has changed π§βπ» updated data gets sent only when an aspect of previously sent data has changed β¨
so the rate of SIP INFO requests for this package is normally quite low π’ most dialogs are likely to have zero SIP INFO requests, and others can be expected to carry an occasional one π
14.7.9. INFO Package Security Considerations π
the MIME media type registrations for the data blocks that can ride along in this INFO package include a discussion of the security and/or privacy considerations specific to each block π for the security and privacy considerations of data carried in vehicle-initiated emergency calls, see Sections 12 and 13 π‘οΈ
14.7.10. Implementation Details π οΈ
see Sections 7 and 8 for protocol details π§©
14.7.11. Examples π‘
see Section 11 for protocol examples π
15. References π
15.1. Normative References π¦
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>.
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, DOI 10.17487/RFC5226, May 2008, <http://www.rfc-editor.org/info/rfc5226>.
[RFC6086] Holmberg, C., Burger, E., and H. Kaplan, "Session Initiation Protocol (SIP) INFO Method and Package Framework", RFC 6086, DOI 10.17487/RFC6086, January 2011, <http://www.rfc-editor.org/info/rfc6086>.
[RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type Specifications and Registration Procedures", BCP 13, RFC 6838, DOI 10.17487/RFC6838, January 2013, <http://www.rfc-editor.org/info/rfc6838>.
[RFC6881] Rosen, B. and J. Polk, "Best Current Practice for Communications Services in Support of Emergency Calling", BCP 181, RFC 6881, DOI 10.17487/RFC6881, March 2013, <http://www.rfc-editor.org/info/rfc6881>.
[RFC7303] Thompson, H. and C. Lilley, "XML Media Types", RFC 7303, DOI 10.17487/RFC7303, July 2014, <http://www.rfc-editor.org/info/rfc7303>.
[RFC7852] Gellens, R., Rosen, B., Tschofenig, H., Marshall, R., and J. Winterbottom, "Additional Data Related to an Emergency Call", RFC 7852, DOI 10.17487/RFC7852, July 2016, <http://www.rfc-editor.org/info/rfc7852>.
[RFC8147] Gellens, R. and H. Tschofenig, "Next-Generation Pan-European eCall", RFC 8147, DOI 10.17487/RFC8147, May 2017, <http://www.rfc-editor.org/info/rfc8147>.
[VEDS] APCO International, "Vehicular Emergency Data Set (VEDS)", Version 3.0, Prepared by the Advanced Automatic Crash Notification (AACN) Joint APCO/NENA Data Standardization Working Group, February 2012, <https://www.apcointl.org/resources/telematics/aacn-and-veds.html>.
15.2. Informative References π
okay so these are the informative refs, bestie π€ they aren't required reading to implement the thing, but they're the receipts behind the background stuff. Here they are, exactly as written:
[Bluetooth]
Bluetooth Special Interest Group (SIG), "Bluetooth
Specifications", <https://www.bluetooth.com/
specifications>.
[RFC5012] Schulzrinne, H. and R. Marshall, Ed., "Requirements for
Emergency Context Resolution with Internet Technologies",
RFC 5012, DOI 10.17487/RFC5012, January 2008,
<http://www.rfc-editor.org/info/rfc5012>.
[RFC5069] Taylor, T., Ed., Tschofenig, H., Schulzrinne, H., and M.
Shanmugam, "Security Threats and Requirements for
Emergency Call Marking and Mapping", RFC 5069,
DOI 10.17487/RFC5069, January 2008,
<http://www.rfc-editor.org/info/rfc5069>.
[RFC6443] Rosen, B., Schulzrinne, H., Polk, J., and A. Newton,
"Framework for Emergency Calling Using Internet
Multimedia", RFC 6443, DOI 10.17487/RFC6443, December
2011, <http://www.rfc-editor.org/info/rfc6443>.
[RFC7378] Tschofenig, H., Schulzrinne, H., and B. Aboba, Ed.,
"Trustworthy Location", RFC 7378, DOI 10.17487/RFC7378,
December 2014, <http://www.rfc-editor.org/info/rfc7378>.
[triage-2008]
National Center for Injury Prevention and Control,
"Recommendations from the Expert Panel: Advanced Automatic
Collision Notification and Triage of the Injured Patient",
Centers for Disease Control and Prevention, 2008,
<https://stacks.cdc.gov/view/cdc/5304/>.
[triage-2011]
National Center for Injury Prevention and Control,
"Guidelines for Field Triage of Injured Patients:
Recommendations of the National Expert Panel on Field
Triage", Centers for Disease Control and Prevention,
January 2012, <https://www.cdc.gov/mmwr/preview/mmwrhtml/
rr6101a1.htm>.
These cover the Bluetooth specs, the emergency-calling framework and its threat model, trustworthy location, and the CDC triage guidelines ππ
Acknowledgments π«Ά
big thank-yous to everyone who helped make this happen π Lena Chaponniere, Alissa Cooper, Stephen Edge, Christer Holmberg, Allison Mankin, and Dan Romascanu reviewed it and gave suggestions β¨ Robert Sparks and Paul Kyzivat helped with the SIP mechanisms π Michael Montag, Arnoud van Wijk, Ban Al-Bakri, Wes George, Gunnar Hellstrom, and Rex Buddenberg gave feedback πΈ and Ulrich Dietz helped with the early draft versions that eventually turned into this doc π¦ literally iconic team π
Authors' Addresses π
here's how to reach the authors π
Randall Gellens
Core Technology Consulting
Email: rg+ietf@coretechnologyconsulting.com
URI: http://www.coretechnologyconsulting.com
Brian Rosen
NeuStar, Inc.
470 Conrad Dr
Mars, PA 16046
United States of America
Email: br@brianrosen.net
Hannes Tschofenig
Individual
Email: Hannes.Tschofenig@gmx.net
URI: http://www.tschofenig.priv.at
And that's the whole thing, bestie π§β¨ end of RFC 8148 ππ
π¦ where this page comes from
- ietf: rfc8148 2017-05
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms