RFC 4504

SIP Telephony Device Requirements and Configuration

๐Ÿ“… published May 2006, from ietf

RFC 4504 ๐ŸŽ€ SIP Telephony Device Requirements and Configuration ๐Ÿ“ž

okay bestie, let's start with the title block ๐Ÿ’– This is RFC 4504, titled "SIP Telephony Device Requirements and Configuration." It was published by the Network Working Group in May 2006 and it's Informational ๐ŸŒธ That means it's offering info to the Internet community, not setting a standard. The editor is H. Sinnreich, Ed. from pulver.com, and the other authors are S. Lass from Verizon and C. Stredicke from snom โœจ The title block doesn't list anything it obsoletes or updates, so there's no drama there ๐Ÿ™ˆ


Status of This Memo ๐Ÿงพ

okay so this memo just gives info to the Internet community ๐Ÿ’… It is NOT specifying any kind of Internet standard, and distribution of it is unlimited ๐Ÿฆ‹

Copyright (C) The Internet Society (2006). ๐Ÿ’œ

Abstract โœจ

so this document lays out the requirements for SIP telephony devices ๐Ÿ“ž It's based on real deployment experience with tons of SIP phones and PC clients, from different implementations, running across all kinds of networks ๐Ÿ”ฅ The big goal is a well-defined set of interoperability and multi-vendor-supported core features, so that buying, installing, and using these devices feels as easy as it does with PCs, PDAs, analog feature phones, or mobile phones ๐Ÿ’–

they also include a glossary of the most common settings, plus some of the more widely used values for some of those settings ๐Ÿงš

Table of Contents ๐Ÿ—‚๏ธ

   1. Introduction ....................................................3
      1.1. Conventions used in this document ..........................4
   2. Generic Requirements ............................................4
      2.1. SIP Telephony Devices ......................................4
      2.2. DNS and ENUM Support .......................................5
      2.3. SIP Device Resident Telephony Features .....................5
      2.4. Support for SIP Services ...................................8
      2.5. Basic Telephony and Presence Information Support ...........9
      2.6. Emergency and Resource Priority Support ....................9
      2.7. Multi-Line Requirements ...................................10
      2.8. User Mobility .............................................11
      2.9. Interactive Text Support ..................................11
      2.10. Other Related Protocols ..................................12
      2.11. SIP Device Security Requirements .........................13
      2.12. Quality of Service .......................................13
      2.13. Media Requirements .......................................14
      2.14. Voice Codecs .............................................14
      2.15. Telephony Sound Requirements .............................15
      2.16. International Requirements ...............................15
      2.17. Support for Related Applications .........................16
      2.18. Web-Based Feature Management .............................16
      2.19. Firewall and NAT Traversal ...............................16
      2.20. Device Interfaces ........................................17
   3. Glossary and Usage for the Configuration Settings ..............18
      3.1. Device ID .................................................18
      3.2. Signaling Port ............................................19
      3.3. RTP Port Range ............................................19
      3.4. Quality of Service ........................................19
      3.5. Default Call Handling .....................................19
           3.5.1. Outbound Proxy .....................................19
           3.5.2. Default Outbound Proxy .............................20
           3.5.3. SIP Session Timer ..................................20
      3.6. Telephone Dialing Functions ...............................20
           3.6.1. Phone Number Representations .......................20
           3.6.2. Digit Maps and/or the Dial/OK Key ..................20
           3.6.3. Default Digit Map ..................................21
      3.7. SIP Timer Settings ........................................21
      3.8. Audio Codecs ..............................................21
      3.9. DTMF Method ...............................................22
      3.10. Local and Regional Parameters ............................22
      3.11. Time Server ..............................................22
      3.12. Language .................................................23
      3.13. Inbound Authentication ...................................23
      3.14. Voice Message Settings ...................................23
      3.15. Phonebook and Call History ...............................24
      3.16. User-Related Settings and Mobility .......................24
      3.17. AOR-Related Settings .....................................25
      3.18. Maximum Connections ......................................25
      3.19. Automatic Configuration and Upgrade ......................25
      3.20. Security Configurations ..................................26
   4. Security Considerations ........................................26
      4.1. Threats and Problem Statement .............................26
      4.2. SIP Telephony Device Security .............................27
      4.3. Privacy ...................................................28
      4.4. Support for NAT and Firewall Traversal ....................28
   5. Acknowledgements ...............................................29
   6. Informative References .........................................31

1. Introduction โœจ

okay so the whole point of this doc is to get the Internet comms crowd focused on requirements for telephony devices that use SIP ๐Ÿ“ž๐Ÿซถ

this info comes from actually building and using a ton of SIP telephony devices in carrier networks, private IP networks, and on the Internet ๐ŸŒ All that experience showed we need generic requirements for SIP telephony devices, plus some specifics that can be used in SIP interoperability testing ๐Ÿ’…

so SIP telephony devices (also called SIP User Agents, or UAs) can be basically any IP-networked computing device that's enabled for SIP-based IP telephony ๐Ÿฆ‹ That includes SIP phones, adaptors for analog phones and fax machines, conference speakerphones, soft clients running on PCs and laptops, wireless PDAs, 'Wi-Fi' SIP mobile phones, and other mobile and cordless phones that support SIP signaling for real-time communications ๐ŸŽ€ SIP-PSTN gateways are NOT what this memo is about, since they're network elements and not end user devices ๐Ÿ™…โ€โ™€๏ธ

SIP telephony devices can also be instant messaging (IM) apps that have a telephony option ๐Ÿ’ฌ

SIP devices MAY support other media besides voice, like text, video, games, and other Internet apps ๐ŸŽฎ However, the non-voice requirements aren't specified in this document, except when they're providing enhanced telephony features โœจ

ngl, SIP telephony devices are super complex IP endpoints ๐Ÿคฏ They speak lots of Internet protocols, have audio and visual interfaces, and need to work for several groups of people: (1) end users, (2) service providers and network administrators, (3) manufacturers, and (4) system integrators ๐Ÿ‘‘

the goal is a well-defined set of interoperability and multi-vendor-supported core features, so that buying, installing, and operating these devices is as easy as it is for standard PCs, analog feature phones, or mobile phones ๐Ÿ’– Some feature-rich display phones now cost about as much as PCs and PDAs, so users and network admins are expecting ease of use that's similar or even better than personal computers and networked PDAs ๐ŸŒˆ

some recommendations here go beyond what's currently mandated for SIP implementations within the IETF ๐Ÿ˜ญ but the authors believe that's necessary to support the operational goals ๐Ÿซถ

also, SIP specs keep evolving ๐Ÿ”„ so these recommendations need to be read in the context of that change. Because IETF documents move through the standards process over time, and this memo is informational, all the references are informative ๐Ÿ“š

1.1. Conventions used in this document ๐Ÿ“

this document is informational, so the key words "MUST", "SHOULD", "SHOULD NOT", and "MAY" in here are NOT to be interpreted as described in RFC 2119 [1] ๐Ÿ™ˆ Instead, they just show the nature of the suggested requirement ๐Ÿ’…

2. Generic Requirements ๐Ÿ’œ

okay so here's a minimal set of requirements that MUST be met by ALL SIP [2] telephony devices, except where SHOULD or MAY is specified ๐Ÿ”ฅ

2.1. SIP Telephony Devices ๐Ÿ“ž

this memo mainly applies to desktop phones and other special purpose SIP telephony hardware ๐Ÿ–ฅ๏ธ Some requirements in this section don't apply to PC/laptop or PDA software phones (soft phones) and mobile phones ๐Ÿ“ฑ

Req-1: SIP telephony devices MUST be able to acquire IP network settings by automatic configuration using Dynamic Host Configuration Protocol (DHCP) [3] ๐Ÿงš

Req-2: SIP telephony devices MUST be able to acquire IP network settings by manual entry of settings from the device โœ๏ธ

Req-3: SIP telephony devices SHOULD support IPv6 ๐ŸŒ Some newer wireless networks may mandate IPv6 support, and in those networks SIP telephony devices MUST support IPv6 โœจ

Req-4: SIP telephony devices MUST support the Simple Network Time Protocol [4] โฐ

Req-5: Desktop SIP phones and other special purpose SIP telephony devices MUST be able to upgrade their firmware to support additional features and functionality ๐Ÿ†™

Req-6: Users SHOULD be able to upgrade the devices with no special applications or equipment ๐Ÿซถ Or a service provider SHOULD be able to push the upgrade down to the devices remotely ๐Ÿ›ฐ๏ธ

2.2. DNS and ENUM Support ๐Ÿ”Ž

Req-7: SIP telephony devices MUST support RFC 3263 [5] for locating a SIP server and selecting a transport protocol ๐Ÿ—บ๏ธ

