RFC 8148

Next-Generation Vehicle-Initiated Emergency Calls

πŸ“… published May 2017, from ietf

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 (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