diff options
Diffstat (limited to 'doc/rfc/rfc9248.txt')
-rw-r--r-- | doc/rfc/rfc9248.txt | 1901 |
1 files changed, 1901 insertions, 0 deletions
diff --git a/doc/rfc/rfc9248.txt b/doc/rfc/rfc9248.txt new file mode 100644 index 0000000..8da89e2 --- /dev/null +++ b/doc/rfc/rfc9248.txt @@ -0,0 +1,1901 @@ + + + + +Internet Engineering Task Force (IETF) B. Rosen +Request for Comments: 9248 June 2022 +Category: Standards Track +ISSN: 2070-1721 + + + Interoperability Profile for Relay User Equipment + +Abstract + + Video Relay Service (VRS) is a term used to describe a method by + which a hearing person can communicate with a sign language speaker + who is deaf, deafblind, or hard of hearing (HoH) or has a speech + disability using an interpreter (i.e., a Communications Assistant + (CA)) connected via a videophone to the sign language speaker and an + audio telephone call to the hearing user. The CA interprets using + sign language on the videophone link and voice on the telephone link. + Often the interpreters may be employed by a company or agency, termed + a "provider" in this document. The provider also provides a video + service that allows users to connect video devices to their service + and subsequently to CAs and other sign language speakers. It is + desirable that the videophones used by the sign language speaker + conform to a standard so that any device may be used with any + provider and that direct video calls between sign language speakers + work. This document describes the interface between a videophone and + a provider. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc9248. + +Copyright Notice + + Copyright (c) 2022 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Revised BSD License text as described in Section 4.e of the + Trust Legal Provisions and are provided without warranty as described + in the Revised BSD License. + +Table of Contents + + 1. Introduction + 2. Terminology + 3. Requirements Language + 4. General Requirements + 5. SIP Signaling + 5.1. Registration + 5.2. Session Establishment + 5.2.1. Normal Call Origination + 5.2.2. Dial-Around Origination + 5.2.3. RUE Contact Information + 5.2.4. Incoming Calls + 5.2.5. Emergency Calls + 5.3. Mid-Call Signaling + 5.4. URI Representation of Phone Numbers + 5.5. Transport + 6. Media + 6.1. SRTP and SRTCP + 6.2. Text-Based Communication + 6.3. Video + 6.4. Audio + 6.5. DTMF Digits + 6.6. Session Description Protocol + 6.7. Privacy + 6.8. Negative Acknowledgement, Picture Loss Indicator, and Full + Intraframe Request Features + 7. Contacts + 7.1. CardDAV Login and Synchronization + 7.2. Contacts Import/Export Service + 8. Video Mail + 9. Provisioning and Provider Selection + 9.1. RUE Provider Selection + 9.2. RUE Configuration Service + 9.2.1. Provider Configuration + 9.2.2. RUE Configuration + 9.2.3. Versions + 9.2.4. Examples + 9.2.5. Using the Provider Selection and RUE Configuration + Services Together + 9.3. OpenAPI Interface Descriptions + 9.3.1. Provider List + 9.3.2. Configuration + 10. IANA Considerations + 10.1. RUE Provider List Registry + 10.2. Registration of Rue-Owner Value of the Purpose Parameter + 11. Security Considerations + 12. Normative References + 13. Informative References + Acknowledgements + Author's Address + +1. Introduction + + Video Relay Service (VRS) is a form of Telecommunications Relay + Service (TRS) that enables people with hearing disabilities who use + sign language, such as American Sign Language (ASL), to communicate + with voice telephone users through video equipment. These services + also enable communication between such individuals directly in + suitable modalities, including any combination of sign language via + video, real-time text, and speech. + + This interoperability profile for Relay User Equipment (RUE) is a + profile of the Session Initiation Protocol (SIP) and related media + protocols that enables end-user equipment registration and calling + for VRS calls. It specifies the minimal set of call flows and IETF + and ITU-T standards that must be supported, provides guidance where + the standards leave multiple implementation options, and specifies + minimal and extended capabilities for RUE calls. + + Both subscriber-to-provider (interpreted) and direct subscriber-to- + subscriber calls are supported on this interface. While there are + some accommodations in this document to maximize backwards + compatibility with other devices and services that are used to + provide VRS service, backwards compatibility is not a requirement, + and some interwork may be required to allow direct video calls to + older devices. This document only describes the interface between + the device and the provider, not any other interface the provider may + have. + + The following illustrates a typical relay call. The RUE device and + the communications assistant (sign language interpreter) have + videophones. The hearing user has a telephone (mobile or fixed). + + ||== RUE Interface (this document) + || + \/ + +------+ +------+ - +--------+ - +-------+ + |User | |RUE | ( ) |Provider| ( ) |User | + |who is| |Device|<-(Internet)->| | |who is | + |Deaf |<->| | | |<-( PSTN )->|Hearing| + +------+ +------+ -------- +--------+ ------ +-------+ + ^ + | + +--------------+ + |Communications| + |Assistant | + +--------------+ + +2. Terminology + + Communications Assistant (CA): + A sign-language interpreter working for a VRS provider, providing + functionally equivalent phone service. + + Communication modality (modality): + A specific form of communication that may be employed by two + users, e.g., English voice, Spanish voice, American Sign Language, + English lipreading, or French real-time text. Here, one + communication modality is assumed to encompass both the language + and the way that language is exchanged. For example, English + voice and French voice are two different communication modalities. + + Default video relay service: + The video relay service operated by a subscriber's default VRS + provider. + + Default video relay service provider (default provider): + The VRS provider that registers and assigns a telephone number to + a specific subscriber and, by default, provides the VRS for + incoming voice calls to the user. The default provider, also by + default, provides the VRS for outgoing relay calls. The user can + have more than one telephone number, and each has a default + provider. + + Outbound dial-around call: + A relay call where the subscriber specifies the use of a VRS + provider other than the default VRS provider. This can be + accomplished by the user dialing a "front-door" number for a VRS + provider and signing or texting a phone number to call ("two- + stage"). Alternatively, this can be accomplished by the user's + RUE software instructing the server of its default VRS provider to + automatically route the call through the alternate provider to the + desired Public Switched Telephone Network (PSTN) directory number + ("one-stage"). Dial-around is per call; for any call, a user can + use the default VRS provider or any dial-around VRS provider. + + Full Intra Request (FIR): + A request to a video media sender, requiring that media sender to + send a decoder refresh point at the earliest opportunity. FIR is + sometimes known as "instantaneous decoder refresh request", "video + fast update request", or "fast update request". + + Point-to-Point Call (P2P Call): + A call between two RUEs, without including a CA. + + Relay call: + A call that allows people with hearing or speech disabilities to + use a RUE to talk to users of conventional voice services with the + aid of a CA to relay the communication. + + Relay service (RS): + A service that allows a registered subscriber to use a RUE to make + and receive relay calls, point-to-point calls, and relay-to-relay + calls. The functions provided by the relay service include the + provision of media links supporting the communication modalities + used by the caller and callee, user registration and validation, + authentication, authorization, automatic call distributor (ACD) + platform functions, routing (including emergency call routing), + call setup, mapping, call features (such as call forwarding and + video mail), and assignment of CAs to relay calls. + + Relay service provider (provider): + An organization that operates a relay service. A subscriber + selects a relay service provider to assign and register a + telephone number for their use, to register with for receipt of + incoming calls, and to provide the default service for outgoing + calls. + + Relay user: + Please refer to "subscriber". + + Relay user E.164 Number (user E.164): + The telephone number (in ITU-T E.164 format) assigned to the user. + + Relay User Equipment (RUE): + A SIP user agent (UA) enhanced with extra features to support a + subscriber in requesting, receiving, and using relay calls. A RUE + may take many forms, including a stand-alone device; an + application running on a general-purpose computing device, such as + a laptop, tablet, or smartphone; or proprietary equipment + connected to a server that provides the RUE interface. + + RUE interface: + The interfaces described in this document between a RUE and a VRS + provider who supports it. + + Sign language: + A language that uses hand gestures and body language to convey + meaning, including, but not limited to, American Sign Language + (ASL). + + Subscriber: + An individual who has registered with a provider and who obtains + service by using a RUE. This is the conventional telecom term for + an end-user customer, which in this case is a relay user. A user + may be a subscriber to more than one VRS provider. + + Video Relay Service (VRS): + A relay service for people with hearing or speech disabilities who + use sign language to communicate using video equipment (video RUE) + with other people in real time. The video link allows the CA to + view and interpret the subscriber's signed conversation and relay + the conversation back and forth with the other party. + +3. Requirements Language + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and + "OPTIONAL" in this document are to be interpreted as described in + BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all + capitals, as shown here. Lower- or mixed-case uses of these key + words are not to be interpreted as carrying special significance. + +4. General Requirements + + All HTTP/HTTPS [RFC9110] [RFC9112] connections specified throughout + this document MUST use HTTPS. Both HTTPS and all SIP connections + MUST use TLS conforming to at least [RFC7525] and MUST support + [RFC8446]. + + All text data payloads not otherwise constrained by a specification + in another standards document MUST be encoded as Unicode UTF-8. + + Implementations MUST support IPv4 and IPv6. Dual-stack support is + NOT required, and provider implementations MAY support separate + interfaces for IPv4 and IPv6 by having more than one server in the + appropriate SRV record where there is either an A or AAAA record in + each server DNS record but not both. The same version of IP MUST be + used for both signaling and media of a call unless Interactive + Connectivity Establishment (ICE) [RFC8445] is used; in which case, + candidates may explicitly offer IPv4, IPv6, or both for any media + stream. + +5. SIP Signaling + + Implementations of the RUE interface MUST conform to the following + core SIP standards: + + * [RFC3261] (Base SIP) + + * [RFC3263] (Locating SIP Servers) + + * [RFC3264] (Offer/Answer) + + * [RFC3840] (User Agent Capabilities) + + * [RFC5626] (Outbound) + + * [RFC8866] (Session Description Protocol) + + * [RFC3323] (Privacy) + + * [RFC3605] (RTCP Attribute in SDP) + + * [RFC3311] (UPDATE Method) + + * [RFC5393] (Loop-Fix) + + * [RFC5658] (Record-Route Fix) + + * [RFC5954] (ABNF Fix) + + * [RFC3960] (Early Media) + + * [RFC6442] (Geolocation Header Field) + + In the above documents, the RUE device conforms to the requirements + of a SIP user agent, and the provider conforms to the requirements of + the registrar and proxy server where the document specifies different + behavior for different roles. For providers offering a video mail + service, [RFC6665] (SIP Events) MUST be implemented to support the + Message-Waiting Indicator (MWI) (see Section 8). + + In addition, implementations MUST conform to: + + * [RFC3327] (Path Header Field) + + * [RFC8445] and [RFC8839] (ICE) + + * [RFC3326] (Reason Header Field) + + * [RFC3515] (REFER Method) + + * [RFC3891] (Replaces Header Field) + + * [RFC3892] (Referred-By Header Field) + + Implementations MUST implement full ICE, although they MAY interwork + with user agents that implement ICE-lite. + + Implementations MUST include a "User-Agent" header field uniquely + identifying the RUE application, platform, and version in all SIP + requests and MUST include a "Server" header field with the same + content in SIP responses. + + Implementations intended to support mobile platforms MUST support + [RFC8599] and MUST use it as at least one way to support waking up + the client from the background state. + + The SIP signaling for registration and placing/receiving calls + depends on the configuration of various values into the RUE device. + Section 9.2 describes the configuration mechanism that provides + values that are used in the signaling. When the device starts, the + configuration mechanism is run, which retrieves the configuration + data; then, SIP registration occurs using the values from the + configuration. After registration, calls may be sent or received by + the RUE device. + +5.1. Registration + + The RUE MUST register with a SIP registrar, following [RFC3261] and + [RFC5626], at a provider it has an account with. If the + configuration (see Section 9.2) contains multiple "outbound-proxies" + in "RueConfigurationData", then the RUE MUST use them as specified in + [RFC5626] to establish multiple flows. + + The Request-URI for the REGISTER request MUST contain the "provider- + domain" from the configuration. The To URI and From URI MUST be + identical URIs and formatted as follows: + + * if "user-name" is provided: "username@provider-domain" + + * if "user-name" is not provided: as specified in Section 5.4, use + "phone-number" and "provider-domain" from the configuration + + The RUE determines the URI to resolve by initially determining if one + or more "outbound-proxies" are configured. If they are configured, + the URI will be that of one of the "outbound-proxies". If no + "outbound-proxies" are configured, the URI will be the Request-URI + from the REGISTER request. The RUE extracts the domain from that URI + and consults the DNS record for that domain. The DNS entry MUST + contain NAPTR records conforming to [RFC3263]. One of those NAPTR + records MUST specify TLS as the preferred transport for SIP. For + example, a DNS NAPTR query for "sip: p1.red.example.net" could + return: + + IN NAPTR 50 50 "s" "SIPS+D2T" "" _sips._tcp.p1.red.example.net + IN NAPTR 90 50 "s" "SIP+D2T" "" _sip._tcp.p1.red.example.net + + If the RUE receives a 439 (First Hop Lacks Outbound Support) response + to a REGISTER request, it MUST reattempt registration without using + the outbound mechanism. + + The registrar MAY authenticate the RUE using SIP digest + authentication. The credentials to be used MUST come from the + configuration in Section 9.2: "user-name" if provided or "phone- + number" if user-name is not provided, and "sip-password". This + "user-name"/"sip-password" combination SHOULD NOT be the same as that + used for other purposes, except as expressly described below, such as + retrieving the RUE configuration or logging into the provider's + customer service portal. [RFC8760] MUST be supported by all + implementations, and SHA-512 digest algorithms MUST be supported. + + If the registration request fails with an indication that credentials + from the configuration are invalid, then the RUE MUST retrieve a + fresh version of the configuration. If credentials from a freshly + retrieved configuration are found to be invalid, then the RUE MUST + cease attempts to register and inform the RUE user of the problem. + + Support for multiple simultaneous registrations with multiple + providers by the RUE is OPTIONAL for the RUE (and providers do not + need any support for this option). + + Multiple simultaneous RUE SIP registrations from different RUE + devices with the same SIP URI SHOULD be permitted by the provider. + The provider MAY limit the total number of simultaneous + registrations. When a new registration request is received that + results in exceeding the limit on simultaneous registrations, the + provider MAY then prematurely terminate another registration; + however, it SHOULD NOT do this if it would disconnect an active call. + + If a provider prematurely terminates a registration to reduce the + total number of concurrent registrations with the same URI, it SHOULD + take some action to prevent the affected RUE from automatically re- + registering and re-triggering the condition. + +5.2. Session Establishment + +5.2.1. Normal Call Origination + + After initial SIP registration, the RUE adheres to SIP [RFC3261] + basic call flows, as documented in [RFC3665]. + + A RUE device MUST route all outbound calls through an outbound proxy + if configured. + + The SIP URIs in the To field and the Request-URI MUST be formatted as + specified in Section 5.4 using the destination phone number or as SIP + URIs as provided in the configuration (Section 9.2). The domain + field of the URIs SHOULD be the "provider-domain" from the + configuration (e.g., sip:+15551234567@red.example.com;user=phone), + except that an anonymous call would not use the provider domain. + + Anonymous calls MUST be supported by all implementations. An + anonymous call is signaled per [RFC3323]. + + The From URI MUST be formatted as specified in Section 5.4, using the + "phone-number" and "provider-domain" from the configuration. It + SHOULD also contain the display-name from the configuration when + present. (Please refer to Section 9.2.) + + Negotiated media MUST follow the requirements specified in Section 6 + of this document. + + To allow time for an unanswered call to time out and direct it to a + videomail server, the User Agent Client MUST NOT impose a time limit + less than the default SIP INVITE transaction timeout of 3 minutes. + +5.2.2. Dial-Around Origination + + Providers and RUE devices MUST support both one-stage and two-stage + dial-around. + + Outbound dial-around calls allow a RUE user to select any provider to + provide interpreting services for any call. "Two-stage" dial-around + calls involve the RUE calling a telephone number that reaches the + dial-around provider and using signing or dual-tone multi-frequency + (DTMF) to provide the called party's telephone number. In two-stage + dial-around, the To URI is the "front-door" URI (see Section 9.2) in + "ProviderConfigurationData" of the dial-around provider. The RUE + Provider Selection service (Section 9.1) can be used by the RUE to + obtain a list of providers; then, the provider configuration + (Section 9.2.1) can be used to find the front-door URI for each of + these providers. + + One-stage dial-around is a method where the called party's telephone + number is provided in the To URI and the Request-URI, using the + domain of the dial-around provider. + + For one-stage dial-around, the RUE MUST follow the procedures in + Section 5.2.1 with the following exception: the domain part of the + SIP URIs in the To field and the Request-URI MUST be the domain of + the dial-around provider discovered as described in Section 9.1. + + The following is a partial example of a one-stage dial-around call + from VRS user +1-555-222-0001 hosted by red.example.com to a hearing + user +1-555-123-4567 using dial-around to green.example.com for the + relay service. Only important details of the messages are shown, and + many header fields have been omitted: + + ,-+-. ,----+----. ,-----+-----. + |RUE| |Default | |Dial-Around| + | | |Provider | | Provider | + `-+-' `----+----' `-----+-----' + | | | + | [1] INVITE | | + |-------------->| [2] INVITE | + | |-------------->| + + Message Details: + + [1] INVITE Rue -> Default Provider + + INVITE sip:+15551234567@green.example.net;user=phone SIP/2.0 + To: <sip:+15551234567@green.example.net;user=phone> + From: "Bob Smith" <sip:+15552220001@red.example.net;user=phone> + + [2] INVITE Default Provider -> Dial-Around Provider + + INVITE sip:+15551234567@green.example.net;user=phone SIP/2.0 + To: <sip:+15551234567@green.example.net;user=phone> + From: "Bob Smith" sip:+15552220001@red.example.net;user=phone + P-Asserted-Identity: sip:+15552220001@red.example.net + + Figure 1: One-Stage Dial-Around + +5.2.3. RUE Contact Information + + To identify the owner of a RUE, the initial INVITE for a call from a + RUE, or the 200 OK the RUE uses to accept a call, identifies the + owner by sending a Call-Info header field with a purpose parameter of + "rue-owner". The URI MAY be an HTTPS URI or Content-ID URL. The + latter is defined by [RFC2392] to locate message body parts. This + URI type is present in a SIP message to convey the RUE ownership + information as a MIME body. The form of the RUE ownership + information is an xCard [RFC6351]. Please refer to [RFC6442] for an + example of using content indirection URLs in SIP messages. Note that + use of the content indirection URL usually implies multiple message + bodies ("mime/multipart"). The RUE owner is the entity that has + local control over the device that is not necessarily the legal owner + of the equipment. It often is the user, but that is not necessarily + true. While no minimum fields in the xCard are specified, the name, + address, phone number, and email address of the RUE owner are + expected to be supplied. + +5.2.4. Incoming Calls + + The RUE MUST only accept inbound calls sent to it by a proxy + mentioned in the configuration. + + If multiple simultaneous RUE SIP registrations from different RUE + devices with the same SIP URI exist, the provider MUST parallel fork + the call to all registered RUEs so that they ring at the same time. + The first RUE to reply with a 200 OK answers the call, and the + provider MUST cancel other call branches using a CANCEL request. + +5.2.5. Emergency Calls + + Implementations MUST conform to [RFC6881] for handling of emergency + calls, except that if the device is unable to determine its own + location, it MAY send the emergency call without a Geolocation header + field and without a Route header field (since it would be unable to + query the Location-to-Service Translation (LoST) server for a route, + per [RFC6881]). If an emergency call arrives at the provider without + a Geolocation header field, the provider MUST supply location by + adding the Geolocation header field and MUST supply the route by + querying the LoST server with that location. + + If the emergency call is to be handled using existing country- + specific procedures, the provider is responsible for modifying the + INVITE to conform to the country-specific requirements. In this + case, the location MAY be extracted from the [RFC6881] conformant + INVITE and used to propagate it to the appropriate country-specific + entities. If the configuration specifies it, an implementation of a + RUE device MAY send a Geolocation header field containing its + location in the REGISTER request. If implemented, users MUST be + offered an opt-out. Country-specific procedures might require the + location to be preloaded in some entity prior to placing an emergency + call; however, the RUE may have a more accurate and timely device + location than the manual, preloaded entry. That information MAY be + used to populate the location to appropriate country-specific + entities. Re-registration SHOULD be used to update the location, so + long as the rate of re-registration is limited if the device is + moving. + + Implementations MUST implement additional data [RFC7852]. RUE + devices MUST implement data provider information, device information, + and owner/subscriber information blocks. + +5.3. Mid-Call Signaling + + Implementations MUST support re-INVITE to renegotiate media session + parameters (among other uses). Per Section 6.8, implementations MUST + be able to support an INFO message for full frame refresh for devices + that do not support SRTCP (please refer to Section 6.1). + Implementations MUST support an in-dialog REFER (as described in + [RFC3515] and updated by [RFC7647], and including support for + norefersub per [RFC4488]) with the Replaces header field [RFC3891] to + enable call transfer. + +5.4. URI Representation of Phone Numbers + + SIP URIs constructed from non-URI sources (dial strings) and sent to + SIP proxies by the RUE MUST be represented as follows, depending on + whether they can be represented as an E.164 number. In this section, + "expressed as an E.164 number" includes numbers, such as toll-free + numbers that are not actually E.164 numbers but have the same format. + + A dial string that can be expressed as an E.164 phone number MUST be + represented as a SIP URI with a URI ";user=phone" tag. The user part + of the URI MUST be in conformance with "global-number", as defined in + [RFC3966]. The user part MUST NOT contain any "visual-separator" + characters, as defined in [RFC3966]. + + Dial strings that cannot be expressed as E.164 numbers MUST be + represented as dialstring URIs, as specified by [RFC4967], e.g., + sip:411@red.example.net;user=dialstring. + + The domain part of relay service URIs and User Address of Records + (AoR) MUST resolve (per [RFC3263]) to globally routable IPv4 and/or + IPv6 addresses. + +5.5. Transport + + Implementations MUST conform to [RFC8835], except for its guidance on + the WebRTC data channel, which this specification does not use. See + Section 6.2 for how RUE supports real-time text without the data + channel. + + Implementations MUST support SIP outbound [RFC5626] (please also + refer to Section 5.1). + +6. Media + + This specification adopts the media specifications for WebRTC + [RFC8825]. Where WebRTC defines how interactive media communications + may be established using a browser as a client, this specification + assumes a normal SIP call. Various RTPs, RTCPs, SDPs, and specific + media requirements specified for WebRTC are adopted for this + document. Explicit requirements from the WebRTC suite of documents + are described below . + + To use WebRTC with this document, a gateway that presents a WebRTC + server interface towards a browser and a RUE client interface towards + a provider is assumed. The gateway would interwork signaling and, as + noted below, interwork at least any real-time text media in order to + allow a standard browser-based WebRTC client to be a VRS client. The + combination of the browser client and the gateway would be a RUE + user. This document does not specify the gateway. + + The following sections specify the WebRTC documents to which + conformance is required. "Mandatory to Implement" means a conforming + implementation MUST implement the specified capability. It does not + mean that the capability must be used in every session. For example, + Opus is a Mandatory-to-Implement audio codec, and all conforming + implementations must support Opus. However, an implementation + presenting a call across the RUE interface (where the call originates + in the PSTN or an older, non-RUE-compatible device, which only offers + G.711 audio) does not need to include the Opus codec in the offer, + since it cannot be used with that call. Conformance to this document + allows end-to-end RTCP and media congestion control for audio and + video. + +6.1. SRTP and SRTCP + + Implementations MUST support [RFC8834], except that MediaStreamTracks + are not used. Implementations MUST conform to Section 6.4 of + [RFC8827]. + +6.2. Text-Based Communication + + Implementations MUST support real-time text [RFC4102] [RFC4103] via + T.140 media. One original and two redundant generations MUST be + transmitted and supported with a 300 ms transmission interval. + Implementations MUST support [RFC9071], especially for emergency + calls. Note that [RFC4103] is not how real-time text is transmitted + in WebRTC, and some form of transcoder would be required to interwork + real-time text in the data channel of WebRTC to [RFC4103] real-time + text. + + Transport of T.140 real-time text in WebRTC is specified in + [RFC8865], using the WebRTC data channel. [RFC8865] also has some + advice on how gateways between [RFC4103] and [RFC8865] should + operate. It is RECOMMENDED that [RFC8865], including multiparty + support, be used for communication with browser-based WebRTC + implementations. Implementations MUST support [RFC9071]. + +6.3. Video + + Implementations MUST conform to [RFC7742] with the following + exceptions: only H.264, as specified in [RFC7742], is Mandatory to + Implement, and VP8 support is OPTIONAL at both the device and + providers. This is because backwards compatibility is desirable, and + older devices do not support VP8. + +6.4. Audio + + Implementations MUST conform to [RFC7874]. + +6.5. DTMF Digits + + Implementations MUST support the "audio/telephone-event" [RFC4733] + media type. They MUST support conveying event codes 0 through 11 + (DTMF digits "0"-"9", "*","#") defined in Table 7 of [RFC4733]. + Handling of other tones is OPTIONAL. + +6.6. Session Description Protocol + + The SDP offers and answers MUST conform to the SDP rules in [RFC8829] + except that the RUE interface uses SIP transport for SDP. The SDP + for real-time text MUST specify the T.140 payload type [RFC4103]. + +6.7. Privacy + + The RUE MUST provide for user privacy by implementing a local one-way + mute, without signaling, for both audio and video. However, RUE MUST + maintain any states in the network (e.g., NAT bindings) by + periodically sending media packets on all active media sessions + containing silence, comfort noise, blank screen, etc., per [RFC6263]. + +6.8. Negative Acknowledgement, Picture Loss Indicator, and Full + Intraframe Request Features + + The NACK, FIR, and Picture Loss Indicator (PLI) features, as + described in [RFC4585] and [RFC5104], MUST be implemented. + Availability of these features MUST be announced with the "ccm" + feedback value. NACK should be used when negotiated and conditions + warrant its use and the other end supports it. Signaling picture + losses as a PLI should be preferred. FIR should be used only in + situations where not sending a decoder refresh point would render the + video unusable for the users, as per Section 4.3.1.2 of [RFC5104]. + + For backwards compatibility with calling devices that do not support + the foregoing methods, implementations MUST implement SIP INFO + messages to send and receive XML-encoded Picture Fast Update messages + according to [RFC5168]. + +7. Contacts + +7.1. CardDAV Login and Synchronization + + Support of vCard Extensions to WebDAV (CardDAV) by providers is + OPTIONAL. + + The RUE MUST and providers MAY be able to synchronize the user's + contact directory between the RUE endpoint and one maintained by the + user's VRS provider using CardDAV [RFC6352] [RFC6764]. + + The configuration (see Section 9.2) RueConfigurationData MAY supply a + "carddav-username" and "carddav-domain" identifying a CardDAV server + and address book for this account, plus an optional "carddav- + password". + + To access the CardDAV server and address book, the RUE MUST follow + Section 6 of [RFC6764], using the configured carddav-username and + carddav-domain in place of an email address. If the request triggers + a challenge for digest authentication credentials, the RUE MUST + continue using matching carddav-username and carddav-password from + the configuration. If no carddav-username and carddav-password are + configured, the RUE MUST use the SIP user-name and sip-password from + the configuration. If the SIP credentials fail, the RUE MUST query + the user. + + Synchronization using CardDAV MUST be a two-way synchronization + service, with proper handling of asynchronous adds, changes, and + deletes at either end of the transport channel. + + The RUE MAY support other CardDAV services. + +7.2. Contacts Import/Export Service + + Implementations MUST be able to export/import the list of contacts in + xCard [RFC6351] XML format. + + The RUE accesses this service via the "contacts-uri" in the + configuration. The URL MUST resolve to identify a web server + resource that imports/exports contact lists for authorized users. + + The RUE stores/retrieves the contact list (address book) by issuing + an HTTPS POST or GET request. If the request triggers a challenge + for digest authentication credentials, the RUE MUST attempt to + continue using the "contacts-username" and "contacts-password" from + the configuration. If no contacts-username is configured, the SIP + user-name from the configuration is used; if the SIP user-name is not + configured, the phone-number is used. If user-name or phone-number + is used, the sip-password is used to authenticate to the contact list + server. + +8. Video Mail + + Support for video mail includes a retrieval mechanism and a Message- + Waiting Indicator (MWI). Message storage is not specified by this + document. RUE devices MUST support message retrieval using a SIP + call to a specified SIP URI using DTMF to manage the mailbox, as well + as a browser-based interface reached at a specified HTTPS URI. If a + provider supports video mail, at least one of these mechanisms MUST + be supported. RUE devices MUST support both. See Section 9.2 for + how the URI to reach the retrieval interface is obtained. + + Implementations MUST support subscriptions to "message-summary" + events [RFC3842] to the URI specified in the configuration. + Providers MUST support MWI if they support video mail. RUE devices + MUST support MWI. + + The "videomail" and "mwi" properties in the configuration (see + RueConfigurationData in Section 9.2.2) give the URIs for message + retrieval and "message-summary" subscription. + + In notification bodies, if detailed message summaries are available, + messages with video MUST be reported using "message-context-class + multimedia-message", as defined in [RFC3458] . + +9. Provisioning and Provider Selection + + To simplify how users interact with RUE devices, the RUE interface + separates provisioning into two parts. One provides a directory of + providers so that a user interface can allow easy provider selection + either for registering or for dial-around. The other provides + configuration data for the device for each provider. + +9.1. RUE Provider Selection + + To allow the user to select a relay service, the RUE MAY at any time + obtain (typically on startup) a list of providers that provide + service in a country. IANA has established a registry that contains + a two-letter country code and a list entry point string (see + Section 10.1). The entry point, when used with the following OpenAPI + interface, returns a list of provider names for a country code + suitable for display, with a corresponding entry point to obtain + information about that provider. No mechanism to determine the + country where the RUE is located is specified in this document. + Typically, the country is the home country of the user but may be a + local country while traveling. Some countries allow support from + their home country when traveling abroad. Regardless, the RUE device + will need to allow the user to choose the country. + + Each country that supports VRS using this specification MAY support + the provider list. This document does not specify who maintains the + list. Some possibilities are a regulator or an entity designated by + a regulator, an agreement among providers to provide the list, or a + user group. + + The interface to obtain the list of providers is described by an + OpenAPI [OpenAPI] interface description. In that interface + description, the "servers" component includes an occurrence of + "localhost". The value from the registry of the "list entry point" + string for the desired country is substituted for "localhost" in the + "servers" component to obtain the server URI prefix of the interface + to be used to obtain the list of providers for that country. The + "Providers" path then specifies the rest of the URI used to obtain + the list. For example, if the list entryPoint is "example.com/api", + the provider list would be obtained from + https://example.com/api/rum/v1/Providers. + + The V1.0 "ProviderList" is a JSON object consisting of an array where + each entry describes one provider. Each entry consists of the + following items: + + * name: This parameter contains the text label identifying the + provider and is meant to be displayed to the human VRS user. + + * providerEntryPoint: A string used for configuration purposes by + the RUE (as discussed in Section 9.2). The string MUST start with + a domain but MAY include other URI path elements after the domain. + + The VRS user interacts with the RUE to select from the provider list + one or more providers with whom the user has already established an + account, wishes to establish an account, or wishes to use the + provider for a one-stage dial-around. + + { + "providers": [ + { + "name": "Red", + "entryPoint": "red.example.net" + }, + { + "name": "Green", + "entryPoint": "green.example.net" + }, + { + "name": "Blue", + "entryPoint": "blue.example.net" + } + ] + } + + Figure 2: Example of a ProviderList JSON Object + +9.2. RUE Configuration Service + + A RUE device may retrieve a provider configuration using a simple + HTTPs web service. There are two entry points. One is used without + user credentials, and the response includes configuration data for + new user signup and dial-around. The other uses a locally stored + username and password that results from a new user signup to + authenticate to the interface and returns configuration data for the + RUE. + + The interface to obtain configuration data is described by an OpenAPI + [OpenAPI] interface description. In that interface description, the + "servers" component string includes an occurrence of "localhost". + The entry point string obtained from the provider list (Section 9.1) + is substituted for "localhost" to obtain the server prefix of the + interface. The path then specifies the rest of the URI used to + obtain the list. For example, if the entryPoint from the provider + list is "red.example.net", the provider configuration would be + obtained from https://red.example.net/rum/V1/ProviderConfig and the + RUE configuration would be obtained from + https://red.example.net/rum/V1/RueConfig. + + In both the queries, an optional parameter may be provided to the + interface, which is an API Key (apiKey). The implementation MAY have + an apiKey obtained from the provider and specific to the + implementation. The method used to obtain the apiKey is not + specified in this document. The provider MAY refuse to provide + service to an implementation presenting an apiKey it does not + recognize. + + Also in both queries, the RUE device provides a client-provided, + required parameter, which contains an instance identifier + (instanceId). This parameter MUST be the same value each time this + instance (same implementation on same device) queries the interface. + This MAY be used by the provider, for example, to associate a + location with the instance for emergency calls. This should be + globally unique. A Universally Unique Identifier (UUID) is + suggested. + + For example, a query for the RUE configuration could be + https://red.example.net/rum/V1/RueConfig?apiKey="t65667Ajjss90uuuDisK + t8999"&instanceId="5595b5a3-0687-4b8e-9913-a7f2a04fb7bd" + + The data returned is a JSON object consisting of key/value + configuration parameters to be used by the RUE. + + The configuration data payload includes the following data items. + Items not noted as (OPTIONAL) are REQUIRED. If other unexpected + items are found, they MUST be ignored. + +9.2.1. Provider Configuration + + * signup: (OPTIONAL) an array of JSON objects consisting of: + + - language: entry from the IANA "Language Subtag Registry" + (https://www.iana.org/assignments/language-subtag-registry). + Normally, this would be a written language tag. + + - uri: a URI to the website for creating a new account in the + supported language. The new user signup URI may only initiate + creation of a new account. Various vetting, approval, and + other processes may be needed, which could take time, before + the account is established. The result of creating a new + account would be account credentials (e.g., username and + password), which would be manually entered into the RUE device + that forms the authentication parameters for the RUE + configuration service described below in Section 9.2.2. + + * dial-around: an array of JSON objects consisting of: + + - language: entry from the IANA "Language Subtag Registry". + Normally, this would be a sign language tag. + + - front-door: a URI to a queue of interpreters supporting the + specified language for a two-stage dial-around. + + - oneStage: a URI that can be used with a one-stage dial-around + (Section 5.2.2) using an interpreter supporting the specified + language. + + * helpDesk: (OPTIONAL) an array of JSON objects consisting of: + + - language: entry from the IANA "Language Subtag Registry". + Normally, this would be a sign language tag; although, it could + be a written language tag if the help desk only supports a chat + interface. + + - uri: a URI that reaches a help desk for callers supporting the + specified language. The URI MAY be a SIP URI for help provided + with a SIP call or MAY be an HTTPS URI for help provided with a + browser interface. + + A list is specified so that the provider can offer multiple + choices to users for language and interface styles. + +9.2.2. RUE Configuration + + * lifetime: (OPTIONAL) specifies how long (in seconds) the RUE MAY + cache the configuration values. Values may not be valid when + lifetime expires. If the RUE caches configuration values, it MUST + cryptographically protect them against unauthorized disclosure + (e.g., by other applications on the platform the RUE is built on). + The RUE SHOULD retrieve a fresh copy of the configuration before + the lifetime expires or as soon as possible after it expires. The + lifetime is not guaranteed, i.e., the configuration may change + before the lifetime value expires. In that case, the provider MAY + indicate this by generating authorization challenges to requests + and/or prematurely terminating a registration. Emergency calls + MUST continue to work. If not specified, the RUE MUST fetch new + configuration data every time it starts. + + * sip-password: (OPTIONAL) a password used for SIP, STUN, and TURN + authentication. The RUE device retains this data, which it MUST + cryptographically protect against unauthorized disclosure (e.g., + by other applications on the platform the RUE is built on). If it + is not supplied but was supplied on a prior invocation of this + interface, the most recently supplied password MUST be used. If + it was never supplied, the password used to authenticate to the + configuration service is used for SIP, as well as STUN and TURN + servers mentioned in this configuration. + + * phone-number: (REQUIRED) the telephone number (in E.164 format) + assigned to this subscriber. This becomes the user portion of the + SIP URI identifying the subscriber. + + * user-name: (OPTIONAL) a username used for authenticating to the + provider. If not provided, phone-number is used. + + * display-name: (OPTIONAL) a human-readable display name for the + subscriber. + + * provider-domain: (REQUIRED) the domain for the provider. This + becomes the server portion of the SIP URI identifying the + subscriber. + + * outbound-proxies: (OPTIONAL) an array of URIs of SIP proxies to be + used when sending requests to the provider. + + * mwi: (OPTIONAL) a URI identifying a SIP event server that + generates "message-summary" events for this subscriber. + + * videomail: (OPTIONAL) a SIP or HTTPS URI that can be used to + retrieve video mail messages. + + * contacts: (OPTIONAL) an HTTPS URI ("contacts-uri"), (OPTIONAL) + "contacts-username", and "contacts-password" that may be used to + export (retrieve) the subscriber's complete contact list managed + by the provider. At least the URI MUST be provided if the + subscriber has contacts. If contact-username and contacts- + password are not supplied, the sip credentials are used. If the + contacts-username is provided, contacts-password MUST be provided. + If contacts-password is provided, contacts-username MUST be + provided. + + * carddav: (OPTIONAL) an address ("carddav-domain"), (OPTIONAL) + "carddav-username", and "carddav-password" identifying a "CardDAV" + server and account that can be used to synchronize the RUE's + contact list with the contact list managed by the provider. If + carddav-username and carddav-password are not supplied, the sip + credentials are used. If the carddav-username is provided, + carddav-password MUST be provided. If carddav-password is + provided, carddav-username MUST be provided. + + * sendLocationWithRegistration: (OPTIONAL) true if the RUE should + send a Geolocation header field with REGISTER; false if it should + not. Defaults to false if not present. + + * ice-servers: (OPTIONAL) an array of server types and URLs + identifying STUN and TURN servers available for use by the RUE for + establishing media streams in calls via the provider. If the same + URL provides both STUN and TURN services, it MUST be listed twice, + each with different server types. + +9.2.3. Versions + + Both web services also have a simple version mechanism that returns a + list of versions of the web service it supports. This document + describes version 1.0. Versions are displayed as a major version, + followed by a period ".", followed by a minor version, where the + major and minor versions are integers. A backwards compatible change + within a major version MAY increment only the minor version number. + A non-backwards, compatible change MUST increment the major version + number. Backwards compatibility applies to both the server and the + client. Either may have any higher or lower minor revision and + interoperate with its counterpart with the same major version. To + achieve backwards compatibility, implementations MUST ignore any + object members they do not implement. Minor version definitions + SHALL only add objects, optional members of existing objects, and + non-mandatory-to-use functions and SHALL NOT delete or change any + objects, members of objects, or functions. This means an + implementation of a specific major version and minor version is + backwards compatible with all minor versions of the major version. + The version mechanism returns an array of supported versions, one for + each major version supported, with the minor version listed being the + highest-supported minor version. + + Unless the per-country provider list service is operated by a + provider at the same base URI as that provider's configuration + service, the version of the configuration service MAY be different + from the version of the provider list service. + + { + "versions": [ + { + "major": 1, + "minor": 6 + }, + { + "major": 2, + "minor": 13 + }, + { + "major": 3, + "minor": 2 + } + ] + } + + Figure 3: Example of a Version JSON Object + +9.2.4. Examples + + { + "signUp": [ + { "language" : "en", "uri" : "https:hello-en.example.net"}, + { "language" : "es", "uri" : "https:hello-es.example.net"} ] , + "dial-around": [ + { "language" : "en", "front-door" : "sip:fd-en.example.net", + "oneStage" : "sip:1stg-eng.example.com" } , + { "language" : "es", "front-door" : "sip:fd-es.example.net", + "oneStage" : "sip:1stg-spn.example.com" } ] , + "helpDesk": [ + { "language" : "en", "uri" : "sip:help-en.example.net"} , + { "language" : "es", "uri" : "sip:help-es.example.net"} ] + } + + Figure 4: Example JSON Provider Configuration Payload + + { + "lifetime": 86400, + "display-name" : "Bob Smith", + "phone-number": "+15551234567", + "provider-domain": "red.example.net", + "outbound-proxies": [ + "sip:p1.red.example.net", + "sip:p2.red.example.net" ], + "mwi": "sip:+15551234567@red.example.net;user=phone", + "videomail": "sip:+15551234567@vm.red.example.net;user=phone", + "contacts": { + "contacts-uri": + "https://red.example.net:443/c/3617b719-2c3a-46f4-9c13", + "contacts-username": "bob", + "contacts-password": "XhOT4ch@ZEi&3u2xEYQNMO^5UGb" + }, + "carddav": { + "carddav-domain": "carddav.example.com", + "carddav-username": "bob", + "carddav-password": "sj887%dd*jJty%87hyys5hHT" + }, + "sendLocationWithRegistration": false, + "ice-servers": [ + {"stun":"stun.red.example.com:19302" }, + {"turn":"turn.red.example.com:3478"} + ] + } + + Figure 5: Example JSON RUE Configuration Payload + +9.2.5. Using the Provider Selection and RUE Configuration Services + Together + + One way to use these two services is: + + 1. At startup, the RUE retrieves the provider list for the country + it is located in. + + 2. For each provider in the list: + + * If the RUE does not have credentials for that provider, if + requested by the user, use the ProviderConfig path without + credentials to obtain signup, dial-around, and help desk + information. + + * If the RUE has credentials for that provider, use the + RueConfig path with the locally stored credentials to + configure the RUE for that provider. + +9.3. OpenAPI Interface Descriptions + + The interfaces in Sections 9.1 and 9.2 are formally specified with + OpenAPI 3.0 [OpenAPI] descriptions in YAML form. + + The OpenAPI description below is normative. If there is any conflict + between the text or examples and this section, the OpenAPI + description takes precedence. + +9.3.1. Provider List + + openapi: 3.0.1 + info: + title: RUM Provider List API + version: "1.0" + servers: + - url: https://localhost/rum/v1 + paths: + /Providers: + get: + summary: Get a list of providers and domains to get + config data from + operationId: GetProviderList + responses: + '200': + description: List of providers for a country + content: + application/json: + schema: + $ref: '#/components/schemas/ProviderList' + /Versions: + servers: + - url: https://localhost/rum + description: Override base path for Versions query + get: + summary: Retrieves all supported versions + operationId: RetrieveVersions + responses: + '200': + description: Versions supported + content: + application/json: + schema: + $ref: '#/components/schemas/VersionsArray' + components: + schemas: + ProviderList: + type: object + required: + - providers + properties: + providers: + type: array + items: + type: object + required: + - name + - providerEntryPoint + properties: + name: + type: string + description: Human-readable provider name + providerEntryPoint: + type: string + description: Provider entry point for interface + VersionsArray: + type: object + required: + - versions + properties: + versions: + type: array + items: + type: object + required: + - major + - minor + properties: + major: + type: integer + format: int32 + description: Version major number + minor: + type: integer + format: int32 + description: Version minor number + + Figure 6: Provider List OpenAPI Description (RueProviderList.yaml) + +9.3.2. Configuration + + openapi: 3.0.1 + info: + title: RUM Configuration API + version: "1.0" + servers: + - url: https://localhost/rum/v1 + paths: + /ProviderConfig: + get: + summary: Configuration data for one provider + operationId: GetProviderConfiguration + parameters: + - in: query + name: apiKey + schema: + type: string + description: API Key assigned to this implementation + - in: query + name: instanceId + schema: + type: string + required: true + description: Unique string for this implementation + on this device + responses: + '200': + description: Configuration object + content: + application/json: + schema: + $ref: + '#/components/schemas/ProviderConfigurationData' + /RueConfig: + get: + summary: Configuration data for one RUE + operationId: GetRueConfiguration + parameters: + - in: query + name: apiKey + schema: + type: string + description: API Key assigned to this implementation + - in: query + name: instanceId + schema: + type: string + required: true + description: Unique string for this implementation + on this device + responses: + '200': + description: Configuration object + content: + application/json: + schema: + $ref: '#/components/schemas/RueConfigurationData' + /Versions: + servers: + - url: https://localhost/rum + description: Override base path for Versions query + get: + summary: Retrieves all supported versions + operationId: RetrieveVersions + responses: + '200': + description: Versions supported + content: + application/json: + schema: + $ref: '#/components/schemas/VersionsArray' + components: + schemas: + ProviderConfigurationData: + type: object + required: + - dial-around + properties: + signup: + type: array + items: + type: object + required: + - language + - uri + properties: + language: + type: string + description: Entry from IANA "Language Subtag + Registry" + uri: + type: string + format: uri + description: URI to signup website supporting + this language + dial-around: + type: array + items: + type: object + required: + - language + - front-door + - oneStage + properties: + language: + type: string + description: Entry from IANA "Language Subtag + Registry" + front-door: + type: string + format: uri + description: SIP URI for two-stage dial-around + oneStage: + type: string + format: uri + description: SIP URI for one-stage dial-around + helpDesk: + type: array + items: + type: object + required: + - language + - uri + properties: + language: + type: string + description: Entry from IANA "Language Subtag + Registry" + uri: + type: string + format: uri + description: SIP URI of help desk supporting language + RueConfigurationData: + type: object + required: + - phone-number + - provider-domain + properties: + lifetime: + type: integer + description: How long (in seconds) the RUE MAY cache the + configuration values + sip-password: + type: string + phone-number: + type: string + description: Telephone number assigned this subscriber in + E.164 format + user-name: + type: string + description: A username assigned to this subscriber + display-name: + type: string + description: Display name for the subscriber + provider-domain: + type: string + description: Domain of the provider for this subscriber + outbound-proxies: + type: array + items: + type: string + format: uri + description: SIP URI of a proxy to be used when sending + requests to the provider + mwi: + type: string + format: uri + description: A URI identifying a SIP event server that + generates "message-summary" events for this subscriber + videomail: + type: string + format: uri + description: An HTTPS or SIP URI that can be used to + retrieve video mail messages + contacts: + type: object + description: Server and credentials for contact + import/export + required: + - contacts-uri + properties: + contacts-uri: + type: string + format: uri + description: An HTTPS URI that may be used to export + (retrieve) the subscriber's complete contact list + managed by the provider + contacts-username: + type: string + description: Username for authentication with the + CardDAV server. Use SIP user-name if not provided + contacts-password: + type: string + description: Password for authentication. Use provider + sip-password if not provided + carddav: + type: object + description: CardDAV server and user information that can + be used to synchronize the RUE's contact list with + the contact list managed by the provider + required: + - carddav-domain + properties: + carddav-domain: + type: string + description: CardDAV server address + carddav-username: + type: string + description: Username for authentication with the + CardDAV server. Use SIP user-name if not provided + carddav-password: + type: string + description: Password for authentication to the CardDAV + server. Use provider sip-password if not provided + sendLocationWithRegistration: + type: boolean + description: True if the RUE should send a Geolocation + header field with REGISTER; false if it should not. + Defaults to false if not present + ice-servers: + type: array + items: + type: object + required: + - server-type + - uri + properties: + server-type: + type: string + description: Server type ("stun" or "turn") + uri: + type: string + format: uri + description: URIs identifying STUN and TURN servers + available for use by the RUE for establishing + media streams in calls via the provider + VersionsArray: + type: object + required: + - versions + properties: + versions: + type: array + items: + type: object + required: + - major + - minor + properties: + major: + type: integer + format: int32 + description: Version major number + minor: + type: integer + format: int32 + description: Version minor number + + Figure 7: Configuration OpenAPI Description (RueConfiguration.yaml) + +10. IANA Considerations + +10.1. RUE Provider List Registry + + IANA has created the "RUE Provider List" registry. The registration + policy is "Expert Review" [RFC8126]. A regulator operated or + designated list interface operator is preferred. Otherwise, evidence + that the proposed list interface operator will provide a complete + list of providers is required to add the entry to the registry. + Updates to the registry are permitted if the expert determines that + the proposed URI provides a more accurate list than the existing + entry. Each entry has two fields; values for both MUST be provided + when registering or updating an entry: + + * country code: a two-letter ISO93166 country code + + * list entry point: a string is used to compose the URI to the + provider list interface for that country + +10.2. Registration of Rue-Owner Value of the Purpose Parameter + + This document defines the new predefined value "rue-owner" for the + "purpose" header field parameter of the Call-Info header field. The + use for rue-owner is defined in Section 5.2.3. IANA has added a + reference to this document in the "Header Field Parameters and + Parameter Values" subregistry of the "Session Initiation Protocol + (SIP) Parameters" for the header field "Call-Info" and parameter name + "purpose". + + Header Field: Call-Info + + Parameter Name: purpose + + Predefined Values: Yes + +11. Security Considerations + + The RUE is required to communicate with servers on public IP + addresses and specific ports to perform its required functions. If + it is necessary for the RUE to function on a corporate or other + network that operates a default-deny firewall between the RUE and + these services, the user must arrange with their network manager for + passage of traffic through such a firewall in accordance with the + protocols and associated SRV records as exposed by the provider. + Because VRS providers may use different ports for different services, + these port numbers may differ from provider to provider. + + This document requires implementation and use of a number of other + specifications in order to fulfill the RUE profile; the security + considerations described in those documents apply accordingly to the + RUE interactions. + + When a CA participates in a conversation, they have access to the + content of the conversation even though it is nominally a + conversation between the two endpoints. There is an expectation that + the CA will keep the communication contents in confidence. This is + usually defined by contractual or legal requirements. + + Since different providers (within a given country) may have different + policies, RUE implementations MUST include a user interaction step to + select from available providers before proceeding to actually + register with any given provider. + +12. Normative References + + [OpenAPI] Miller, D., Whitlock, J., Gardiner, M., Ralphson, M., + Ratovsky, R., and U. Sarid, "OpenAPI Specification + v3.0.1", December 2017, + <https://spec.openapis.org/oas/v3.0.1>. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, + DOI 10.17487/RFC2119, March 1997, + <https://www.rfc-editor.org/info/rfc2119>. + + [RFC2392] Levinson, E., "Content-ID and Message-ID Uniform Resource + Locators", RFC 2392, DOI 10.17487/RFC2392, August 1998, + <https://www.rfc-editor.org/info/rfc2392>. + + [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, + A., Peterson, J., Sparks, R., Handley, M., and E. + Schooler, "SIP: Session Initiation Protocol", RFC 3261, + DOI 10.17487/RFC3261, June 2002, + <https://www.rfc-editor.org/info/rfc3261>. + + [RFC3263] Rosenberg, J. and H. Schulzrinne, "Session Initiation + Protocol (SIP): Locating SIP Servers", RFC 3263, + DOI 10.17487/RFC3263, June 2002, + <https://www.rfc-editor.org/info/rfc3263>. + + [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model + with Session Description Protocol (SDP)", RFC 3264, + DOI 10.17487/RFC3264, June 2002, + <https://www.rfc-editor.org/info/rfc3264>. + + [RFC3311] Rosenberg, J., "The Session Initiation Protocol (SIP) + UPDATE Method", RFC 3311, DOI 10.17487/RFC3311, October + 2002, <https://www.rfc-editor.org/info/rfc3311>. + + [RFC3323] Peterson, J., "A Privacy Mechanism for the Session + Initiation Protocol (SIP)", RFC 3323, + DOI 10.17487/RFC3323, November 2002, + <https://www.rfc-editor.org/info/rfc3323>. + + [RFC3326] Schulzrinne, H., Oran, D., and G. Camarillo, "The Reason + Header Field for the Session Initiation Protocol (SIP)", + RFC 3326, DOI 10.17487/RFC3326, December 2002, + <https://www.rfc-editor.org/info/rfc3326>. + + [RFC3327] Willis, D. and B. Hoeneisen, "Session Initiation Protocol + (SIP) Extension Header Field for Registering Non-Adjacent + Contacts", RFC 3327, DOI 10.17487/RFC3327, December 2002, + <https://www.rfc-editor.org/info/rfc3327>. + + [RFC3458] Burger, E., Candell, E., Eliot, C., and G. Klyne, "Message + Context for Internet Mail", RFC 3458, + DOI 10.17487/RFC3458, January 2003, + <https://www.rfc-editor.org/info/rfc3458>. + + [RFC3515] Sparks, R., "The Session Initiation Protocol (SIP) Refer + Method", RFC 3515, DOI 10.17487/RFC3515, April 2003, + <https://www.rfc-editor.org/info/rfc3515>. + + [RFC3605] Huitema, C., "Real Time Control Protocol (RTCP) attribute + in Session Description Protocol (SDP)", RFC 3605, + DOI 10.17487/RFC3605, October 2003, + <https://www.rfc-editor.org/info/rfc3605>. + + [RFC3840] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, + "Indicating User Agent Capabilities in the Session + Initiation Protocol (SIP)", RFC 3840, + DOI 10.17487/RFC3840, August 2004, + <https://www.rfc-editor.org/info/rfc3840>. + + [RFC3842] Mahy, R., "A Message Summary and Message Waiting + Indication Event Package for the Session Initiation + Protocol (SIP)", RFC 3842, DOI 10.17487/RFC3842, August + 2004, <https://www.rfc-editor.org/info/rfc3842>. + + [RFC3891] Mahy, R., Biggs, B., and R. Dean, "The Session Initiation + Protocol (SIP) "Replaces" Header", RFC 3891, + DOI 10.17487/RFC3891, September 2004, + <https://www.rfc-editor.org/info/rfc3891>. + + [RFC3892] Sparks, R., "The Session Initiation Protocol (SIP) + Referred-By Mechanism", RFC 3892, DOI 10.17487/RFC3892, + September 2004, <https://www.rfc-editor.org/info/rfc3892>. + + [RFC3960] Camarillo, G. and H. Schulzrinne, "Early Media and Ringing + Tone Generation in the Session Initiation Protocol (SIP)", + RFC 3960, DOI 10.17487/RFC3960, December 2004, + <https://www.rfc-editor.org/info/rfc3960>. + + [RFC3966] Schulzrinne, H., "The tel URI for Telephone Numbers", + RFC 3966, DOI 10.17487/RFC3966, December 2004, + <https://www.rfc-editor.org/info/rfc3966>. + + [RFC4102] Jones, P., "Registration of the text/red MIME Sub-Type", + RFC 4102, DOI 10.17487/RFC4102, June 2005, + <https://www.rfc-editor.org/info/rfc4102>. + + [RFC4103] Hellstrom, G. and P. Jones, "RTP Payload for Text + Conversation", RFC 4103, DOI 10.17487/RFC4103, June 2005, + <https://www.rfc-editor.org/info/rfc4103>. + + [RFC4488] Levin, O., "Suppression of Session Initiation Protocol + (SIP) REFER Method Implicit Subscription", RFC 4488, + DOI 10.17487/RFC4488, May 2006, + <https://www.rfc-editor.org/info/rfc4488>. + + [RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, + "Extended RTP Profile for Real-time Transport Control + Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, + DOI 10.17487/RFC4585, July 2006, + <https://www.rfc-editor.org/info/rfc4585>. + + [RFC4733] Schulzrinne, H. and T. Taylor, "RTP Payload for DTMF + Digits, Telephony Tones, and Telephony Signals", RFC 4733, + DOI 10.17487/RFC4733, December 2006, + <https://www.rfc-editor.org/info/rfc4733>. + + [RFC4967] Rosen, B., "Dial String Parameter for the Session + Initiation Protocol Uniform Resource Identifier", + RFC 4967, DOI 10.17487/RFC4967, July 2007, + <https://www.rfc-editor.org/info/rfc4967>. + + [RFC5104] Wenger, S., Chandra, U., Westerlund, M., and B. Burman, + "Codec Control Messages in the RTP Audio-Visual Profile + with Feedback (AVPF)", RFC 5104, DOI 10.17487/RFC5104, + February 2008, <https://www.rfc-editor.org/info/rfc5104>. + + [RFC5168] Levin, O., Even, R., and P. Hagendorf, "XML Schema for + Media Control", RFC 5168, DOI 10.17487/RFC5168, March + 2008, <https://www.rfc-editor.org/info/rfc5168>. + + [RFC5393] Sparks, R., Ed., Lawrence, S., Hawrylyshen, A., and B. + Campen, "Addressing an Amplification Vulnerability in + Session Initiation Protocol (SIP) Forking Proxies", + RFC 5393, DOI 10.17487/RFC5393, December 2008, + <https://www.rfc-editor.org/info/rfc5393>. + + [RFC5626] Jennings, C., Ed., Mahy, R., Ed., and F. Audet, Ed., + "Managing Client-Initiated Connections in the Session + Initiation Protocol (SIP)", RFC 5626, + DOI 10.17487/RFC5626, October 2009, + <https://www.rfc-editor.org/info/rfc5626>. + + [RFC5658] Froment, T., Lebel, C., and B. Bonnaerens, "Addressing + Record-Route Issues in the Session Initiation Protocol + (SIP)", RFC 5658, DOI 10.17487/RFC5658, October 2009, + <https://www.rfc-editor.org/info/rfc5658>. + + [RFC5954] Gurbani, V., Ed., Carpenter, B., Ed., and B. Tate, Ed., + "Essential Correction for IPv6 ABNF and URI Comparison in + RFC 3261", RFC 5954, DOI 10.17487/RFC5954, August 2010, + <https://www.rfc-editor.org/info/rfc5954>. + + [RFC6263] Marjou, X. and A. Sollaud, "Application Mechanism for + Keeping Alive the NAT Mappings Associated with RTP / RTP + Control Protocol (RTCP) Flows", RFC 6263, + DOI 10.17487/RFC6263, June 2011, + <https://www.rfc-editor.org/info/rfc6263>. + + [RFC6351] Perreault, S., "xCard: vCard XML Representation", + RFC 6351, DOI 10.17487/RFC6351, August 2011, + <https://www.rfc-editor.org/info/rfc6351>. + + [RFC6352] Daboo, C., "CardDAV: vCard Extensions to Web Distributed + Authoring and Versioning (WebDAV)", RFC 6352, + DOI 10.17487/RFC6352, August 2011, + <https://www.rfc-editor.org/info/rfc6352>. + + [RFC6442] Polk, J., Rosen, B., and J. Peterson, "Location Conveyance + for the Session Initiation Protocol", RFC 6442, + DOI 10.17487/RFC6442, December 2011, + <https://www.rfc-editor.org/info/rfc6442>. + + [RFC6665] Roach, A.B., "SIP-Specific Event Notification", RFC 6665, + DOI 10.17487/RFC6665, July 2012, + <https://www.rfc-editor.org/info/rfc6665>. + + [RFC6764] Daboo, C., "Locating Services for Calendaring Extensions + to WebDAV (CalDAV) and vCard Extensions to WebDAV + (CardDAV)", RFC 6764, DOI 10.17487/RFC6764, February 2013, + <https://www.rfc-editor.org/info/rfc6764>. + + [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, + <https://www.rfc-editor.org/info/rfc6881>. + + [RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre, + "Recommendations for Secure Use of Transport Layer + Security (TLS) and Datagram Transport Layer Security + (DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May + 2015, <https://www.rfc-editor.org/info/rfc7525>. + + [RFC7647] Sparks, R. and A.B. Roach, "Clarifications for the Use of + REFER with RFC 6665", RFC 7647, DOI 10.17487/RFC7647, + September 2015, <https://www.rfc-editor.org/info/rfc7647>. + + [RFC7742] Roach, A.B., "WebRTC Video Processing and Codec + Requirements", RFC 7742, DOI 10.17487/RFC7742, March 2016, + <https://www.rfc-editor.org/info/rfc7742>. + + [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, + <https://www.rfc-editor.org/info/rfc7852>. + + [RFC7874] Valin, JM. and C. Bran, "WebRTC Audio Codec and Processing + Requirements", RFC 7874, DOI 10.17487/RFC7874, May 2016, + <https://www.rfc-editor.org/info/rfc7874>. + + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC + 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, + May 2017, <https://www.rfc-editor.org/info/rfc8174>. + + [RFC8445] Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive + Connectivity Establishment (ICE): A Protocol for Network + Address Translator (NAT) Traversal", RFC 8445, + DOI 10.17487/RFC8445, July 2018, + <https://www.rfc-editor.org/info/rfc8445>. + + [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol + Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, + <https://www.rfc-editor.org/info/rfc8446>. + + [RFC8599] Holmberg, C. and M. Arnold, "Push Notification with the + Session Initiation Protocol (SIP)", RFC 8599, + DOI 10.17487/RFC8599, May 2019, + <https://www.rfc-editor.org/info/rfc8599>. + + [RFC8760] Shekh-Yusef, R., "The Session Initiation Protocol (SIP) + Digest Access Authentication Scheme", RFC 8760, + DOI 10.17487/RFC8760, March 2020, + <https://www.rfc-editor.org/info/rfc8760>. + + [RFC8825] Alvestrand, H., "Overview: Real-Time Protocols for + Browser-Based Applications", RFC 8825, + DOI 10.17487/RFC8825, January 2021, + <https://www.rfc-editor.org/info/rfc8825>. + + [RFC8827] Rescorla, E., "WebRTC Security Architecture", RFC 8827, + DOI 10.17487/RFC8827, January 2021, + <https://www.rfc-editor.org/info/rfc8827>. + + [RFC8829] Uberti, J., Jennings, C., and E. Rescorla, Ed., + "JavaScript Session Establishment Protocol (JSEP)", + RFC 8829, DOI 10.17487/RFC8829, January 2021, + <https://www.rfc-editor.org/info/rfc8829>. + + [RFC8834] Perkins, C., Westerlund, M., and J. Ott, "Media Transport + and Use of RTP in WebRTC", RFC 8834, DOI 10.17487/RFC8834, + January 2021, <https://www.rfc-editor.org/info/rfc8834>. + + [RFC8835] Alvestrand, H., "Transports for WebRTC", RFC 8835, + DOI 10.17487/RFC8835, January 2021, + <https://www.rfc-editor.org/info/rfc8835>. + + [RFC8839] Petit-Huguenin, M., Nandakumar, S., Holmberg, C., Keränen, + A., and R. Shpount, "Session Description Protocol (SDP) + Offer/Answer Procedures for Interactive Connectivity + Establishment (ICE)", RFC 8839, DOI 10.17487/RFC8839, + January 2021, <https://www.rfc-editor.org/info/rfc8839>. + + [RFC8865] Holmberg, C. and G. Hellström, "T.140 Real-Time Text + Conversation over WebRTC Data Channels", RFC 8865, + DOI 10.17487/RFC8865, January 2021, + <https://www.rfc-editor.org/info/rfc8865>. + + [RFC8866] Begen, A., Kyzivat, P., Perkins, C., and M. Handley, "SDP: + Session Description Protocol", RFC 8866, + DOI 10.17487/RFC8866, January 2021, + <https://www.rfc-editor.org/info/rfc8866>. + + [RFC9071] Hellström, G., "RTP-Mixer Formatting of Multiparty Real- + Time Text", RFC 9071, DOI 10.17487/RFC9071, July 2021, + <https://www.rfc-editor.org/info/rfc9071>. + + [RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, + Ed., "HTTP Semantics", STD 97, RFC 9110, + DOI 10.17487/RFC9110, June 2022, + <https://www.rfc-editor.org/info/rfc9110>. + + [RFC9112] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, + Ed., "HTTP/1.1", STD 99, RFC 9112, DOI 10.17487/RFC9112, + June 2022, <https://www.rfc-editor.org/info/rfc9112>. + +13. Informative References + + [RFC3665] Johnston, A., Donovan, S., Sparks, R., Cunningham, C., and + K. Summers, "Session Initiation Protocol (SIP) Basic Call + Flow Examples", BCP 75, RFC 3665, DOI 10.17487/RFC3665, + December 2003, <https://www.rfc-editor.org/info/rfc3665>. + + [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for + Writing an IANA Considerations Section in RFCs", BCP 26, + RFC 8126, DOI 10.17487/RFC8126, June 2017, + <https://www.rfc-editor.org/info/rfc8126>. + +Acknowledgements + + Brett Henderson and Jim Malloy provided many helpful edits to prior + draft versions of this document. Paul Kyzivat provided extensive + reviews and comments. + +Author's Address + + Brian Rosen + 470 Conrad Dr + Mars, PA 16046 + United States of America + Email: br@brianrosen.net |