Req-8: SIP telephony devices MUST incorporate DNS resolvers that are configurable with at least two entries for DNS servers, for redundancy ๐Ÿ’… To make DNS resolution efficient, SIP telephony devices SHOULD query responsive DNS servers and skip DNS servers that have been non-responsive to recent queries ๐Ÿƒโ€โ™€๏ธ

Req-9: To make DNS resolution efficient and to limit post-dial delay, SIP telephony devices MUST cache DNS responses based on the DNS time-to-live โšก

Req-10: For DNS efficiency, SIP telephony devices SHOULD use the additional information section of the DNS response instead of generating additional DNS queries ๐Ÿง 

Req-11: SIP telephony devices MAY support ENUM [6] in case end users prefer to have control over the ENUM lookup ๐ŸŽ€ Note: the ENUM resolver can also be placed in the outgoing SIP proxy to simplify operation of the SIP telephony device ๐Ÿงš The Extension Mechanisms for DNS (EDNSO) in RFC 2671 SHOULD also be supported ๐ŸŒธ

2.3. SIP Device Resident Telephony Features โœจ

Okay bestie, this is the section for everything that lives on the phone itself ๐Ÿ“ฑ๐Ÿ’– Here we go:

Req-12: SIP telephony devices MUST support RFC 3261 [2]. ๐ŸŽ€

Req-13: SIP telephony devices SHOULD support the SIP Privacy header by filling in headers with values that match the privacy requirements and preferences described in "User Agent Behavior", Section 4 of RFC 3323 [7]. ๐Ÿฆ‹

Req-14: SIP telephony devices MUST be able to put an existing call on hold, and start or receive another call, as specified in RFC 3264 [8]. They SHOULD NOT omit the sendrecv attribute. ๐Ÿ“ž

Req-15: SIP telephony devices MUST provide a call waiting indicator. While participating in a call, the user MUST be alerted audibly and/or visually about another incoming call. The user MUST be able to enable or disable the call waiting indicator. ๐Ÿ””

Req-16: SIP telephony devices MUST support SIP message waiting [9] and the integration with message store platforms. ๐Ÿ’Œ

Req-17: SIP telephony devices MAY support a local dial plan. If a dial plan is supported, it MUST be able to match user input to one of multiple pattern strings and transform the input into a URI, including an arbitrary scheme and URI parameters. ๐Ÿงš

Example: If a local dial plan is supported, it SHOULD be configurable to generate any of the following URIs when "5551234" is dialed:

tel:+12125551234
sip:+12125551234@example.net;user=phone
sips:+12125551234@example.net;user=phone
sip:5551234@example.net
sips:5551234@example.net
tel:5551234;phone-context=nyc1.example.net
sip:5551234;phone-
context=nyc1.example.net@example.net;user=phone
sips:5551234;phone-
context=nyc1.example.net@example.net;user=phone
sip:5551234;phone-
context=nyc1.example.net@example.net;user=dialstring
sips:5551234;phone-
context=nyc1.example.net@example.net;user=dialstring
tel:5551234;phone-context=+1212
sip:5551234;phone-context=+1212@example.net;user=phone
sips:5551234;phone-context=+1212@example.net;user=phone
sip:5551234;phone-context=+1212@example.net;user=dialstring
sips:5551234;phone-context=+1212@example.net;user=dialstring

If a local dial plan is not supported, the device SHOULD be configurable to generate any of the following URIs when "5551234" is dialed:

sip:5551234@example.net
sips:5551234@example.net
sip:5551234;phone-
context=nyc1.example.net@example.net;user=dialstring
sips:5551234;phone-
context=nyc1.example.net@example.net;user=dialstring
sip:5551234;phone-context=+1212@example.net;user=dialstring
sips:5551234;phone-context=+1212@example.net;user=dialstring"

Req-18: SIP telephony devices MUST support URIs for telephone numbers as per RFC 3966 [10]. This covers both receiving and sending requests. Receiving may be denied according to the configurable security policy of the device. It is a reasonable behavior to send a request to a preconfigured outbound proxy. โ˜Ž๏ธ

Req-19: SIP telephony devices MUST support REFER and NOTIFY for call transfer [11], [12]. SIP telephony devices MUST support escaped Replaces-Header (RFC 3891) and SHOULD support other escaped headers in the Refer-To header. ๐Ÿ”€

Req-20: SIP telephony devices MUST support the unattended call transfer flows as defined in [12]. ๐Ÿƒโ€โ™€๏ธ

Req-21: SIP telephony devices MUST support the attended call transfer as defined in [12]. ๐Ÿค

Req-22: SIP telephony devices MAY support device-based 3-way calling by mixing the audio streams and displaying the interactive text of at least 2 separate calls. ๐ŸŽถ

Req-23: SIP telephony devices MUST be able to send dual-tone multi-frequency (DTMF) named telephone events as specified by RFC 2833 [13]. ๐Ÿ”ข

Req-24: Payload type negotiation MUST comply with RFC 3264 [8] and with the registered MIME types for RTP payload formats in RFC 3555 [14]. ๐ŸŽง

Req-25: The dynamic payload type MUST remain constant throughout the session. For example, if an endpoint decides to renegotiate codecs or put the call on hold, the payload type for the re-invite MUST be the same as the initial payload type. SIP devices MAY support Flow Identification as defined in RFC 3388 [15]. ๐Ÿ”’

Req-26: When acting as a User Agent Client (UAC), SIP telephony devices SHOULD support the gateway model of RFC 3960 [16]. When acting as a User Agent Server (UAS), SIP telephony devices SHOULD NOT send early media. ๐Ÿšช

Req-27: SIP telephony devices MUST be able to handle multiple early dialogs in the context of request forking. When a confirmed dialog has been established, it is an acceptable behavior to send a BYE request in response to additional 2xx responses that establish additional confirmed dialogs. ๐Ÿด

Req-28: SIP devices with a suitable display SHOULD support the call-info header. Depending on the display capabilities, they MAY, for example, display an icon or the image of the caller. ๐Ÿ–ผ๏ธ

Req-29: To provide additional information about call failures, SIP telephony devices with a suitable display MUST render the "Reason Phrase" of the SIP message or map the "Status Code" to custom or default messages. This presumes the language for the reason phrase is the same as the negotiated language. The devices MAY use an internal "Status Code" table if there was a problem with the language negotiation. ๐Ÿšจ

Req-30: SIP telephony devices MAY support music on hold, both in receive mode and locally generated. See also "SIP Service Examples" for a call flow with music on hold [17]. ๐ŸŽต

Req-31: SIP telephony devices MAY ring after a call has been on hold for a predetermined period of time, typically 3 minutes. โฐ


2.4. Support for SIP Services ๐Ÿ’ซ

Req-32: SIP telephony devices MUST support the SIP Basic Call Flow Examples as per RFC 3665 [17]. ๐Ÿง

Req-33: SIP telephony devices MUST support the SIP-PSTN Service Examples as per RFC 3666 [18]. ๐ŸŒ‰

Req-34: SIP telephony devices MUST support the Third Party Call Control model [19], in the sense that they may be the controlled device. ๐ŸŽฎ

Req-35: SIP telephony devices SHOULD support SIP call control and multi-party usage [20]. ๐Ÿ‘ฏโ€โ™€๏ธ

Req-36: SIP telephony devices SHOULD support conferencing services for voice [21], [22] and interactive text [23]. If equipped with an adequate display, they MAY also support instant messaging (IM) and presence [24], [25]. ๐ŸŽค

Req-37: SIP telephony devices SHOULD support the indication of the User Agent capabilities and MUST support the caller capabilities and preferences as per RFC 3840 [26]. ๐Ÿชช

Req-38: SIP telephony devices MAY support service mobility. Devices MAY allow roaming users to input their identity so as to have access to their services and preferences from the home SIP server. Examples of user data to be available for roaming users are: user service ID, dialing plan, personal directory, and caller preferences. ๐Ÿงณ


2.5. Basic Telephony and Presence Information Support ๐ŸŒท

Okay so the large color displays on some newer models make these SIP phones and apps super attractive for a rich communication environment, no cap ๐Ÿ“ฑ๐ŸŒˆ This document is focused, however, only on telephony-specific features enabled by SIP Presence and SIP Events. Not the whole glam squad, just this part ๐Ÿ’…

SIP telephony devices can also support presence status. Think the classic Do Not Disturb, or newer event state-based info like being in another call, being in a conference, typing a message, emoticons, and so on ๐Ÿซถ Some SIP telephony User Agents can support, for example, a voice session and several IM sessions with different parties at the same time. Multitasking queen behavior ๐Ÿ‘‘

Req-39: SIP telephony devices SHOULD support Presence information [24] and SHOULD support the Rich Presence Information Data Format [27] for the new IP communication services enabled by Presence. โœจ

