RFC 7092

A Taxonomy of Session Initiation Protocol (SIP) Back-to-Back User Agents

πŸ“… published December 2013, from ietf

RFC 7092: A Taxonomy of Session Initiation Protocol (SIP) Back-to-Back User Agents πŸ’–

Request for Comments: 7092 πŸŽ€ Stream: Internet Engineering Task Force (IETF) ✨ Authors: H. Kaplan (Oracle) and V. Pascual (Quobis) πŸ‘‘ Category: Informational 🌸 ISSN: 2070-1721 Date: December 2013 πŸ“… Obsoletes / Updates: Its header has no Obsoletes or Updates line, so it doesn't obsolete or update anything. πŸ¦‹

Abstract ✨

okay so in a lot of SIP deployments, there are SIP entities sitting in the signaling path between the originating and final terminating endpoints. πŸ’… They go way beyond what a SIP proxy is, doing jobs that aren't defined in Standards Track RFCs, and it's giving main character energy. πŸ”₯ The only name RFC 3261 gives these devices is Back-to-Back User Agent (B2BUA), which is defined as the logical concatenation of a SIP User Agent Server (UAS) and User Agent Client (UAC). 🧚

There are so many types of SIP B2BUAs, each doing different jobs in different ways. Think IP Private Branch Exchanges (IPBXs), Session Border Controllers (SBCs), and Application Servers (ASs). 🌈 This document names several common B2BUA roles so that other documents can use and reference a shared taxonomy. πŸ’œ

Status of This Memo πŸ¦‹

This document is not an Internet Standards Track specification. It's published for informational purposes, so no stress. 🫢

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community, and it got public review and was approved for publication by the Internet Engineering Steering Group (IESG). Not every document the IESG approves is a candidate for any level of Internet Standard, so check Section 2 of RFC 5741 if you want the details. πŸ“š

Info about the current status of this document, any errata, and how to give feedback is at http://www.rfc-editor.org/info/rfc7092. 🌸

Copyright (c) 2013 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) in effect on the date of publication of this document. Please read these carefully, because they describe your rights and restrictions for this document. πŸ™ˆ Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they're provided without warranty as described in the Simplified BSD License. ⭐

Table of Contents πŸŽ€

1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
3.  B2BUA Role Types  . . . . . . . . . . . . . . . . . . . . . .   3
  3.1.  Signaling Plane B2BUA Roles . . . . . . . . . . . . . . .   4
    3.1.1.  Proxy-B2BUA . . . . . . . . . . . . . . . . . . . . .   4
    3.1.2.  Signaling-only  . . . . . . . . . . . . . . . . . . .   4
    3.1.3.  SDP-Modifying Signaling-only  . . . . . . . . . . . .   5
  3.2.  Signaling/Media Plane B2BUA Roles . . . . . . . . . . . .   5
    3.2.1.  Media Relay . . . . . . . . . . . . . . . . . . . . .   5
    3.2.2.  Media Aware . . . . . . . . . . . . . . . . . . . . .   6
    3.2.3.  Media Termination . . . . . . . . . . . . . . . . . .   6
4.  Mapping SIP Device Types to B2BUA Roles . . . . . . . . . . .   6
  4.1.  SIP PBXs and Softswitches . . . . . . . . . . . . . . . .   6
  4.2.  Application Servers . . . . . . . . . . . . . . . . . . .   7
  4.3.  Session Border Controllers  . . . . . . . . . . . . . . .   7
  4.4.  Transcoders . . . . . . . . . . . . . . . . . . . . . . .   7
  4.5.  Conference Servers  . . . . . . . . . . . . . . . . . . .   8
  4.6.  P-CSCF and IBCF Functions . . . . . . . . . . . . . . . .   8
  4.7.  S-CSCF Function . . . . . . . . . . . . . . . . . . . . .   8
5.  Security Considerations . . . . . . . . . . . . . . . . . . .   8
6.  Informative References  . . . . . . . . . . . . . . . . . . .   9

1. Introduction 🌸

These days, SIP deployments have all kinds of Back-to-Back User Agents (B2BUAs). They work at different levels of transparency, have different goals, and act very differently from a SIP point of view. πŸ’… Some are basically pure SIP proxies that only switch into the B2BUA role to generate BYEs and end dead sessions. πŸ’€ Others are full User Agent stacks, where only high-level event and application logic ties the User Agent Server (UAS) and User Agent Client (UAC) sides together. 🧚 And some B2BUAs only work in the SIP signaling plane, while others get into the media plane too. πŸ¦‹

As more SIP domains get deployed and connected, the chance that one SIP session crosses multiple B2BUAs at both the signaling and media planes goes up a lot. πŸ“ˆ Literally a whole chain of middlemen. 😭

