RFC 6271

Requirements for SIP-Based Session Peering

πŸ“… published June 2011, from ietf

Part 1 of 5 πŸ“œπŸŽ€

RFC 6271: Requirements for SIP-Based Session Peering πŸ’–

okay bestie, this is the doc πŸ¦‹ it was written by J-F. Mule at CableLabs, and it's an Informational RFC from June 2011 (ISSN: 2070-1721). It's published for info only, so it's not a standards track spec. The header doesn't list any RFCs it obsoletes or updates, so it's standing on its own 🌸

Abstract ✨

This memo is basically a list of protocol requirements so that session peering can work for voice, presence, instant messaging, and other multimedia traffic 🎢 It's an informational doc that connects the different session peering use cases to the protocol solutions for them πŸ’œ

Status of This Memo πŸ“Œ

This document is not an Internet Standards Track specification. It's published for informational purposes πŸ’…

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community, it got public review, and the Internet Engineering Steering Group (IESG) approved it for publication πŸ”₯ Not every IESG-approved doc is a candidate for any level of Internet Standard, so check Section 2 of RFC 5741 for that. πŸ™ˆ

Info about the current status of this doc, any errata, and how to send feedback is at http://www.rfc-editor.org/info/rfc6271 🌈

Copyright (c) 2011 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 (http://trustee.ietf.org/license-info) as they stand on the publication date. Read these carefully, because they explain your rights and restrictions for this doc πŸ“œ Code Components pulled out of this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as the Simplified BSD License describes ⭐

Table of Contents πŸ—ΊοΈ

1. Introduction ....................................................2
2. Terminology .....................................................3
3. General Requirements ............................................3
   3.1. Scope ......................................................4
   3.2. Border Elements ............................................4
   3.3. Session Establishment Data .................................8
        3.3.1. User Identities and SIP URIs ........................8
        3.3.2. URI Reachability ....................................9
4. Requirements for Session Peering of Presence and
   Instant Messaging ..............................................10
5. Security Considerations ........................................12
   5.1. Security Properties for the Acquisition of Session
        Establishment Data ........................................12
   5.2. Security Properties for the SIP Signaling Exchanges .......13
   5.3. End-to-End Media Security .................................14
6. Acknowledgments ................................................15
7. References .....................................................15
   7.1. Normative References ......................................15
   7.2. Informative References ....................................15
Appendix A. Policy Parameters for Session Peering .................19
  A.1. Categories of Parameters for VoIP Session Peering and
       Justifications .............................................19
  A.2. Summary of Parameters for Consideration in Session
       Peering Policies ...........................................22

1. Introduction 🌷

Peering at the session level is basically an agreement between parties to swap multimedia traffic 🀝 Here we assume the Session Initiation Protocol (SIP) is what sets up sessions between SIP Service Providers (SSPs). The SSPs are called peers, and they're usually users, user groups, enterprises, real-time collaboration service communities, or other providers offering voice or multimedia services over SIP πŸ’…

A bunch of docs already give background on SIP session peering. The reader is expected to know the reference architecture in [ARCHITECTURE], the voice use cases in [VOIP], and the instant messaging and presence stuff in [RFC5344] πŸ“š

Session-layer peering can happen bilaterally (direct peering between two SSPs), or indirectly (through a third-party SSP that both SSPs trust as a session intermediary). Check the terminology doc [RFC5486] for more details πŸ¦‹

This document starts with the general requirements. Then it analyzes the use cases to pull out the protocol requirements that have to be met for those use cases to work 🧠 These requirements are meant to be independent of the media type, so they cover Voice over IP (VoIP), video telephony, and instant messaging (IM) alike πŸŽ€ The requirements that are specific to presence and instant messaging live in Section 4 ✨

This document doesn't try to force SSPs to use any IETF protocol other than SIP for session peering πŸ™…β€β™€οΈ Instead, it points out which requirements should be met and which protocols might be used to define the solution space πŸ’œ

Last but not least, there's an informative appendix with a list of parameters for defining a session peering policy. Think of it as an example of the stuff SSPs may need to discuss or agree on before they can swap SIP traffic πŸ“‹

2. Terminology πŸ“–

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. 🫢

This document also reuses the terminology defined in [RFC5486] πŸ”

It's assumed you already know the Session Description Protocol (SDP) [RFC4566] and the Session Initiation Protocol (SIP) [RFC3261]. Last thing: when it's written with capital letters, the term 'Authentication Service' means what SIP Identity [RFC4474] defines it as πŸ”

3. General Requirements 🧩

The following sub-sections have general requirements that apply to more than one use case for multimedia session peering 🌈

3.1. Scope πŸ”­

The main focus here is the requirements for the edges of Layer 5 SIP networks. That covers SIP entities, signaling path border elements (SBEs), and the protocol requirements for looking up and location routing the session establishment data πŸ—ΊοΈ Requirements for SIP User Agents, or for provisioning the session data, are out of scope πŸ™…β€β™€οΈ

SIP Service Providers have to reach agreement on a lot of points when they set up session peering relationships 🀝

This doc only covers certain bits of a session peering agreement. It describes the requirements relevant to protocols in four areas: declaring, advertising, and managing ingress and egress border elements for session signaling and media (Section 3.2); the information exchanged about Session Establishment Data (SED, Section 3.3); specific requirements for presence and instant messaging (Section 4); and the security properties that may be desirable for securing session exchanges (Section 5) πŸ”βœ¨

There are plenty of other considerations in session peering arrangements that are important for a successful agreement, but they're out of scope here πŸ™ˆ That includes info about SIP protocol support (for example, SIP extensions and field conventions); media (like the type of media traffic being exchanged, compatible media codecs and transport protocols, and mechanisms for differentiated quality of service for media); Layer 3 IP connectivity between the signaling and data path border elements; and accounting and traffic capacity control (for example, the max number of SIP sessions at each ingress point, or the max number of concurrent IM or VoIP sessions) πŸ“Š

Appendix A is informative and lists parameters you might consider when talking about the technical parameters of SIP session peering πŸŽ€ The point of that list is to capture the parameters that sit outside the scope of the protocol requirements πŸ’–


Part 1 done, bestie 🫢 Four more parts are coming, so stay tuned πŸ‘‘

3.2. Border Elements πŸšͺ

okay so border elements need to be super easy to manage, which means you get maximum flexibility in how they're declared or dynamically advertised πŸ’… in any session peering setup, a SIP Service Provider needs a way to declare or dynamically advertise the SIP entities that face its peer's network. the data path border elements usually get signaled dynamically in the session description πŸ¦‹

the use cases in [VOIP] list the different border elements between SIP Service Providers. that includes signaling path border elements (SBEs) and SIP proxies (or any SIP entity at the boundary of the Layer 5 network) 🌸

  • Requirement #1:

Protocol mechanisms MUST be provided to enable a SIP Service Provider to communicate the ingress signaling path border elements of its service domain. πŸ”₯

Notes on solution space:

The SBEs may be advertised to session peers using static mechanisms, or they may be dynamically advertised. there's general agreement that [RFC3263] handles dynamically advertising ingress SBEs in most direct or indirect peering cases 🧚 we dig into the DNS-based solution space more in Requirement #4 below, especially when the DNS response changes based on who sends the query (peer-dependent SBEs) πŸ‘€

  • Requirement #2:

Protocol mechanisms MUST be provided to enable a SIP Service Provider to communicate the egress SBEs of its service domain. ✨

Notes on motivations for this requirement:

for capacity planning, traffic engineering, and call admission control, an SIP Service Provider might get asked where it's going to generate SIP calls from πŸ“Š the SSP accepting calls from a peer may want to know where SIP calls will originate (this info is usually used by the terminating SSP) πŸ™ˆ

while provisioning requirements are out of scope, some SSPs may find it useful to have a mechanism to dynamically advertise or discover a peer's egress SBEs πŸ’–

If the SSP also provides media streams to its users, as shown in the use cases for "originating" and "terminating" SSPs, a mechanism must exist that lets SSPs advertise their egress and ingress data path border elements (DBEs), if applicable. some SSPs have open policies and accept media traffic from anywhere outside their network to anywhere inside it 🌈 other SSPs want to optimize media delivery and identify media paths between peers before any traffic gets sent (Layer 5 to Layer 3 Quality of Service (QoS) mapping) πŸŽ€

  • Requirement #3:

Protocol mechanisms MUST be provided to allow a SIP Service Provider to communicate its DBEs to its peers. πŸ’œ

Notes: some SSPs in SIP interconnects do swap this DBE info in a static manner. some don't 🫢

In some SIP networks, SSPs may expose the same border elements to all peers. in other environments it's super common for SSPs to advertise specific SBEs and DBEs to certain peers πŸ‘‘ they do this to hit specific goals for a given peer: routing optimization of the signaling and media exchanges, optimizing latency or throughput based on the 'best' SBE and DBE combination, and other service provider policy parameters πŸ’… these are some of the reasons why advertising SBEs and DBEs may be peer dependent πŸ¦‹

  • Requirement #4:

The mechanisms recommended for the declaration or advertisement of SBE and DBE entities MUST allow for peer variability. πŸ”₯

Notes on solution space:

a simple solution is to advertise SBE entities using DNS and [RFC3263] by giving different DNS names to different peers πŸ“ but this has practical limits, because the SIP URIs containing the DNS names used to resolve the SBEs can get passed around by users, for example in the form of sip:user@domain πŸ™ˆ it's impractical to ask users to use different target URIs based on their SIP Service Provider's wish to receive incoming session signaling at different ingress SBEs depending on the originator 😭 so the solution described in [RFC3263], which uses DNS to advertise SBEs, is under specified for this requirement πŸ’€

other DNS mechanisms have been used a lot elsewhere on the Internet, especially in Content Distribution Internetworking, to make DNS responses vary based on the originator of the DNS query (see [RFC3466], [RFC3568], and [RFC3570]) ✨ whether those work for session peering needs more analysis 🧐

finally, other techniques such as Anycast services ([RFC4786]) may be used at lower layers than Layer 5 to solve this requirement 🌸 for example, anycast nodes could be defined by SIP service providers to expose a common address for SBEs into DNS, letting the anycast node address resolve to the right peer-dependent service address based on the routing topology or other criteria gathered from combining anycast and DNS techniques 🧚

Notes on variability of the SBE advertisements based on the media capabilities:

some SSPs may have restrictions on the type of media traffic their SBEs can accept. but for SIP sessions, those restrictions can't be communicated before the session starts: a SIP target might support voice-only media, voice and video, or voice and instant messaging πŸŽ€ not being able to find out whether a certain type of SIP session can be terminated by a certain SBE can make session attempts fail, but the group agreed NOT to add a new requirement in this document 😀

wait, correction, the group agreed not to add a new requirement, so no new requirement here πŸ’– these aspects are basically covered by SSPs when they discuss traffic exchange policies, and they're out of scope for this document 🫢

In the use cases for direct and indirect peering, an SSP deals with multiple SIP entities and multiple SBEs in its own domain 🌈 there's often a many-to-many relationship between the SIP proxies inside the SSP's trusted network boundary and its signaling path border elements at the network boundaries πŸ’…

It should be possible for an SSP to define which egress SBE a SIP entity must use for a given peer destination. πŸ¦‹

For example, in the static direct peering scenario (Figure 2 in Section 5.2. of [VOIP]), it should be possible for the SIP proxy in the originating network (O-Proxy) to pick the right egress SBE (O-SBE) to reach the SIP target, based on the info the proxy gets from the Look-Up Function (O-LUF) and/or Location Routing Function (O-LRF), message response labeled (2) πŸ‘‘ this example also applies to indirect peering, when a service provider has multiple service areas, each with multiple SIP proxies and a few SBEs 🌸

  • Requirement #5:

The mechanisms recommended for the Look-Up Function (LUF) and the Location Routing Functions (LRF) MUST be capable of returning both a target URI destination and a value providing the next SIP hop(s). πŸ”₯

Notes: solutions may exist depending on which protocol gets used between the Proxy and its LUF/LRF 🧚 the idea is for the O-Proxy to be handed the next SIP hop and the equivalent of one or more SIP Route header values ✨ if ENUM is used as the protocol for the LUF, the solution space is undefined πŸ’€

it's desirable for an SSP to be able to communicate how authentication of a peer's SBEs will happen (see the security requirements for more details) 🫢

  • Requirement #6:

The mechanisms recommended for locating a peer's SBE MUST be able to convey how a peer should initiate secure session establishment. πŸ”

Notes: some mechanisms already exist. for example, the required use of SIP over TLS may be discovered via [RFC3263], and guidelines on using the SIPS URI scheme in SIP have been documented in [RFC5630] πŸŽ€

3.3. Session Establishment Data 🧾

The Session Establishment Data (SED) is defined in [RFC5486] as the data used to route a call to the next hop associated with the called domain's ingress point. here are some general requirements on the SED data πŸ’œ

3.3.1. User Identities and SIP URIs πŸͺͺ

User identities used between peers can be represented in lots of different formats 🌈 Session Establishment Data should rely on URIs (Uniform Resource Identifiers, [RFC3986]), and SIP URIs should be preferred over tel URIs ([RFC3966]) for session peering of VoIP traffic πŸ’…

The use of DNS domain names and hostnames is recommended in SIP URIs, and they should be resolvable on the public Internet 🌸 as for the user part of SIP URIs, the mechanisms for session peering should not require an SSP to know which individual user identities are valid within its peer's domain πŸ™ˆ

  • Requirement #7:

The protocols used for session peering MUST accommodate the use of different types of URIs. URIs with the same domain-part SHOULD share the same set of peering policies, so the domain of the SIP URI may be used as the primary key to any info about the reachability of that SIP URI πŸ”‘ The host part of SIP URIs SHOULD contain a fully qualified domain name instead of a numeric IPv4 or IPv6 address. 🧚

  • Requirement #8:

The mechanisms for session peering should not require an SSP to be aware of which individual user identities are valid within its peer's domain. 🫢

  • Notes on the solution space for Requirements #7 and #8:

this is generally well supported by IETF protocols πŸ‘‘ when telephone numbers are in tel URIs, SIP requests can't be routed using the traditional DNS resolution procedures standardized for SIP, as indicated in [RFC3824] 😭 that means solutions built for session peering must not solely use Public Switched Telephone Network (PSTN) identifiers such as Service Provider IDs (SPIDs) or Trunk Group IDs. they shouldn't be ruled out, but solutions shouldn't be limited to them either πŸŽ€

Motivations:

even though SED data may be based on E.164-based SIP URIs for voice interconnects, a generic peering methodology should not rely on such E.164 numbers πŸ’–

3.3.2. URI Reachability πŸ“‘

Based on a well-known URI type (e.g., sip:, pres:, or im: URIs), it must be possible to determine whether the SSP domain servicing the URI allows session peering. if it does, it should be possible to locate and retrieve the domain's policy and SBE entities 🌈

for example, an originating service provider must be able to figure out whether a SIP URI is open for direct interconnection without needing an SBE to start a SIP request πŸ¦‹ also, since each call setup means running whatever algorithm is proposed, setting up a SIP session via peering should have minimal overhead and delay, and use caching wherever possible to avoid extra protocol round trips ⭐

  • Requirement #9:

The mechanisms for session peering MUST allow an SBE to locate its peer SBE given a URI type and the target SSP domain name. πŸŽ€

4. Requirements for Session Peering of Presence and Instant Messaging ✨

This section is all about the requirements for presence and instant messaging session peering πŸ’¬

Two SSPs set up a peering relationship so their IM and presence users can hang out and collaborate with users on the other SSP network 🫢 We're focusing on inter-domain subscriptions to presence information, the exchange of messages and privacy settings, and using standard presence document formats across domains 🌸

Several presence and IM peering use cases are described in [RFC5344], a document written by A. Houri, E. Aoki, and S. Parameswar. Credit for turning the original content from those use cases into the requirements in this section must go to them πŸ‘‘

  • Requirement #10:

The mechanisms recommended for the exchange of presence information between SSPs SHOULD allow a user of one presence community to send a presence subscription request to presentities served by another SSP via its local community, including subscriptions to a single presentity, a personal, public or ad hoc group list of presentities. πŸ¦‹

Notes: see Sections 2.1 and 2.2 of [RFC5344].

  • Requirement #11:

The mechanisms recommended for instant messaging exchanges between SSPs SHOULD allow a user of one SSP's community to communicate with users of the other SSP community via their local community using the various methods. Note that some SSPs may exercise some control over which methods are allowed based on service policies. Such methods include sending a one-time IM message, initiating a SIP session for transporting sessions of messages, participating in n-way chats using chat rooms with users from the peer SSPs, etc. πŸ’…

Notes: see Sections 2.4, 2.5, and 2.6 of [RFC5344].

  • Requirement #12:

In some presence communities, users can define the list of watchers that receive presence notifications for a given presentity. Such privacy settings for watcher notifications per presentity are typically not shared across SSPs, which causes multiple notifications to be sent for one presentity change between SSPs. πŸ™ˆ

The sharing of those privacy settings per presentity between SSPs would allow fewer notifications: a single notification would be sent per presentity, and the terminating SSP would send notifications to the appropriate watchers according to the presentity's privacy information. Lowkey genius, right? ✨

The mechanisms recommended for presence information exchanges between SSPs SHOULD allow the sharing of some user privacy settings so users can convey the list of watchers that can receive notification of presence information changes on a per-presentity basis. πŸŽ€

The privacy sharing mechanism must be done with the express consent of the user whose privacy settings will be shared with the other community. Because of the privacy-sensitive information exchanged between SSPs, the protocols used for the exchange of presence information must follow the security recommendations defined in Section 6 of [RFC3863]. Privacy is not a vibe to mess with, bestie πŸ”’

Notes: see Section 2.3 of [RFC5344].

  • Requirement #13:

It should be possible for an SSP to associate a presence document with a list of watchers in the peer SSP community so that the peer watchers can receive the presence document notifications. This means fewer presence document notifications between the communities, and no need to share presentities' privacy information from one community to the other. Iconic. 🧚

The systems used to exchange presence documents between SSPs SHOULD allow a presence document to be delivered to one or more watchers. 🌈

Note: The presence document and the list of authorized watchers in the peer SSP may be sent separately. Also, the privacy-sharing mechanisms defined in Requirement #12 also apply to this requirement.

  • Requirement #14:

Early deployments of SIP-based presence and instant messaging gateways were built in front of legacy proprietary systems that use different naming schemes or name values for the elements and properties defined in a Presence Information Data Format (PIDF) document ([RFC3863]). For example, the value "Do Not Disturb" in one presence service may be mapped to "Busy" in another system for the status element. Beyond this example of status values, it is important to ensure that the meaning of the presence information is preserved between SSPs. Meaning matters, periodt πŸ“

The systems used to exchange presence documents between SSPs SHOULD use standard PIDF documents and translate any non-standard value of a PIDF element to a standard one. πŸ’–


5. Security Considerations πŸ”

This section describes the security properties that are desirable for the protocol exchanges in scope of session peering. Three types of information flows are described in the architecture and use case documents: the acquisition of the Session Establishment Data (SED) based on a destination target via the Look-Up and Location Routing Functions (LUF and LRF), the SIP signaling between SIP Service Providers, and the associated media exchanges. πŸ›‘οΈ

This section is focused on three security services: authentication, data confidentiality, and data integrity, as summarized in [RFC3365]. However, this text does not specify the mandatory-to-implement security mechanisms as required by [RFC3365]. That is left for future protocol solutions that meet the requirements. Future-us problem, but still important πŸ™ˆ

A security threat analysis provides additional guidance for session peering ([VOIPTHREATS]). Go read it, bestie πŸ“š

5.1. Security Properties for the Acquisition of Session Establishment Data

The Look-Up Function (LUF) and Location Routing Function (LRF) are defined in [RFC5486]. They provide mechanisms for determining the SIP target address and domain the request should be sent to, plus the associated SED to route the request to that domain. πŸ—ΊοΈ

  • Requirement #15:

The protocols used to query the Look-Up and Location Routing Functions SHOULD support mutual authentication.

Motivations:

A mutual authentication service should be provided for the LUF and LRF protocol exchanges. The content of the response returned by the LUF and LRF may depend on the identity of the requestor, so authenticating the LUF and LRF requests is a desirable property. Mutual authentication is also desirable: the requestor may verify the identity of the systems that provided the LUF and LRF responses, given the nature of the data returned in those responses. Authentication also helps protect the availability of the LUF and LRF against attackers who would attempt Denial-of-Service (DoS) attacks by sending bogus requests that make the LUF perform a lookup and consume resources. πŸ’€

  • Requirement #16:

The protocols used to query the Look-Up and Location Routing Functions SHOULD provide support for data confidentiality and integrity.

Motivations:

Given the sensitive nature of the session establishment data exchanged with the LUF and LRF functions, the protocol mechanisms chosen for the look-up and location routing should offer data confidentiality and integrity protection (SED data may contain user addresses, SIP URI, location of SIP entities at the boundaries of SIP Service Provider domains, etc.). πŸ”

  • Notes on the solution space for Requirements #15 and #16:

ENUM, SIP, and proprietary protocols are typically used today for accessing these functions. Even though SSPs may use lower-layer security mechanisms to guarantee some of those security properties, candidate protocols for the LUF and LRF should meet the above requirements. πŸ¦‹

5.2. Security Properties for the SIP Signaling Exchanges

The SIP signaling exchanges are out of scope of this document. This section describes some of the security properties that are desirable in the context of SIP interconnects between SSPs, without formulating any normative requirements. Chill, no pressure 🌸

In general, the security properties desirable for the SIP exchanges in an inter-domain context apply to session peering. These include:

  • securing the transport of SIP messages between the peers' SBEs. Authentication of SIP communications is desirable, especially in the context of session peering involving SIP intermediaries. Data confidentiality and integrity of the SIP message body may be desirable as well given some of the levels of session peering indirection (indirect/assisted peering), but they could be harmful as they may prevent intermediary SSPs from "inserting" SBEs/DBEs along the signaling and data paths. 🧩
  • providing an Authentication Service to authenticate the identity of connected users based on the SIP Service Provider domains (for both the SIP requests and the responses). 🫑

The fundamental mechanisms for securing SIP between proxy servers, intra- and inter-domain, are applicable to session peering. Refer to Section 26.2 of [RFC3261] for transport-layer security of SIP messages using TLS, [RFC5923] for establishing TLS connections between proxies, [RFC4474] for the protocol mechanisms to verify the identity of the senders of SIP requests in an inter-domain context, and [RFC4916] for verifying the identity of the sender of SIP responses. Lots of named mechanisms, but they're all giving protection ✨

5.3. End-to-End Media Security

Media security is critical to guarantee end-to-end confidentiality of the communication between the end-users' devices, independently of how many direct or indirect peers are present along the signaling path. A number of desirable security properties come out of this goal. πŸ’œ

The establishment of media security may be achieved along the media path and not over the signaling path, given the indirect peering use cases. 🎧

For example, media carried over the Real-Time Protocol (RTP) can be secured using secure RTP (SRTP [RFC3711]). A framework for establishing SRTP security using Datagram TLS (DTLS) [RFC4347] is described in [RFC5763]: it allows for end-to-end media security establishment using extensions to DTLS ([RFC5764]). πŸ”

It should also be noted that media can be carried in numerous protocols other than RTP, such as SIP (SIP MESSAGE method), MSRP (the Message Session Relay Protocol, [RFC4975]), XMPP (the Extensible Messaging and Presence Protocol, [RFC6120]), and many others. Media may also be carried over TCP ([RFC4571]), and it can be encrypted over secure connection-oriented transport sessions over TLS ([RFC4572]). So many options, so many ways to slay πŸ’…

A desirable security property for session peering is for SIP entities to be transparent to the end-to-end media security negotiations: SIP entities should not intervene in the Session Description Protocol (SDP) exchanges for end-to-end media security. Hands off the SDP, no drama πŸ™Œ

  • Requirement #17:

The protocols used to enable session peering MUST NOT interfere with the exchanges of media security attributes in SDP. Media attribute lines that are not understood by SBEs MUST be ignored and passed along the signaling path untouched. 🚫🌈

6. Acknowledgments πŸ’–

okay so this doc is built on input and contributions from a HUGE crew 🫢 including Bernard Aboba, Edwin Aoki, Scott Brim, John Elwell, Patrik Faltstrom, Mike Hammer, Avshalom Houri, Otmar Lendl, Jason Livingood, Daryl Malas, Dave Meyer, Bob Natale, Sriram Parameswar, Jon Peterson, Benny Rodrig, Brian Rosen, Eric Rosenfeld, Peter Saint-Andre, David Schwartz, Richard Shocky, Henry Sinnreich, Richard Stastny, and Adam Uzelac. πŸ‘‘

Special thanks go to Rohan Mahy, Brian Rosen, and John Elwell for their early docs on guidelines and best current practices in different environments 🌸. Thanks also to Avshalom Houri, Edwin Aoki, and Sriram Parameswar for writing the presence and instant messaging requirements πŸ’œ, and to Dan Wing for giving detailed feedback on the Security Considerations sections πŸ™ˆ.


7. References πŸ“š

7.1. Normative References ✨

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

7.2. Informative References πŸ¦‹

[ARCHITECTURE]  Malas, D. and J. Livingood, "Session PEERing for
                Multimedia INTerconnect Architecture", Work
                in Progress, February 2011.

[RFC2198]       Perkins, C., Kouvelas, I., Hodson, O., Hardman, V.,
                Handley, M., Bolot, J., Vega-Garcia, A., and S.
                Fosse-Parisis, "RTP Payload for Redundant Audio
                Data", RFC 2198, September 1997.

[RFC3261]       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.

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

[RFC3365]       Schiller, J., "Strong Security Requirements for
                Internet Engineering Task Force Standard Protocols",
                BCP 61, RFC 3365, August 2002.

[RFC3455]       Garcia-Martin, M., Henrikson, E., and D. Mills,
                "Private Header (P-Header) Extensions to the Session
                Initiation Protocol (SIP) for the 3rd-Generation
                Partnership Project (3GPP)", RFC 3455, January 2003.

[RFC3466]       Day, M., Cain, B., Tomlinson, G., and P. Rzewski, "A
                Model for Content Internetworking (CDI)", RFC 3466,
                February 2003.

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

[RFC3568]       Barbir, A., Cain, B., Nair, R., and O. Spatscheck,
                "Known Content Network (CN) Request-Routing
                Mechanisms", RFC 3568, July 2003.

[RFC3570]       Rzewski, P., Day, M., and D. Gilletti, "Content
                Internetworking (CDI) Scenarios", RFC 3570,
                July 2003.

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

[RFC3702]       Loughney, J. and G. Camarillo, "Authentication,
                Authorization, and Accounting Requirements for the
                Session Initiation Protocol (SIP)", RFC 3702,
                February 2004.

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

[RFC3824]       Peterson, J., Liu, H., Yu, J., and B. Campbell,
                "Using E.164 numbers with the Session Initiation
                Protocol (SIP)", RFC 3824, June 2004.

[RFC3863]       Sugano, H., Fujimoto, S., Klyne, G., Bateman, A.,
                Carr, W., and J. Peterson, "Presence Information Data
                Format (PIDF)", RFC 3863, August 2004.

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

[RFC3986]       Berners-Lee, T., Fielding, R., and L. Masinter,
                "Uniform Resource Identifier (URI): Generic Syntax",
                STD 66, RFC 3986, January 2005.

[RFC4347]       Rescorla, E. and N. Modadugu, "Datagram Transport
                Layer Security", RFC 4347, April 2006.

[RFC4474]       Peterson, J. and C. Jennings, "Enhancements for
                Authenticated Identity Management in the Session
                Initiation Protocol (SIP)", RFC 4474, August 2006.

[RFC4566]       Handley, M., Jacobson, V., and C. Perkins, "SDP:
                Session Description Protocol", RFC 4566, July 2006.

[RFC4571]       Lazzaro, J., "Framing Real-time Transport Protocol
                (RTP) and RTP Control Protocol (RTCP) Packets over
                Connection-Oriented Transport", RFC 4571, July 2006.

[RFC4572]       Lennox, J., "Connection-Oriented Media Transport over
                the Transport Layer Security (TLS) Protocol in the
                Session Description Protocol (SDP)", RFC 4572,
                July 2006.

[RFC4786]       Abley, J. and K. Lindqvist, "Operation of Anycast
                Services", BCP 126, RFC 4786, December 2006.

[RFC4916]       Elwell, J., "Connected Identity in the Session
                Initiation Protocol (SIP)", RFC 4916, June 2007.

[RFC4975]       Campbell, B., Mahy, R., and C. Jennings, "The Message
                Session Relay Protocol (MSRP)", RFC 4975,
                September 2007.

[RFC5344]       Houri, A., Aoki, E., and S. Parameswar, "Presence and
                Instant Messaging Peering Use Cases", RFC 5344,
                October 2008.

[RFC5411]       Rosenberg, J., "A Hitchhiker's Guide to the Session
                Initiation Protocol (SIP)", RFC 5411, February 2009.

[RFC5486]       Malas, D. and D. Meyer, "Session Peering for
                Multimedia Interconnect (SPEERMINT) Terminology",
                RFC 5486, March 2009.

[RFC5503]       Andreasen, F., McKibben, B., and B. Marshall,
                "Private Session Initiation Protocol (SIP) Proxy-to-
                Proxy Extensions for Supporting the PacketCable
                Distributed Call Signaling Architecture", RFC 5503,
                March 2009.

[RFC5630]       Audet, F., "The Use of the SIPS URI Scheme in the
                Session Initiation Protocol (SIP)", RFC 5630,
                October 2009.

[RFC5763]       Fischl, J., Tschofenig, H., and E. Rescorla,
                "Framework for Establishing a Secure Real-time
                Transport Protocol (SRTP) Security Context Using
                Datagram Transport Layer Security (DTLS)", RFC 5763,
                May 2010.

[RFC5764]       McGrew, D. and E. Rescorla, "Datagram Transport Layer
                Security (DTLS) Extension to Establish Keys for the
                Secure Real-time Transport Protocol (SRTP)",
                RFC 5764, May 2010.

[RFC5923]       Gurbani, V., Mahy, R., and B. Tate, "Connection Reuse
                in the Session Initiation Protocol (SIP)", RFC 5923,
                June 2010.

[RFC6076]       Malas, D. and A. Morton, "Basic Telephony SIP End-to-
                End Performance Metrics", RFC 6076, January 2011.

[RFC6120]       Saint-Andre, P., "Extensible Messaging and Presence
                Protocol (XMPP): Core", RFC 6120, March 2011.

[VOIP]          Uzelac, A. and Y. Lee, "VoIP SIP Peering Use Cases",
                Work in Progress, April 2010.

[VOIPTHREATS]   Seedorf, J., Niccolini, S., Chen, E., and H. Scholz,
                "Session Peering for Multimedia Interconnect
                (SPEERMINT) Security Threats and Suggested
                Countermeasures", Work in Progress, March 2011.

Appendix A. Policy Parameters for Session Peering 🧚

This informative appendix is basically a shopping list πŸ›’ of parameter types that implementers should think about before deciding which configuration variables to expose to system administrators or management stations. It's also useful for SSPs, or federations of SSPs, when they talk through the technical side of a session peering policy πŸ’….

So in session peering land, a policy is the whole bundle of parameters and other info an SSP needs to swap traffic with another peer πŸŽ€. Some of those parameters may be statically exchanged and stay the same for the whole lifetime of the peering relationship. Others can be discovered and updated dynamically using some explicit protocol mechanisms ✨. Those dynamic ones may be session dependent, or they may apply across multiple sessions or peers.

There are lots of kinds of policy information that might need to be discovered or exchanged before session peering can be set up 🌈. At a minimum, a policy should specify session establishment data, so that session establishment failures get avoided πŸ™ˆ. A policy may also cover QoS, billing and accounting, and Layer 3 related interconnect requirements, but those are out of the scope of this document πŸ¦‹.

Some parts of a session peering policy must be agreed to and manually implemented 🀝. They're static, and they're usually written down in a business contract, a technical document, or an agreement between the parties. For some parameters tied to protocol support and capabilities, standard ways of expressing those policy parameters may be defined among SSPs and exchanged dynamically πŸ’œ. For example, templates could be created in various document formats, so that some of the domain policy could be dynamically discovered 🌸. Implementers could kick off those templates. For each software or hardware release, the template could list supported RFCs and the associated RFC parameters implemented in that release, in a standard format πŸ“. Then each SSP would fill in the template and adapt its content based on its service description, the deployed server or device configurations, and how those configurations vary across peer relationships πŸ‘‘.

That's the end of the appendix and the document, bestie 🌈✨

Appendix A. Policy Parameters for Session Peering πŸŽ€

A.1. Categories of Parameters for VoIP Session Peering and Justifications πŸ’…

okay bestie, this is the starter list of "discussion topics" that peers should hash out when they're setting up a VoIP peering relationship 🫢

  • IP Network Connectivity: 🌐

Session peers should define the IP network connectivity between their respective SBEs and DBEs. ngl this is out of scope for session peering, but SSPs still have to agree on one common mechanism for IP transport of session signaling and media. That can be done over private networks (like IPVPN or IPsec, etc.) or public IP networks ✨

  • Media-related Parameters: 🎢
    • Media Codecs: a list of the supported media codecs for audio, real-time fax (the T.38 version, if that applies), real-time text (RFC 4103), dual-tone multi-frequency (DTMF) transport, and voice band data communications (as applicable). Also includes the supported or recommended codec packetization rates, the level of RTP payload redundancy, audio volume levels, etc. so much detail, it's giving spreadsheet πŸ“ŠπŸŒΈ
    • Media Transport: the level of support for RTP-RTCP [RFC3550], RTP Redundancy (RTP Payload for Redundant Audio Data [RFC2198]), T.38 transport over RTP, etc. πŸ¦‹
    • Media variability at the signaling path border elements: a list of the media types supported by the various ingress points of a peer's network πŸšͺ
    • Other: support of the VoIP metric block as defined in RTP Control Protocol Extended Reports [RFC3611], etc. 🧚
  • SIP: πŸ“ž
    • A session peering policy should include the list of supported and required SIP RFCs, supported and required SIP methods (including private P headers if applicable), error response codes, and the supported or recommended format of some header field values, etc. the list goes on and on πŸ’–
    • It should also be possible to describe the supported SIP RFCs by functional groupings. A group of SIP RFCs might show how a call feature is implemented (call hold, transfer, conferencing, etc.), or it might point to a functional grouping like the one in [RFC5411]. bestie this is so organized πŸ“
  • Accounting: 🧾

Methods used for call or session accounting should be specified. An SSP may require a peer to track session usage. It is critical for peers to figure out whether support for any SIP extensions for accounting is a prerequisite for SIP interoperability, no skipping this one πŸ”₯ In some cases, call accounting feeds billing data, but not always. Some operators may go with a 'bill and keep' model, using accounting to track session usage and monitor it against service level agreements instead πŸ’œ

[RFC3702] defines the terminology and basic requirements for accounting of SIP sessions. A few private SIP extensions have also been defined and used over the years to enable call accounting between SSP domains, like the P-Charging* headers in [RFC3455] and the P-DCS-Billing-Info header in [RFC5503], etc. 🌈

  • Performance Metrics: πŸ“ˆ

Layer 5 performance metrics should be defined and shared between peers. These metrics apply directly to signaling or media. You can use them proactively to help avoid congestion, call quality issues, or call signaling failures, and as part of monitoring techniques, they can be used to evaluate the performance of peering exchanges. stats girlies unite ✨

Examples of SIP performance metrics include the maximum number of SIP transactions per second on a per-domain basis, Session Completion Rate (SCR), Session Establishment Rate (SER), etc. Some SIP end-to-end performance metrics are defined in [RFC6076], and a subset of those may apply to session peering and interconnects πŸ’…

Some media-related metrics for monitoring VoIP calls are defined in the VoIP Metrics Report Block, in Section 4.7 of [RFC3611] 🎧

  • Security: πŸ”

An SSP should describe the security requirements that other peers must meet in order to terminate calls to its network. Honestly this list often depends on the security models peers pre-agreed on, but it's expected that these parameters will become discoverable or signaled in the future, so session peering can happen outside SSP clubs πŸ‘‘ The list can get long and is made of high-level requirements (e.g., authentication, privacy, secure transport) plus low-level protocol configuration elements like TLS parameters 🫠

The following list isn't meant to be complete. It's a preliminary list of examples, so don't @ me for missing stuff πŸ™ˆ

  • Call admission requirements: some providers only admit sessions if certain criteria are met. For example, for some providers' networks, only incoming SIP sessions signaled over established IPsec tunnels or presented to the well-known TLS ports get in. Other call admission requirements may be tied to performance metrics like the ones above 🚧

Finally, some requirements might be imposed on lower layers, but those are considered out of scope of session peering ⭐

  • Call authorization requirements and validation: an SSP may require the presence of a caller or user identity. Some SSPs may also authorize an incoming session request by validating the caller's identity against white or black lists maintained by the service provider or by users (think traditional caller ID screening apps or IM white lists) πŸͺ„
  • Privacy requirements: an SSP may demand that its SIP messages be securely transported by its peers so the calling and called party information stays protected. Media sessions may need privacy too, and some SSP policies may include requirements on secure media transport protocols such as SRTP, plus constraints on the minimum authentication or encryption options for use in SRTP πŸ•΅οΈβ€β™€οΈ
  • Network-layer security parameters: this covers how IPsec security associations may be established, which IPsec key exchange mechanisms should be used, and any details on keying materials, the lifetime of timed security associations if applicable, etc. πŸ—οΈ
  • Transport-layer security parameters: this covers how TLS connections should be established, as described in Section 5 πŸ”’

A.2. Summary of Parameters for Consideration in Session Peering Policies πŸ—‚οΈ

this is the recap of everything from the last section, so you can see it all at once πŸ₯Ή These parameters may be part of a session peering policy and can show up with a level of requirement (mandatory, recommended, supported, etc.) ✨

  • IP Network Connectivity (assumed, requirements out of scope of this document) 🌐
  • Media session parameters: 🎬
    • Codecs for audio, video, real-time text, and instant messaging media sessions
    • Modes of communication for audio (voice, fax, DTMF) and IM (page mode, MSRP)
    • Media transport and means to establish secure media sessions
    • List of ingress and egress DBEs where applicable, including STUN Relay servers if present
  • SIP πŸ“ž
    • SIP RFCs, methods and error responses
    • headers and header values
    • possibly, a list of SIP RFCs supported by groups (e.g., by call feature)
  • Accounting 🧾
  • Capacity Control and Performance Management: any limits on, or means to measure and limit, the maximum number of active calls to a peer or federation, the maximum number of sessions and messages per specified unit time, the maximum number of active users or subscribers per specified unit time, the aggregate media bandwidth per peer or for the federation, and specified SIP signaling performance metrics to measure and report. Media-level VoIP metrics too, if applicable πŸ“Š
  • Security: call admission control, call authorization, network and transport layer security parameters, and media security parameters πŸ”

Author's Address πŸ’Œ

Jean-Francois Mule
CableLabs
858 Coal Creek Circle
Louisville, CO  80027
USA

EMail: jf.mule@cablelabs.com
πŸ“¦ where this page comes from