Req-40: Users MUST be able to set the state of the SIP telephony device to "Do Not Disturb". This MAY be manifested as a Presence state across the network if the UA can support Presence information. ๐Ÿ™ˆ

Req-41: SIP telephony devices with "Do Not Disturb" enabled MUST respond to new sessions with "486 Busy Here". ๐Ÿšซ


2.6. Emergency and Resource Priority Support ๐Ÿš‘

Req-42: Emergency calling: For emergency numbers (e.g., 911, SOS URL), SIP telephony devices SHOULD support the work of the ECRIT WG [28]. ๐Ÿ†˜

Req-43: Priority header: SIP devices SHOULD support the setting by the user of the Priority header specified in RFC 3261 for applications such as emergency calls or selective call acceptance. ๐ŸŽฏ

Req-44: Resource Priority header: SIP telephony devices that are used in environments that support emergency preparedness MUST also support the sending and receiving of the Resource-Priority header as specified in [29]. The Resource-Priority header influences the behavior for message routing in SIP proxies and PSTN telephony gateways and is different from the SIP Priority header specified in RFC 3261. Users of SIP telephony devices may want to be interrupted in their lower-priority communications activities if such an emergency communication request arrives. ๐Ÿ“ฃ

Note: As of this writing, we recommend that implementers follow the work of the Working Group on Emergency Context Resolution with Internet Technologies (ecrit) in the IETF. The complete solution is for further study at this time. There is also work on the requirements for location conveyance in the SIPPING WG, see [30]. ๐Ÿงšโ€โ™€๏ธ

2.7. Multi-Line Requirements ๐Ÿ“žโœจ

okay so a SIP telephony device can have multiple lines ๐Ÿฆ‹ One device can be registered at the same time with different SIP registrars from different service providers, using different names and credentials for each line. Those sets of names and credentials are also called "SIP accounts" ๐Ÿ’…

The word "line" is borrowed from multi-line PSTN/PBX phones, but with SIP devices each line can have its own registrar/proxy, and each one might belong to a different service provider. That's a rare exception for the PSTN and definitely not the norm for PBX phones ๐Ÿ™ˆ Multi-line SIP devices are kinda like email clients that handle several email accounts at once ๐Ÿ’Œ

Note: each SIP account can usually support different Addresses of Record (AORs) with a different list of contact addresses (CAs), which is handy if you want separate accounts for business and personal use ๐Ÿ’ผ๐ŸŒธ Some of the CAs in different SIP accounts may point to the same devices, though ๐Ÿ‘€

Req-45: multi-line SIP telephony devices MUST support a unique authentication username, authentication password, registrar, and identity to be provisioned for each line ๐Ÿ” The authentication username MAY be identical with the user name of the AOR, and the domain name MAY be identical with the host name of the registrar ๐Ÿซถ

Req-46: multi-line SIP telephony devices MUST be able to support the state of the client to Do Not Disturb on a per line basis ๐Ÿ”•

Req-47: multi-line SIP telephony devices MUST support multi-line call waiting indicators ๐Ÿ“Ÿ Devices MUST allow the call waiting indicator to be set on a per line basis โœจ

Req-48: multi-line SIP telephony devices MUST be able to support a few different ring tones for different lines ๐ŸŽถ We say "a few" on purpose, since provisioning a different tone for every line can be tricky on phones with lots of lines ๐Ÿ™ƒ


2.8. User Mobility ๐Ÿงณ๐Ÿ’œ

This section is all about letting users with their own set of credentials use any SIP telephony device that can support personal credentials from several users, separate from the identity of the device ๐ŸŒˆ

Req-49: user-mobility-enabled SIP telephony devices MUST store static credentials associated with the device in non-volatile memory ๐Ÿ’พ This static profile is used during the power up sequence โšก

Req-50: user-mobility-enabled SIP telephony devices SHOULD allow a user to walk up to a device and input their personal credentials ๐Ÿšถโ€โ™€๏ธโœจ All user features and settings stored in the home SIP proxy and the associated policy server SHOULD be available to the user ๐Ÿงš

Req-51: user-mobility-enabled SIP telephony devices registered as fixed desktop with network administrator MUST use the local static location data associated with the device for emergency calls ๐Ÿšจ Super important, bestie ๐Ÿ˜ญ


2.9. Interactive Text Support ๐Ÿ’ฌ๐ŸŽ€

SIP telephony devices that support instant messaging based on SIMPLE [24] can do text conversation in blocks of text ๐Ÿ“ฆ But continuous interactive text conversation is sometimes preferred as a parallel to voice, because it's more streaming-like and way better for real-time conversation ๐Ÿ”ฅ It also allows for text captioning of voice in noisy environments, and it helps people who cannot hear well or cannot hear at all ๐Ÿซถ

Continuous character-by-character text is also preferred by emergency and public safety programs (e.g., 112 and 911) ๐Ÿš‘ Why? Because it's immediate, efficient, avoids the crossed messages problem, makes it easier to interact with a confused person, and you can observe extra information just by watching the message as it's being composed ๐Ÿ‘€๐Ÿ’€

Req-52: SIP telephony devices such as SIP display phones and IP-analog adapters SHOULD support the accessibility requirements for deaf, hard-of-hearing and speech-impaired individuals as per RFC 3351 [31], and also for interactive text conversation [23], [32] ๐Ÿฆป๐Ÿ’–

Req-53: SIP telephony devices SHOULD provide a way to input text and to display text through any reasonable method ๐Ÿ“ Built-in user interfaces, standard wired or wireless interfaces, and/or support for text through a web interface are all considered reasonable mechanisms ๐ŸŒ

Req-54: SIP telephony devices SHOULD provide an external standard wired or wireless link to connect external input (keyboard, mouse) and display devices โŒจ๏ธ๐Ÿ–ฑ๏ธ

Req-55: SIP telephony devices that include a display, or have a facility for connecting an external display, MUST include protocol support as described in RFC 4103 [23] for real-time interactive text ๐Ÿ–ฅ๏ธ๐Ÿ’œ

Req-56: there may be value in having RFC 4103 support in a terminal without a visual display too ๐ŸŽง A synthetic voice output for the text conversation may be of value for everyone who can hear, and it gives people the chance to have a text conversation with other users ๐Ÿ—ฃ๏ธโœจ

Req-57: SIP telephony devices MAY provide analog adaptor functionality through an RJ-11 FXS port to support FXS devices ๐Ÿ“  If an RJ-11 (FXS) port is provided, then it MAY support a gateway function from all text-telephone protocols according to ITU-T Recommendation V.18 to RFC 4103 text conversation (and honestly, this is encouraged in the near term during the transition to widespread use of SIP telephony devices ๐ŸŒธ) If this gateway function is not included or fails, the device MUST pass through all text-telephone protocols according to ITU-T Recommendation V.18, November 2000, in a transparent fashion ๐Ÿ”

Req-58: SIP telephony devices MAY provide a 2.5 mm audio port, in portable SIP devices such as PDAs and various wireless SIP phones ๐ŸŽง๐Ÿ“ฑ


Req-59: SIP telephony devices MUST support the Real-Time Protocol and the Real-Time Control Protocol, RFC 3550 [33] ๐Ÿ“ก SIP devices SHOULD use RTCP Extended Reports for logging and reporting on network support for voice quality, RFC 3611 [34], and MAY also support the RTCP summary report delivery [35] ๐Ÿ“Šโœจ


2.11. SIP Device Security Requirements ๐Ÿ”’๐Ÿ›ก๏ธ

Security is not optional, bestie. These requirements are all about keeping devices, credentials, and calls locked down ๐Ÿ”๐Ÿ’€

Req-60: SIP telephony devices MUST support digest authentication as per RFC 3261 ๐Ÿ”‘ In addition, SIP telephony devices MUST support Transport Layer Security (TLS) for secure transport [36] in scenarios where the SIP registrar is located outside the secure, private IP network in which the SIP UA may reside ๐ŸŒ Note: TLS need not be used in every call, though ๐Ÿ’œ

Req-61: SIP telephony devices MUST be able to password protect configuration information and administrative functions ๐Ÿ”

Req-62: SIP telephony devices MUST NOT display the password to the user or administrator after it has been entered ๐Ÿ™ˆ๐Ÿšซ Hide that password, periodt ๐Ÿคซ

Req-63: SIP clients MUST be able to disable remote access, i.e., block incoming Simple Network Management Protocol (SNMP) (where this is supported), HTTP, and other services not necessary for basic operation ๐Ÿšช๐Ÿ”

Req-64: SIP telephony devices MUST support the option to reject an incoming INVITE where the user-portion of the SIP request URI is blank or does not match a provisioned contact ๐Ÿ—‘๏ธ This gives protection against war-dialer attacks, unwanted telemarketing, and spam ๐Ÿ›‘ The setting to reject MUST be configurable ๐ŸŽ›๏ธ