This document gives a taxonomy of several common B2BUA roles, so other documents can use these names without redefining them every single time. 🫢

2. Terminology πŸ’œ

The following terms are defined in [RFC3261], Section 6. πŸ“–

  • B2BUA: a SIP Back-to-Back User Agent, which is the logical combination of a User Agent Server (UAS) and User Agent Client (UAC). πŸŽ€
  • UAS: a SIP User Agent Server. 🌈
  • UAC: a SIP User Agent Client. ✨

3. B2BUA Role Types πŸ‘‘

In this document, the classification is about a B2BUA role, not a particular type of system. πŸ”₯ A given system can switch roles in the middle of a SIP session. For example, a stateful proxy might tear a session down by generating BYEs, or an SBC [RFC5853] might do transcoding or REFER termination. πŸ¦‹

This document uses the definition of "B2BUA" from [RFC3261], which is the logical concatenation of a UAS and UAC. 🧚 So a typical centralized conference server is not a B2BUA. It's the target UAS of multiple UACs, and each UAC starts its own separate SIP session to the central conference server, individually and independently. πŸ™ˆ Likewise, a third-party call control transcoder, as described in Section 3.1 of [RFC5369], is not a B2BUA. But an inline (conference bridge) transcoder based on [RFC5370] is a B2BUA. πŸ’–

3.1. Signaling Plane B2BUA Roles πŸŽ€

A signaling plane B2BUA only operates at the SIP message protocol layer, and only touches SIP messages and headers. It doesn't do anything to the media itself. 🌸 That means it doesn't modify the Session Description Protocol (SDP) bodies, though it may save them and/or operate on other MIME body types. πŸ“¦ This category has its own subdivisions, which we'll go through in this section. ✨

Also, "signaling plane B2BUAs" make a huge variety of modifications. 😭 It's chaotic and I love it. πŸ’…

3.1.1. Proxy-B2BUA πŸ¦‹

A Proxy-B2BUA looks, from a SIP perspective, like a SIP proxy based on [RFC3261] and its extensions. The one difference is that it keeps enough dialog state to generate in-dialog SIP messages on its own, and it does that in specific cases. 🧚 The most common example is a SIP proxy that can generate BYE requests to tear down a dead session. πŸ’€

A Proxy-B2BUA doesn't modify received header fields like To, From, or Contact. It only modifies the Via and Record-Route header fields, following the rules in [RFC3261] and its extensions. 🌈 If a Proxy-B2BUA can generate in-dialog messages, it will also need to modify the CSeq header after it has generated its own. πŸ”₯ A Proxy-B2BUA doesn't modify or inspect MIME bodies (including SDP), it has zero awareness of media, and it will forward any method type, etc. πŸ‘‘

3.1.2. Signaling-only πŸ’œ

A Signaling-only B2BUA works at the SIP layer, but it goes beyond what [RFC3261] proxies do, even for requests it normally forwards. 🫢 For example, one of these B2BUAs might replace the Contact URI, modify or remove all Via and Record-Route headers, modify the To and From header fields, or modify or inspect specific MIME bodies, etc. πŸŽ€ No SIP header field is guaranteed to be copied from the received request on the UAS side to the generated request on the UAC side. πŸ™ˆ Not even a little. πŸ’€

Here are two examples. The first is some form of Application Server and PBX combo, like a server that handles REFER requests locally and generates new INVITEs on behalf of the REFER's target. πŸ¦‹ The second is a privacy service proxy [RFC3323] doing the 'header' privacy function. 🌸

3.1.3. SDP-Modifying Signaling-only 🌈

An SDP-Modifying Signaling-only B2BUA works only in the signaling plane and stays out of the media path. But it does modify SDP bodies, so it's aware of and understands SDP syntax and semantics. 🧠 Sometimes certain Application Servers and PBXs play this role, for example to remove certain codec choices or to merge two media endpoints into one SDP offer. ✨

These B2BUAs don't do anything that changes the path the media takes. In particular, they don't insert themselves on the media path. πŸ™… They can, however, make SDP changes that affect what gets sent on the media plane. πŸŽ€

3.2. Signaling/Media Plane B2BUA Roles πŸ’–

A signaling/media plane B2BUA operates at both the SIP and media planes. It doesn't only work on SIP messages, it also works on SDP and potentially on the Real-time Transport Protocol (RTP) / the Real-Time Control Protocol (RTCP) [RFC3550] or other media. πŸ”₯ Such a B2BUA may or may not replace the Contact URI, modify or remove all Via and Record-Route headers, or modify the To and From header fields, etc. πŸ¦‹ No SIP header field is guaranteed to be copied from the received request on the UAS side to the generated request on the UAC side, and SDP gets modified too. 😭

Examples include a Session Border Controller (SBC) doing the functions defined in [RFC5853], a B2BUA transcoder as defined in [RFC5370], a rich-ringtone Application Server, or a recording system. πŸŽ€ Another example is a privacy service proxy [RFC3323] doing the 'session' privacy function. 🌸

Note that a signaling/media plane B2BUA doesn't need to live in a single physical system. It can be split into separate signaling and media functions. 🧚 This category gets subdivided into specific roles too, and we'll cover those in this section. πŸ’…

3.2.1. Media Relay 🌊

A B2BUA playing the media-relay role terminates the media plane at the IP and transport (UDP/TCP) layers on both its UAS and UAC sides. 🫢 It doesn't modify or restrict which forms of payload get carried in the packets. The payload is copied transparently from one side to the other. ✨ This role may or may not support only UDP, only TCP, both UDP and TCP, or other transport types. πŸ’œ It can also police IP packets to fit within a bandwidth limit, or convert from IPv4 to IPv6, or vice versa. 🌈

This is pretty similar to NAT behavior, with one twist: a NAT operates in both directions on both the source and destination information, and this role doesn't necessarily do that. πŸ™ˆ It's often the default behavior in SBCs, so you'll see it a lot. πŸ‘‘

3.2.2. Media Aware ✨

A B2BUA doing a media-aware role is basically the media relay's more curious cousin πŸ‘€. It's like a media relay, except it peeks inside the payload carried over UDP or TCP (which could be RTP or RTCP [RFC3550]) and can potentially modify it. It still doesn't go down to the codec layer or anything higher up πŸ’…. Some examples: a Secure Real-time Transport Protocol (SRTP) [RFC3711] terminator, which doesn't care about the RTP payload but absolutely cares about the RTP header πŸ”; a device that monitors RTCP for QoS information πŸ“Š; or a device that multiplexes and demultiplexes RTP and RTCP packets on the same 5-tuple 🧚.

3.2.3. Media Termination

A B2BUA doing a media-termination role is the one that works at the media payload layer, like the RTP/RTCP codec stuff or the Message Session Relay Protocol (MSRP) message layer and up πŸŽ€. It might only terminate or generate specific RTP media, like dual-tone multi-frequency (DTMF) packets [RFC4733] πŸ“ž. Or it can convert between media codecs, or act as a Back-to-Back MSRP [RFC4975] agent πŸ¦‹. This is the role performed by transcoders and conference servers based on [RFC5366], etc. πŸ“


4. Mapping SIP Device Types to B2BUA Roles πŸ—ΊοΈ

Okay so, the B2BUA roles we defined don't name any system types (see Section 3), but it's still really helpful to talk about which common systems perform which roles 🧠. This section gives a 'mapping' for general cases so the roles actually click for you πŸ’–.

4.1. SIP PBXs and Softswitches

SIP-enabled Private Branch Exchanges (SIP PBXs) and softswitches are market category terms and aren't specified in any standard πŸ’Ό. In general, they can perform every role described in this document at any given time, based on their architecture or local policy. Some are built like a SIP UAS and UAC connected with a logical Primary Rate Interface (PRI) loopback πŸ”. Others are built as a SIP proxy core with optional modules to "do more" ✨.

4.2. Application Servers

Application Servers are a broad marketing term and aren't specified in any standard in general πŸ“£. The Third Generation Partnership Project (3GPP) and other organizations do specify some specific Application Server functions and behaviors, though 🧾. Common examples include message-waiting indicators (MWIs), Find Me/Follow Me services, privacy services, call center Automatic Call Distributor (ACD) services, call screening, and Voice Call Continuity (VCC) services πŸ“ž. Some only operate in the signaling plane, in either the Proxy-B2BUA or Signaling-only B2BUA roles. Others operate as full Media-termination B2BUAs, like when providing Interactive Voice Recognition (IVR), rich ringtones, or integrated voicemail services 🎢.

4.3. Session Border Controllers

Session Border Controllers (SBCs) are a market category term and aren't specified in any standard πŸ›‘οΈ. Some of their common functions are described in [RFC5853], but in general they can perform every role described in this document at any given time, based on local policy 🌸. By default, most SBCs are either Media-relay or Media-aware B2BUAs. They replace the Contact URI, remove the Via and Record-Route headers, modify Call-ID, To, From, and various other headers, and modify SDP πŸ”§. Some SBCs remove all headers and all bodies, and reject all method types unless explicitly allowed by local policy 🚫. Other SBCs pass all such elements through, unless explicitly forbidden by local policy 🌈.

4.4. Transcoders

Transcoders do the job of transcoding one audio or video media codec type to another, like G.711 to G.729 🎧. Since they do this, they perform the Media-termination role, although they may only terminate media in specific cases of codec mismatch between the two ends πŸ”„. Two types of SIP transcoders are defined in [RFC5369] and [RFC5370], but in practice, a popular variant of the inline conference bridge model [RFC5370] is to behave as a SIP B2BUA. It doesn't use the resource-list mechanism. Instead, it just routes a normal INVITE request through a B2BUA with a built-in transcoder 🧩.