Req-65: when TLS is not used, SIP telephony devices MUST be able to reject an incoming INVITE when the message does not come from the proxy or proxies where the client is registered ๐Ÿšง This stops callers from bypassing terminating call features on the proxy ๐Ÿ™…โ€โ™€๏ธ For DNS SRV specified proxy addresses, the client must accept an INVITE from all of the resolved proxy IP addresses ๐ŸŒธ


2.12. Quality of Service ๐Ÿšฆ๐Ÿ’…

Req-66: SIP devices MUST support the IPv4 Differentiated Services Code Point (DSCP) field for RTP streams as per RFC 2597 [37] ๐ŸŽ€ The DSCP setting MUST be configurable to conform with the local network policy โš™๏ธ

Req-67: if not specifically provisioned, SIP telephony devices SHOULD mark RTP packets with the recommended DSCP for expedited forwarding (codepoint 101110) and mark SIP packets with DSCP AF31 (codepoint 011010) ๐Ÿƒโ€โ™€๏ธ๐Ÿ’จ

Req-68: SIP telephony devices MAY support Resource Reservation Protocol (RSVP) [38] ๐ŸŽŸ๏ธ


2.13. Media Requirements ๐ŸŽต๐ŸŽฌ

Req-69: to simplify interoperability issues, SIP telephony devices MUST use the first matching codec listed by the receiver if the requested codec is available in the called device ๐Ÿค See the offer/answer model in RFC 3261 โœจ

Req-70: to reduce overall bandwidth, SIP telephony devices MAY support active voice detection and comfort noise generation ๐ŸŒ™๐Ÿ“

2.14. Voice Codecs ๐ŸŽค

Okay so Internet phones have a codec problem, bestie ๐Ÿ˜ญ It's a mess because of historic reasons, the way telecom players handled codec implementations, and the serious intellectual property and licensing drama around most codec types. For example, RFC 3551 [39] lists 17 registered MIME subtypes for audio codecs. 17!! ๐Ÿ’€

Ideally, the more codecs a SIP telephony device can support, the better ๐Ÿ’… It boosts the chances of success during codec negotiation at call setup and avoids media intermediaries that have to do codec mediation. Main character energy ๐Ÿ‘‘

Implementers who want a short list MAY, however, support a minimal number of codecs used in wireline Voice over IP (VoIP), plus codecs found in the mobile networks the SIP UA is targeted at. An ordered short list of preferences may look something like this ๐ŸŒธ

Req-71: SIP telephony devices SHOULD support Audio/Video Transport (AVT) payload type 0 (G.711 uLaw) as in [40] and its Annexes 1 and 2.

Req-72: SIP telephony devices SHOULD support the Internet Low Bit Rate codec (iLBC) [41], [42]. ๐Ÿฆ‹

Req-73: Mobile SIP telephony devices MAY support codecs found in various wireless mobile networks. This can avoid codec conversion in network-based intermediaries.

Req-74: SIP telephony devices MAY support a small set of special purpose codecs, such as G.723.1 where low bandwidth usage is needed (for dial-up Internet access), Speex [43], or G.722 for high-quality audio conferences.

Req-75: SIP telephony devices MAY support G.729 and its annexes. Note: The G.729 codec is included here for backward compatibility only, since the iLBC and the G.723.1 codecs are preferable in bandwidth-constrained environments. ๐Ÿ™ˆ

Note: The authors believe the Internet Low Bit Rate codec (iLBC) should be the default codec for Internet telephony. iLBC as the default, honestly iconic ๐ŸŽ€

A summary count reveals up to 25 and more voice codec types currently in use. ๐Ÿ˜ญ The authors also believe there is a need for a single multi-rate Internet codec, such as Speex or something similar, that can effectively be substituted for all of the multiple legacy G.7xx codec types (G.711, G.729, G.723.1, G.722, etc.) across various data rates. That would avoid the complexity and cost for implementers and service providers alike, who are burdened by supporting so many codec types, plus the licensing costs. Not the vibe of 25 codecs ngl ๐Ÿ’€

2.15. Telephony Sound Requirements ๐Ÿ”Š

Req-76: SIP telephony devices SHOULD comply with the handset receive comfort noise requirements outlined in the ANSI standards [44], [45].

Req-77: SIP telephony devices SHOULD comply with the stability or minimum loss defined in ITU-T G.177.

Req-78: SIP telephony devices MAY support a full-duplex speakerphone function with echo and side tone cancellation. The design of high-quality side tone cancellation for desktop IP phones, laptop computers, and PDAs is outside the scope of this memo. ๐Ÿ™ˆ

Req-79: SIP telephony device MAY support different ring tones based on the caller identity. ๐ŸŽถ

2.16. International Requirements ๐ŸŒ

Req-80: SIP telephony devices SHOULD indicate the preferred language [46] using User Agent capabilities [26]. ๐Ÿ’ฌ

Req-81: SIP telephony devices intended to be used in various language settings MUST support other languages for menus, help, and labels. Non-negotiable bestie ๐Ÿซถ

The following requirements apply to functions placed in the SIP telephony device.

Req-82: SIP telephony devices that have a large display and support presence SHOULD display a buddy list [24]. โœจ

Req-83: SIP telephony devices MAY support Lightweight Directory Access Protocol (LDAP) for client-based directory lookup.

Req-84: SIP telephony devices MAY support a phone setup where a URL is automatically dialed when the phone goes off-hook. ๐Ÿ“ž

2.18. Web-Based Feature Management ๐ŸŒ

Req-85: SIP telephony devices SHOULD support an internal web server so users can manually configure the phone and set up personal phone applications in a user-friendly fashion. Those apps include the address book, speed-dial, ring tones, and, last but not least, the call handling options for the various lines and aliases ๐Ÿ’… Web pages to manage the SIP telephony device SHOULD be supported by the individual device, or MAY be supported in managed networks from centralized web servers linked from a URI.

Managing SIP telephony devices SHOULD NOT require special client software on the PC or require a dedicated management console. SIP telephony devices SHOULD support https transport for this purpose. ๐Ÿ”’

In addition to the Web Based Feature Management requirement, the device MAY have an SNMP interface for monitoring and management purposes. ๐Ÿ“Š

2.19. Firewall and NAT Traversal ๐Ÿงฑ

The following requirements allow SIP clients to properly function behind various firewall architectures. ๐Ÿฆ‹

Req-86: SIP telephony devices SHOULD be able to operate behind a static Network Address Translation/Port Address Translation (NAPT) device. This implies the SIP telephony device SHOULD be able to 1) populate SIP messages with the public, external address of the NAPT device; 2) use symmetric UDP or TCP for signaling; and 3) use symmetric RTP [47].

Req-87: SIP telephony devices SHOULD support the Simple Traversal of UDP through NATs (STUN) protocol [48] for determining the NAPT public external address. A classification of scenarios and NATs where STUN is effective is reported in [49]. Detailed call flows for interactive connectivity establishment (ICE) [50] are given in [51]. Note: Developers are strongly advised to follow the document on best current practices for NAT traversal for SIP [51]. ๐Ÿšจ