SIP transcoder architectures are based on everything from SIP media servers and SBCs to looped-back Time Division Multiplexing (TDM) gateways πŸ—οΈ. That means they run the whole gamut, from replacing only the specific headers, bodies, and SDP content needed to do their function, to replacing almost all SIP headers and SDP content πŸ˜΅β€πŸ’«. Some transcoders save and remove SDP offers in INVITEs from the UAC, then wait for an offer in the response from the UAS. That's similar to a Third Party Call Control (3PCC) model 🀝. Others just insert additional codecs in SDP offers, and only transcode if the inserted codec(s) is selected in the answer 🎯.

4.5. Conference Servers

Generally speaking, conference servers don't fall under the term "B2BUA" as defined by this document. That's because they typically involve multiple SIP UACs initiating independent SIP sessions to the single conference UAS πŸ‘―. However, a conference server supporting [RFC5366], where the received INVITE triggers the conference focus UAS to initiate multiple INVITEs as a UAC, would be in a Media-termination B2BUA role when performing that function 🎀.

4.6. P-CSCF and IBCF Functions

The Proxy-Call Session Control Function (P-CSCF) and the Interconnection Border Control Function (IBCF) are defined by 3GPP [IMS] standards πŸ›οΈ. When they're coupled with the IP Multimedia Subsystems (IMS) media plane gateways (IMS Access Gateway (AGW), Transition Gateway (TrGW), etc.), they typically form a logical Media-relay or Media-aware B2BUA role 🌐.

4.7. S-CSCF Function

The Serving-Call Session Control Function (S-CSCF) is defined by 3GPP [IMS] standards, and it typically follows a Proxy-B2BUA role 🫢.


5. Security Considerations πŸ”

Okay, this part is serious, bestie 😭. Security risks are specific to each type of B2BUA, so not much can be said in general. But adding extra systems in the communication path creates extra points of attack 🚨. It can reduce or eliminate the ability to do end-to-end encryption, decrease the privacy of SIP communications, and complicate trust models πŸ’€. So every B2BUA design needs particular attention to security analysis, no exceptions πŸ™…β€β™€οΈ.

A few general points:

  1. The B2BUA processing of SDP and media packets is an impediment to the deployment of end-to-end SRTP. It also reduces the ability to deploy new, stronger forms of SRTP key exchange πŸ”‘.
  2. The ability for B2BUAs to modify any SIP header field value and body impacts the ability to deploy SIP identity and message integrity πŸ•΅οΈβ€β™€οΈ.
  3. The management and configuration mechanisms of B2BUAs are a tempting point of attack, and they must be strongly defended 🏰.

Further security considerations related to the functionality described in this document are addressed in the relevant references πŸ“š.


6. Informative References πŸ“–

  • [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.
  • [RFC3323] Peterson, J., "A Privacy Mechanism for the Session Initiation Protocol (SIP)", RFC 3323, November 2002.
  • [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, July 2003.
  • [RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. Norrman, "The Secure Real-time Transport Protocol (SRTP)", RFC 3711, March 2004.
  • [RFC4733] Schulzrinne, H. and T. Taylor, "RTP Payload for DTMF Digits, Telephony Tones, and Telephony Signals", RFC 4733, December 2006.
  • [RFC4975] Campbell, B., Mahy, R., and C. Jennings, "The Message Session Relay Protocol (MSRP)", RFC 4975, September 2007.
  • [RFC5366] Camarillo, G. and A. Johnston, "Conference Establishment Using Request-Contained Lists in the Session Initiation Protocol (SIP)", RFC 5366, October 2008.
  • [RFC5369] Camarillo, G., "Framework for Transcoding with the Session Initiation Protocol (SIP)", RFC 5369, October 2008.
  • [RFC5370] Camarillo, G., "The Session Initiation Protocol (SIP) Conference Bridge Transcoding Model", RFC 5370, October 2008.
  • [RFC5853] Hautakorpi, J., Camarillo, G., Penfield, R., Hawrylyshen, A., and M. Bhatia, "Requirements from Session Initiation Protocol (SIP) Session Border Control (SBC) Deployments", RFC 5853, April 2010.
  • [IMS] 3GPP, "IP Multimedia Subsystem (IMS); Stage 2, 3GPP TS 23.228", Version 12.2.0, September 2013.

Authors' Addresses πŸŽ€

Hadriel Kaplan Oracle

EMail: hadriel.kaplan@oracle.com

Victor Pascual Quobis

EMail: victor.pascual@quobis.com

πŸ“¦ where this page comes from