Req-88: SIP telephony devices MAY support UPnP (http://www.upnp.org/) for local NAPT traversal. Note that UPnP does not help if there is NAPT in the network of the service provider. ๐Ÿ™ƒ

Req-89: SIP telephony devices MUST be able to limit the ports used for RTP to a provisioned range. ๐ŸŽ€

2.20. Device Interfaces ๐Ÿ“ฑ

Req-90: SIP telephony devices MUST support two types of addressing capabilities, so end users can "dial" either phone numbers or URIs. ๐Ÿ“žโœจ

Req-91: SIP telephony devices MUST have a telephony-like dial-pad and MAY have telephony-style buttons such as mute, redial, transfer, conference, hold, etc. The traditional telephony dial-pad interface MAY appear as an option in large-screen telephony devices using other interface models, such as Push-To-Talk in mobile phones and the Presence and IM graphical user interface (GUI) found in PCs, PDAs, mobile phones, and cordless phones.

Req-92: SIP telephony devices MUST have a convenient way for entering SIP URIs and phone numbers. This includes all alphanumeric characters allowed in legal SIP URIs. Possible approaches include using a web page, display and keyboard entry, type-ahead, or graffiti for PDAs. โŒจ๏ธ

Req-93: SIP telephony devices should allow phone number entry in human-friendly fashion, with the usual separators and brackets between digits and digit groups. ๐Ÿ“


3. Glossary and Usage for the Configuration Settings ๐Ÿ“–โœจ

SIP telephony devices are quite complex, and their configuration is made more difficult by the widely diverse use of technical terms for the settings. ๐Ÿ˜ฉ So we present here a glossary of the most common settings and some of the more widely used values for some settings.

Settings are the information on a SIP UA that it needs so it can be a functional SIP endpoint. The settings defined in this document are not intended to be a complete listing of all possible settings. It MUST be possible to add vendor-specific settings. ๐Ÿงš

The list of available settings includes settings that MUST, SHOULD, or MAY be used by all devices (when present), and that make up the common denominator used and understood by all devices. However, the list is open to vendor-specific extensions that support additional settings, which enable a rich and valuable set of features. ๐Ÿ’œ

Settings MAY be read-only on the device. This avoids misconfiguration of important settings by inexperienced users, which could generate service cost for operators. The settings provisioning process SHOULD indicate which settings can be changed by the end user and which settings should be protected. ๐Ÿ”

In order to achieve wide adoption of any settings format, it is important that it should not be excessive in size for modest devices to use it. Any format SHOULD be structured enough to allow flexible extensions by vendors. Settings may belong to the device or to a SIP service provider and the Address of Record (AOR) registered there. When the device acts in the context of an AOR, it will first try to look up a setting in the AOR context. If the setting cannot be found in that context, the device will try to find the setting in the device context. If that also fails, the device MAY use a default value for the setting. ๐Ÿ”

The examples shown here are just informational in nature. Other documents may specify the syntax and semantics for the respective settings. ๐ŸŒธ

3.1. Device ID ๐Ÿ†”

A device setting MAY include some unique identifier for the device it represents. This MAY be an arbitrary device name chosen by the user, the MAC address, some manufacturer serial number, or some other unique piece of data. The Device ID SHOULD also indicate the ID type.

Example:

DeviceId="000413100A10;type=MAC"

3.2. Signaling Port ๐Ÿ“ก

The port that will be used for a specific transport protocol for SIP MAY be indicated with the SIP ports setting. If this setting is omitted, the device MAY choose any port within a range as specified in 3.3. For UDP, the port may also be used for sending requests so that NAT devices will be able to route the responses back to the UA.

Example:

SIPPort="5060;transport=UDP"

3.3. RTP Port Range ๐ŸŽง

A range of port numbers MUST be used by a device for the consecutive pairs of ports that MUST be used to receive audio and control information (RTP and RTCP) for each concurrent connection. Sometimes this is required to support firewall traversal, and it helps network operators identify voice packets. ๐Ÿฆ‹

Example:

RTPPorts="50000-51000"

3.4. Quality of Service ๐Ÿ’–

The Quality of Service (QoS) settings for outbound packets SHOULD be configurable for network packets associated with call signaling (SIP) and media transport (RTP/RTCP). These settings help network operators identify voice packets in their network and allow them to transport them with the required QoS. The settings are independently configurable for the different transport layers and for signaling, media, or administration. The QoS settings SHOULD also include the QoS mechanism. ๐Ÿš€

For both categories of network traffic, the device SHOULD permit configuration of the type of service settings for both layer 3 (IP DiffServ) and layer 2 (for example, IEEE 802.1D/Q) of the network protocol stack.

Example:

RTPQoS="0xA0;type=DiffSrv,5;type=802.1DQ;vlan=324"

3.5. Default Call Handling ๐Ÿ’–

okay so this section is all about the call handling settings, and the big news is that every single one of them can be set here as a default behavior ๐ŸŽ€ so the device knows what to do before anything fancy happens โœจ

3.5.1. Outbound Proxy

The outbound proxy for a device MAY be set ๐Ÿ’… The setting MAY require that all signaling packets MUST be sent to the outbound proxy, or that the outbound proxy MUST be used only when no route has been received. Either way, this makes sure application layer gateways are in the signaling path ๐Ÿฆ‹ The second option is the clever one, because it lets the outbound proxy optimize the routing ๐Ÿงš

Example: OutboundProxy="sip:nat.proxy.com"

3.5.2. Default Outbound Proxy

the default outbound proxy SHOULD be a global setting, meaning it isn't tied to one specific line ๐ŸŒธ

Example: DefaultProxy="sip:123@proxy.com"

3.5.3. SIP Session Timer

so the re-invite timer is what lets User Agents spot broken sessions caused by network failures ๐Ÿ˜ญ A value giving the number of seconds until the next re-invite SHOULD be used if one is provided ๐Ÿซถ

Example: SessionTimer="600;unit=seconds"

3.6. Telephone Dialing Functions ๐Ÿ“ž

bestie, most telephone users are used to punching in digits to say where they want to call, so we need a rule for turning those digits into a URI (usually a SIP URI or a TEL URI) ๐Ÿ’œ

3.6.1. Phone Number Representations

SIP phones need to understand the separators people put in phone book entries, like spaces, angle and round brackets, dashes, and dots ๐Ÿ“ For example, a phone book entry of "+49(30)398.33-401" should be translated into "+493039833401" โœจ

3.6.2. Digit Maps and/or the Dial/OK Key

a SIP UA has to translate user input before it can generate a valid request, and that's where digit maps come in ๐Ÿ—บ๏ธ Digit maps are settings that describe the parameters of this process. If they're present, digit maps define patterns that, when matched, set up the following:

  1. A rule by which the endpoint can judge that the user has completed dialing, and
  2. A rule to construct a URI from the dialed digits, and optionally
  3. An outbound proxy to be used in routing the SIP INVITE.

A critical timer MAY be provided, and it determines how long the device SHOULD wait before dialing if a dial plan contains a T (Timer) character โฑ๏ธ It MAY also provide a timer for the maximum elapsed time that SHOULD pass before dialing if the digits entered by the user match no dial plan. And if the UA has a Dial or OK key, pressing that key will override the timer setting ๐Ÿ‘‘

SIP telephony devices SHOULD have a Dial/OK key ๐Ÿ’– After sending a request, the UA SHOULD be prepared to receive a 484 Address Incomplete response. In that case, the UA should accept more user input and try again to dial the number ๐Ÿ™ˆ

An example digit map could use regular expressions, like the ones in DNS NAPTR (RFC 2915), to translate user input into a SIP URL โœจ Extra replacement patterns like "d" could insert the domain name of the used AOR, and extra parameters could go in the flags portion of the substitution expression ๐Ÿงš A list of those patterns would make up the dial plan:

|^([0-9]*)#$|sip:\1@\d;user=phone|outbound=proxy.com
|^([a-zA-Z0-9&=+\$,;?\-_.!~*'()%]+@.+)|sip:\1|
|^([a-zA-Z0-9&=+\$,;?\-_.!~*'()%]+)$|sip:\1@\d|
|^(.*)$|sip:\1@\d|timeout=5

3.6.3. Default Digit Map

the SIP telephony device SHOULD support the configuration of a default digit map ๐ŸŒˆ If the device doesn't support digit maps, it SHOULD at least support a default digit map rule for constructing a URI from digits. And if the endpoint does support digit maps, this rule applies whenever none of the digit maps match ๐Ÿซถ

For example, when a user enters "12345", the UA might send the request to "sip:12345@proxy.com;user=phone" after the user presses the OK key ๐Ÿ“ž

3.7. SIP Timer Settings โฒ๏ธ

the parameters for SIP (like timer T1) and other related settings MAY be indicated ๐Ÿ’… An example of usage would be reducing the DNS SRV failover time, which is very much a main character move ๐Ÿฆ‹

Example: SIPTimer="t1=100;unit=ms"

Note: The timer settings can be included in the digit map.

3.8. Audio Codecs ๐ŸŽถ

okay, operators really do want to control which codecs get used in their network ๐Ÿ‘€ So the desired subset of codecs supported by the device SHOULD be configurable, along with the order of preference. Service providers SHOULD have the option of plugging in their own codecs of choice ๐Ÿ’œ The codec settings MAY include the packet length and other parameters like silence suppression or comfort noise generation ๐ŸŒธ The available codecs will be used in codec negotiation according to RFC 3264.

Example: Codecs="speex/8000;ptime=20;cng=on,gsm;ptime=30"

Privacy matters here too! The settings MUST include hints about privacy for audio using Secure Realtime Transport Protocol (SRTP), either mandating or encouraging the use of secure RTP ๐Ÿ”

Example: SRTP="mandatory"

3.9. DTMF Method โŒจ๏ธ

keyboard interaction can be indicated with in-band tones, or preferably with out-of-band RTP packets (RFC 2833 [13]) ๐Ÿฆ‹ The method for sending these events SHOULD be configurable, with an order of precedence. Settings MAY also include extra parameters, like the content-type that should be used ๐Ÿ“

Example: DTMFMethod="INFO;type=application/dtmf, RFC2833"

3.10. Local and Regional Parameters ๐ŸŒ

some settings depend on where the user is located, specifically the daylight saving time rules and the time zone ๐ŸŒž

Time Zone and UTC Offset: A time zone MAY be specified for the user. Where one is specified, it SHOULD use the schema used by the Olson Time One database [52] ๐Ÿ—บ๏ธ Database names look like Asia/Dubai or America/Los Angeles, where the first part is the continent or ocean and the second part is normally the largest city in that time zone ๐Ÿ™๏ธ Optional parameters like the UTC offset can give extra info to UAs that can't map the time zone onto an internal database ๐Ÿงš

Example: TimeZone="Asia/Dubai;offset=7200"

3.11. Time Server โฐ

a time server SHOULD be used ๐Ÿ’– DHCP is the preferred way to provide this setting. Optional parameters may indicate the protocol that SHOULD be used for determining the time. And if the DHCP time server setting is present, it has higher precedence than the time server setting ๐Ÿ‘‘

Example: TimeServer="12.34.5.2;protocol=NTP"

3.12. Language ๐ŸŒ

setting the correct language is important for smooth installs all around the globe ๐ŸŒ

A language setting SHOULD be specified for the whole device. When it is specified, it MUST use the codes defined in RFC 3066 so things stay predictable ๐Ÿ”ฅ

Example: Language="de"

It is recommended to set the language as writable, so that the user MAY change it. This setting SHOULD NOT be AOR related ๐Ÿ™ˆ

A SIP UA MUST be able to parse and accept requests containing international characters encoded as UTF-8, even if it can't display those characters in the user interface ๐ŸŒธ

3.13. Inbound Authentication ๐Ÿ”’

SIP lets a device limit incoming signaling to calls from a predefined set of authorized users on a list, and/or with valid passwords ๐Ÿ›ก๏ธ Note that the inbound proxy from most service providers may also screen incoming calls, but sometimes users want their own control over the screening inside the SIP telephony device ๐Ÿ‘€

A device SHOULD support a setting for whether authentication (on the device) is required, and what type of authentication is required ๐Ÿ’…

Example: InboundAuthentication="digest;pattern=*"

If inbound authentication is enabled, then a list of allowed users and credentials for calling this device MAY be used by the device. The credentials MAY contain the same data as the credentials for an AOR (i.e., URL, user, password digest, and domain) ๐Ÿ” This applies to SIP control signaling as well as call initiation ๐Ÿ“ž

3.14. Voice Message Settings ๐Ÿ“จ

various voice message settings require URIs for the service context, as specified in RFC 3087 [53] ๐Ÿ’œ

The message waiting indicator (MWI) address setting controls where the client SHOULD SUBSCRIBE to a voice message server, and what MWI summaries MAY be displayed [9] ๐Ÿ“ฌ

Example: MWISubscribe="sip:mailbox01@media.proxy.com"

User Agents SHOULD accept MWI information carried by SIP MESSAGE without prior subscription. This way, the setup of voice message settings can be skipped entirely ๐Ÿฅณ

3.15. Phonebook and Call History ๐Ÿ“’

the UA SHOULD have a phonebook and keep a history of recent calls ๐ŸŒท The phonebook SHOULD save its information in permanent memory, so it survives a device restart, or save it in an external database that permanently stores the information ๐Ÿ’พ

a device MAY specify the user who is currently registered on it. This SHOULD be an address-of-record URL specified in an AOR definition ๐Ÿชช

The whole point of saying which user is assigned to a device is so the device knows whose settings to use, which is the user section ๐Ÿ’… This is mostly about user roaming. Devices MAY let users sign on and then request that their settings be retrieved ๐Ÿƒโ€โ™€๏ธ Likewise, a user MAY stop using a device and want to disable their AOR while they're not present ๐Ÿ™…โ€โ™€๏ธ For the device to understand what to do, it MUST have some way of identifying users and knowing which user is using it. Splitting the user and device properties makes it clear what the user wants to enable or disable ๐ŸŽ€ Giving the user an identifier in the configuration gives an explicit handle for that user ๐Ÿซถ And for this to work, the device MUST have some way of identifying users and knowing which user is currently assigned to it ๐Ÿ‘‘

One possible roaming scenario: an agent is registered for several AORs (say, one or more personal AORs, plus one for each executive whose calls the administrator takes) ๐Ÿ’ผ If the agent wanders off to the copy room, they sign on to a device in there, and their user settings, including their AOR, roam right along with them ๐Ÿƒโ€โ™€๏ธ

The alternative is making the agent configure each AOR individually, which would be especially painful with standard telephone button entry ๐Ÿ˜ฉ

Managing user profiles, aggregating user or device AORs, and merging profile information from multiple management sources are all configuration server concerns, and they're out of scope for this document ๐Ÿ™…โ€โ™€๏ธ Still, being able to uniquely identify the device and user inside the configuration data makes server-based and local (on-device) configuration management way easier ๐Ÿงš

SIP telephony devices MUST use the AOR-related settings, as specified here ๐Ÿ’–

There are lots of properties that MAY be associated with the AOR, or with signaling addressed to or from the AOR, and some SHOULD be applied to it ๐ŸŒˆ AORs MAY be defined for a device or for a user of the device. At least one AOR MUST be defined in the settings, and it MAY belong to either the device itself or the user ๐Ÿ”ฅ

Example: AOR="sip:12345@proxy.com"

It MUST be possible to specify at least one set of domain, user name, and authentication credentials for each AOR. The user name and authentication credentials are used for authentication challenges ๐Ÿ”

3.18. Maximum Connections โœจ

okay bestie, a setting that defines the maximum number of simultaneous connections a device can support MUST be used by the device ๐Ÿ’… The endpoint might have some maximum limit, most likely set by its media handling capability. The number of simultaneous connections may also be limited by access bandwidth, like DSL, cable, or wireless users ๐Ÿ“ถ Other optional settings MAY include turning call waiting indication on or off ๐Ÿ””

A SIP telephony device MAY support at least two connections for three-way conference calls that are locally hosted ๐ŸŽ€ Example:

MaximumConnections="2;cwi=false;bw=128"

See the recent work on connection reuse [54] and the guidelines for connection-oriented transport for SIP [55] ๐Ÿฆ‹

3.19. Automatic Configuration and Upgrade โญ

automatic SIP telephony device configuration SHOULD use the processes and requirements described in [56] ๐Ÿงš The user name or the realm in the domain name SHOULD be used by the configuration server to automatically configure the device for individual- or group-specific settings, without any configuration by the user. Image and service data upgrades SHOULD also not require any settings by the user ๐Ÿซถ

3.20. Security Configurations ๐Ÿ”’

The device configuration usually contains sensitive information that MUST be protected ๐Ÿ˜ญ Examples include authentication information, private address books, and call history entries. Because of this, it is RECOMMENDED to use an encrypted transport mechanism for configuration data. Where devices use HTTP, this could be TLS ๐Ÿ”

For devices which use FTP or TFTP for content delivery, this can be achieved using symmetric key encryption ๐Ÿ“

Access to retrieving configuration information is also an important issue ๐Ÿ‘€ A configuration server SHOULD challenge a subscriber before sending configuration information.

The configuration server SHOULD NOT include passwords through the automatic configuration process. Users SHOULD enter the passwords locally ๐Ÿ™ˆ

4. Security Considerations ๐Ÿ›ก๏ธ

4.1. Threats and Problem Statement ๐Ÿ•ต๏ธ

While Section 2.11 states the minimal security requirements and NAT/firewall traversal that have to be met respectively by SIP telephony devices, developers and network managers have to be aware of the larger context of security for IP telephony, especially for those scenarios where security may reside in other parts of SIP-enabled networks ๐Ÿ’€

Users of SIP telephony devices are exposed to many threats [57] that include but are not limited to fake identity of callers, telemarketing, spam in IM, hijacking of calls, eavesdropping, and learning of private information such as the personal phone directory, user accounts and passwords, and the personal calling history ๐Ÿ˜ฑ Various denial of service (DoS) attacks are possible, such as hanging up on other people's conversations or contributing to DoS attacks of others.

Service providers are also exposed to many types of attacks that include but are not limited to theft of service by users with fake identities, DoS attacks, and the liabilities due to theft of private customer data and eavesdropping in which poorly secured SIP telephony devices or especially intermediaries such as stateful back-to-back user agents with media (B2BUA) may be implicated ๐Ÿšจ

SIP security is a hard problem for several reasons:

  • Peers can communicate across domains without any pre-arranged trust relationship.
  • There may be many intermediaries in the signaling path.
  • Multiple endpoints can be involved in such telephony operations as forwarding, forking, transfer, or conferencing.
  • There are seemingly conflicting service requirements when supporting anonymity, legal intercept, call trace, and privacy.
  • Complications arise from the need to traverse NATs and firewalls.

There are a large number of deployment scenarios in enterprise networks, using residential networks and employees using Virtual Private Network (VPN) access to the corporate network when working from home or while traveling. There are different security scenarios for each. The security expectations are also very different, say, within an enterprise network or when using a laptop in a public wireless hotspot, and it is beyond the scope of this memo to describe all possible scenarios in detail ๐ŸŒ

The authors believe that adequate security for SIP telephony devices can be best implemented within protected networks, be they private IP networks or service provider SIP-enabled networks where a large part of the security threats listed here are dealt with in the protected network ๐Ÿฐ A more general security discussion that includes network-based security features, such as network-based assertion of identity [58] and privacy services [7], is outside the scope of this memo, but must be well understood by developers, network managers, and service providers.

In the following, some basic security considerations as specified in RFC 3261 are discussed as they apply to SIP telephony devices ๐Ÿง

4.2. SIP Telephony Device Security ๐Ÿ”

Transport Level Security

SIP telephony devices that operate outside the perimeter of secure private IP networks (this includes telecommuters and roaming users) MUST use TLS to the outgoing SIP proxy for protection on the first hop. SIP telephony devices that use TLS must support SIPS in the SIP headers ๐ŸŽ€

Supporting large numbers of TLS channels to endpoints is quite a burden for service providers and may therefore constitute a premium service feature ๐Ÿ’Ž

Digest Authentication

SIP telephony devices MUST support digest authentication to register with the outgoing SIP registrar. This ensures proper identity credentials that can be conveyed by the network to the called party ๐Ÿชช It is assumed that the service provider operating the outgoing SIP registrar has an adequate trust relationship with its users and knows its customers well enough (identity, address, billing relationship, etc.). The exceptions are users of prepaid service. SIP telephony devices that accept prepaid calls MUST place "unknown" in the "From" header ๐Ÿ™…โ€โ™€๏ธ

End User Certificates

SIP telephony devices MAY store personal end user certificates that are part of some Public Key Infrastructure (PKI) [59] service for high-security identification to the outgoing SIP registrar as well as for end-to-end authentication. SIP telephony devices equipped for certificate-based authentication MUST also store a key ring of certificates from public certificate authorities (CAs) ๐Ÿ—๏ธ

Note the recent work in the IETF on certificate services that do not require the telephony devices to store certificates [60] โœจ

End-to-End Security Using S/MIME

S/MIME [61] MUST be supported by SIP telephony devices to sign and encrypt portions of the SIP message that are not strictly required for routing by intermediaries. S/MIME protects private information in the SIP bodies and in some SIP headers from intermediaries. The end user certificates required for S/MIME ensure the identity of the parties to each other. Note: S/MIME need not be used, though, in every call ๐Ÿ’Œ

4.3. Privacy ๐Ÿ™ˆ

Media Encryption

Secure RTP (SRTP) [62] MAY be used for the encryption of media such as audio, text, and video, after the keying information has been passed by SIP signaling. Instant messaging MAY be protected end-to-end using S/MIME ๐Ÿ”

4.4. Support for NAT and Firewall Traversal ๐Ÿงฑ

The various NAT and firewall traversal scenarios require support in telephony SIP devices. The best current practices for NAT traversal for SIP are reviewed in [51]. Most scenarios where there are no SIP-enabled network edge NAT/firewalls or gateways in the enterprise can be managed if there is a STUN client in the SIP telephony device and a STUN server on the Internet, maintained by a service provider. In some exceptional cases (legacy symmetric NAT), an external media relay must also be provided that can support the Traversal Using Relay NAT (TURN) protocol exchange with SIP telephony devices. Media relays such as TURN come at a high bandwidth cost to the service provider, since the bandwidth for many active SIP telephony devices must be supported. Media relays may also introduce longer paths with additional delays for voice ๐Ÿข

Due to these disadvantages of media relays, it is preferable to avoid symmetric and non-deterministic NATs in the network, so that only STUN can be used, where required. Reference [63] deals in more detail with how NAT has to 'behave' ๐Ÿค“

It is not always obvious to determine the specific NAT and firewall scenario under which a SIP telephony device may operate ๐Ÿค”

For this reason, the support for Interactive Connectivity Establishment (ICE) has been defined to be deployed in all devices that required end-to-end connectivity for SIP signaling and RTP media streams, as well as for streaming media using Real Time Streaming Protocol (RTSP). ICE makes use of existing protocols, such as STUN and TURN ๐ŸŒธ

Call flows using SIP security mechanisms

The high-level security aspects described here are best illustrated by inspecting the detailed call flows using SIP security, such as in [64] ๐Ÿ“Š

Security enhancements, certificates, and identity management

As of this writing, recent work in the IETF deals with the SIP Authenticated Identity Body (AIB) format [65], new S/MIME requirements, enhancements for the authenticated identity, and Certificate Management Services for SIP. We recommend developers and network managers to follow this work as it will develop into IETF standards ๐Ÿ‘‘

5. Acknowledgements ๐ŸŽ€

Okay bestie, big shoutout to everyone who helped make this happen ๐Ÿซถ Paul Kyzivat and Francois Audet gave super useful comments on how to support the dial plan requirements in Req-17 ๐Ÿ’…. Mary Barnes did a very detailed review of version 04, and it seriously leveled up the document โœจ. Ted Hardie, David Kessens, Russ Housley, and Harald Alvestrand also left useful comments on version 05, and those are reflected in this version ๐Ÿฆ‹.

We would like to thank Jon Peterson for very detailed comments on the previous version 0.3, which pushed us to rewrite a lot of this document ๐Ÿ”ฅ. John Elwell gave many detailed comments on version 04 ๐ŸŒธ. Rohan Mahy added several clarifications and led the discussions on support for the hearing disabled ๐Ÿ’œ. Those discussions wrapped up at the BOF on SIP Devices held during the 57th IETF, and the conclusions show up in the section on interactive text support for hearing- or speech-disabled users ๐ŸŒˆ.

Gunnar Hellstrom, Arnoud van Wijk, and Guido Gybels were instrumental in driving the specification for support of the hearing disabled ๐Ÿ‘‘.

The authors also want to thank the many people who contributed comments and ideas to this work ๐Ÿงš: Henning Schulzrinne, Jorgen Bjorkner, Jay Batson, Eric Tremblay, David Oran, Denise Caballero McCann, Brian Rosen, Jean Brierre, Kai Miao, Adrian Lewis, and Franz Edler. Jonathan Knight contributed a lot to earlier versions of the requirements for SIP phones ๐ŸŽ€. Peter Baker also pointed us to the TIA/EIA IS 811 requirements for IP phones that are referenced here ๐Ÿ“.

Last but not least, the co-authors of the previous versions, Daniel Petrie and Ian Butcher, supported and guided these requirements the whole way through ๐Ÿ’–. Their contributions are now the focus of separate documents ๐Ÿฆ‹.


6. Informative References ๐Ÿ“š

[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[2] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002.

[3] Lemon, T. and S. Cheshire, "Encoding Long Options in the Dynamic Host Configuration Protocol (DHCPv4)", RFC 3396, November 2002.

[4] Mills, D., "Simple Network Time Protocol (SNTP) Version 4 for IPv4, IPv6 and OSI", RFC 4330, January 2006.

[5] Rosenberg, J. and H. Schulzrinne, "Session Initiation Protocol (SIP): Locating SIP Servers", RFC 3263, June 2002.

[6] Peterson, J., "enumservice registration for Session Initiation Protocol (SIP) Addresses-of-Record", RFC 3764, April 2004.

[7] Peterson, J., "A Privacy Mechanism for the Session Initiation Protocol (SIP)", RFC 3323, November 2002.

[8] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, June 2002.

[9] Mahy, R., "A Message Summary and Message Waiting Indication Event Package for the Session Initiation Protocol (SIP)", RFC 3842, August 2004.

[10] Schulzrinne, H., "The tel URI for Telephone Numbers", RFC 3966, December 2004.

[11] Sparks, R., "The Session Initiation Protocol (SIP) Refer Method", RFC 3515, April 2003.

[12] Johnston, A., "SIP Service Examples", Work in Progress, March 2006.

[13] Schulzrinne, H. and S. Petrack, "RTP Payload for DTMF Digits, Telephony Tones and Telephony Signals", RFC 2833, May 2000.

[14] Casner, S. and P. Hoschka, "MIME Type Registration of RTP Payload Formats", RFC 3555, July 2003.

[15] Camarillo, G., Eriksson, G., Holler, J., and H. Schulzrinne, "Grouping of Media Lines in the Session Description Protocol (SDP)", RFC 3388, December 2002.

[16] Camarillo, G. and H. Schulzrinne, "Early Media and Ringing Tone Generation in the Session Initiation Protocol (SIP)", RFC 3960, December 2004.

[17] Johnston, A., Donovan, S., Sparks, R., Cunningham, C., and K. Summers, "Session Initiation Protocol (SIP) Basic Call Flow Examples", BCP 75, RFC 3665, December 2003.

[18] Johnston, A., Donovan, S., Sparks, R., Cunningham, C., and K. Summers, "Session Initiation Protocol (SIP) Public Switched Telephone Network (PSTN) Call Flows", BCP 76, RFC 3666, December 2003.

[19] Rosenberg, J., Peterson, J., Schulzrinne, H., and G. Camarillo, "Best Current Practices for Third Party Call Control (3pcc) in the Session Initiation Protocol (SIP)", BCP 85, RFC 3725, April 2004.

[20] Mahy, R., et al., "A Call Control and Multi-party usage framework for the Session Initiation Protocol (SIP)", Work in Progress, March 2006.

[21] Johnston, A. and O. Levin, "Session Initiation Protocol Call Control - Conferencing for User Agents", Work in Progress, October 2005.

[22] Even, R. and N. Ismail, "Conferencing Scenarios", Work in Progress, September 2005.

[23] Hellstrom, G. and P. Jones, "RTP Payload for Text Conversation", RFC 4103, June 2005.

[24] Campbell, B., Rosenberg, J., Schulzrinne, H., Huitema, C., and D. Gurle, "Session Initiation Protocol (SIP) Extension for Instant Messaging", RFC 3428, December 2002.

[25] Rosenberg, J., "A Presence Event Package for the Session Initiation Protocol (SIP)", RFC 3856, August 2004.

[26] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Indicating User Agent Capabilities in the Session Initiation Protocol (SIP)", RFC 3840, August 2004.

[27] Schulzrinne, H., Gurbani, V., Kyzivat, P., and J. Rosenberg, "RPID: Rich Presence Extensions to the Presence Information Data Format (PIDF)", Work in Progress, September 2005.

[28] See the Working Group on Emergency Context Resolution with Internet Technologies at http://www.ietf.org/html.charters/ecrit-charter.html

[29] Schulzrinne, H. and J. Polk, "Communications Resource Priority for the Session Initiation Protocol (SIP)", RFC 4412, February 2006.

[30] Polk, J. and B. Rosen, "Session Initiation Protocol Location Conveyance", Work in Progress, July 2005.

[31] Charlton, N., Gasson, M., Gybels, G., Spanner, M., and A. van Wijk, "User Requirements for the Session Initiation Protocol (SIP) in Support of Deaf, Hard of Hearing and Speech-impaired Individuals", RFC 3351, August 2002.

[32] van Wijk, A., "Framework of requirements for real-time text conversation using SIP", Work in Progress, September 2005.

[33] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, July 2003.

[34] Friedman, T., Caceres, R., and A. Clark, "RTP Control Protocol Extended Reports (RTCP XR)", RFC 3611, November 2003.

[35] Pendleton, A., "SIP Package for Quality Reporting Event", Work in Progress, February 2006.

[36] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC 2246, January 1999.

[37] Heinanen, J., Baker, F., Weiss, W., and J. Wroclawski, "Assured Forwarding PHB Group", RFC 2597, June 1999.

[38] Braden, R., Zhang, L., Berson, S., Herzog, S., and S. Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 Functional Specification", RFC 2205, September 1997.

[39] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video Conferences with Minimal Control", STD 65, RFC 3551, July 2003.

[40] ITU-T Recommendation G.711, available online at http://www.itu.int.

[41] Andersen, S., Duric, A., Astrom, H., Hagen, R., Kleijn, W., and J. Linden, "Internet Low Bit Rate Codec (iLBC)", RFC 3951, December 2004.

[42] Duric, A. and S. Andersen, "Real-time Transport Protocol (RTP) Payload Format for internet Low Bit Rate Codec (iLBC) Speech", RFC 3952, December 2004.

[43] Herlein, G., et al., "RTP Payload Format for the Speex Codec", Work in Progress, October 2005.

[44] TIA/EIA-810-A, "Transmission Requirements for Narrowband Voice over IP and Voice over PCM Digital Wireline Telephones", July 2000.

[45] TIA-EIA-IS-811, "Terminal Equipment - Performance and Interoperability Requirements for Voice-over-IP (VoIP) Feature Telephones", July 2000.

[46] Alvestrand, H., "Tags for the Identification of Languages", BCP 47, RFC 3066, January 2001.

[47] Wing, D., "Symmetric RTP and RTCP Considered Helpful", Work in Progress, October 2004.

[48] Rosenberg, J., Weinberger, J., Huitema, C., and R. Mahy, "STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)", RFC 3489, March 2003.

[49] Jennings, C., "NAT Classification Test Results", Work in Progress, July 2005.

[50] Rosenberg, J., "Interactive Connectivity Establishment (ICE): A Methodology for Network Address Translator (NAT) Traversal for Offer/Answer Protocols", Work in Progress, July 2005.

[51] Boulton, C. and J. Rosenberg, "Best Current Practices for NAT Traversal for SIP", Work in Progress, October 2005.

[52] P. Eggert, "Sources for time zone and daylight saving time data." Available at http://www.twinsun.com/tz/tz-link.htm.

[53] Campbell, B. and R. Sparks, "Control of Service Context using SIP Request-URI", RFC 3087, April 2001.

[54] Mahy, R., "Connection Reuse in the Session Initiation Protocol (SIP)", Work in Progress, February 2006.

[55] Jennings, C. and R. Mahy, "Managing Client Initiated Connections in the Session Initiation Protocol", Work in Progress, March 2006.

[56] Petrie, D., "A Framework for SIP User Agent Profile Delivery", Work in Progress, July 2005.

[57] Jennings, C., "SIP Tutorial: SIP Security", presented at the VON Spring 2004 conference, March 29, 2004, Santa Clara, CA.

[58] Jennings, C., Peterson, J., and M. Watson, "Private Extensions to the Session Initiation Protocol (SIP) for Asserted Identity within Trusted Networks", RFC 3325, November 2002.

[59] Chokhani, S., Ford, W., Sabett, R., Merrill, C., and S. Wu, "Internet X.509 Public Key Infrastructure Certificate Policy and Certification Practices Framework", RFC 3647, November 2003.

[60] Jennings, C. and J. Peterson, "Certificate Management Service for The Session Initiation Protocol (SIP)", Work in Progress, March 2006.

[61] Ramsdell, B., "Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 3.1 Message Specification", RFC 3851, July 2004.

[62] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. Norrman, "The Secure Real-time Transport Protocol (SRTP)", RFC 3711, March 2004.

[63] Audet, F. and C. Jennings, "NAT Behavioral Requirements for Unicast UDP", Work in Progress, September 2005.

[64] Jennings, C., "Example call flows using SIP security mechanisms", Work in Progress, February 2006.

[65] Peterson, J., "Session Initiation Protocol (SIP) Authenticated Identity Body (AIB) Format", RFC 3893, September 2004.

Author's Addresses ๐ŸŽ€

okay, here are the three people who wrote this, so you know who to thank (or blame ๐Ÿ˜ญ๐Ÿซถ)

Henry Sinnreich
Pulver.com
115 Broadhollow Road
Melville, NY 11747, USA

EMail: henry@pulver.com
Phone: +1-631-961-8950


Steven Lass
Verizon
1201 East Arapaho Road
Richardson, TX 75081, USA

EMail: steven.lass@verizonbusiness.com
Phone: +1-972-728-2363


Christian Stredicke
snom technology AG
Gradestrasse, 46
D-12347 Berlin, Germany

EMail: cs@snom.de
Phone: +49(30)39833-0

Copyright (C) The Internet Society (2006). ๐Ÿ“œ

This document falls under the rights, licenses and restrictions in BCP 78, and unless it says otherwise there, the authors keep all their rights. ๐ŸŒธ

The document and everything in it are provided on an "AS IS" basis. THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ๐Ÿ’€

Intellectual Property ๐Ÿฆ‹

Okay, so the IETF doesn't take a side on whether any Intellectual Property Rights (or other rights) claimed over the technology in here are valid, how far they reach, or whether anyone can get a license for them. It also doesn't claim to have checked for any of those rights itself. ๐Ÿ™ˆ If you want the details on how rights work for RFC documents, check out BCP 78 and BCP 79. โœจ

Any IPR disclosures sent to the IETF Secretariat are available, along with any promised licenses, and so is the result of any attempt to get a general license or permission for implementers or users of this spec to use the proprietary rights. You can find all of that in the IETF online IPR repository at http://www.ietf.org/ipr. ๐Ÿ”ฅ

The IETF also invites anyone to tell them about copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard. Send that info to the IETF at ietf-ipr@ietf.org. ๐Ÿ’œ

Acknowledgement โœจ

Funding for the RFC Editor function comes from the IETF Administrative Support Activity (IASA). ๐Ÿซถ๐ŸŒˆ

๐Ÿ“ฆ where this page comes from