RFC 6567

Problem Statement and Requirements for Transporting User-to-User Call Control Information in SIP

πŸ“… published April 2012, from ietf

Problem Statement and Requirements for Transporting User-to-User Call Control Information in SIP πŸ’–

RFC number: 6567 πŸŽ€ Authors: A. Johnston (Avaya) and L. Liess (Deutsche Telekom AG) 🫢 Category: Informational, so it's published for info, not as a Standards Track spec πŸ“š Date: April 2012 🌸 ISSN: 2070-1721 ✨ Obsoletes / Updates: The header doesn't list anything this RFC obsoletes or updates 🧚

It's published by the IETF, a product of the IETF community, and it went through public review and got approved by the IESG. πŸ’…

Abstract

okay so this doc is all about carrying call control User-to-User Information (UUI) over SIP (the Session Initiation Protocol) πŸ“ž and it lays out a handful of requirements for a brand new SIP mechanism πŸ”₯. Sometimes a SIP session gets set up by a non-SIP app, or it's related to one, and that app might have info that has to get from one SIP User Agent to the other while the session is being established πŸ’œ. On top of interworking with the Integrated Services Digital Network (ISDN) UUI Service, this extension is also gonna be used by native SIP endpoints that need application UUI πŸ¦‹.

Status of This Memo

ngl this is not an Internet Standards Track spec. It's published purely for information πŸ“š.

It's a product of the IETF and reflects the consensus of the IETF community πŸ‘‘. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). Not every IESG-approved doc is a candidate for any level of Internet Standard, so check Section 2 of RFC 5741 if you want the full picture πŸŽ€.

Info on this doc's current status, any errata, and how to give feedback lives at http://www.rfc-editor.org/info/rfc6567 🌈.

Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved. πŸ’…

This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stand on the publication date. Please read these carefully, bestie, because they spell out your rights and restrictions for this doc πŸ™ˆ. Any Code Components pulled out of this doc must include the Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as the Simplified BSD License describes 🫢.

Table of Contents 🧚

   1. Overview ........................................................2
   2. Use Cases .......................................................3
      2.1. User Agent to User Agent ...................................3
      2.2. Proxy Retargeting ..........................................4
      2.3. Redirection ................................................4
      2.4. Referral ...................................................5
   3. Requirements ....................................................6
   4. Security Considerations .........................................8
   5. Acknowledgements ...............................................10
   6. Informative References .........................................10

1. Overview ✨

okay so this section explains how User-to-User Information (UUI) gets carried during SIP [RFC3261] session setup πŸ¦‹. It also introduces UUI and explains how it fits with SIP.

So, we define SIP UUI data as application-specific info that's tied to a session being set up with SIP πŸ’–. The app is assumed to be running on both endpoints of a two-party session, which means it talks to both User Agents in the SIP session πŸ‘‘. To work properly, the app needs a small piece of info, the UUI, to be carried at the moment the session gets established ⭐. To SIP, this info is basically opaque data πŸ™ˆ: it has nothing to do with SIP routing, authentication, or any other SIP function. The app sits higher up in the protocol stack, so SIP should not interpret, understand, or do anything at all with the UUI πŸ’…. If SIP does have to do something with it, then what's being carried isn't UUI anymore, and you'd need a different SIP-specific mechanism to move it, like a brand new header field πŸ”₯. And this is the big one: the mechanism creates no requirements at all on intermediaries like proxies, Back-to-Back User Agents, and Session Border Controllers 🌸.

UUI is defined this way for two reasons πŸ“. First, this definition keeps protocols and data strictly layered. If you handed the UUI over to the transport layer (SIP, in this case), you'd gain nothing and you'd end up with cross-layer coupling, which is literally the opposite of what we want πŸ™…β€β™€οΈ. Second, it's neither feasible nor desirable for a SIP User Agent (UA) to understand the info. Instead, the UA's whole job is to pass it along as efficiently as possible to the app that does understand it πŸŽ€.

An important use case is interworking with User-to-User Information (UUI) in ISDN. That means carrying the call-control-related ITU-T Q.931 User-to-User Information Element (UUIE) [Q931] and ITU-T Q.763 User-to-User Information Parameter [Q763] data over SIP πŸ“ž. ISDN UUI is widely used today in the Public Switched Telephone Network (PSTN), especially in contact centers and call centers πŸ’œ. These apps are moving away from using ISDN for session establishment and toward SIP πŸ¦‹. Native SIP endpoints will need to implement a similar service and be able to interwork with that ISDN service 🌈.

Here's the important distinction πŸ‘€: call control UUI and non-call-control UUI are not the same thing. SIP already has a way to send arbitrary UUI between UAs during a session or dialog, and that's the SIP INFO [RFC6086] method ✨. Call control UUI is different. It has to be exchanged at setup time, so it needs to be carried in the INVITE and a few other methods and responses πŸ”₯. If an app just swaps UUI and doesn't need it moved and processed during call setup, it can simply use SIP INFO and skip a new SIP extension entirely πŸ’….

This doc walks through four different use case call flows, and then it covers the requirements for call control UUI transport 🧚.

2. Use Cases πŸ’–

This section covers four use cases for transporting call control User-to-User Information. They're here to help motivate the requirements for SIP call control UUI πŸŽ€.

2.1. User Agent to User Agent πŸ¦‹

In this scenario, the originating UA puts UUI in an INVITE that goes through a proxy to the terminating UA πŸ“ž. The terminating UA can use the UUI however it wants πŸ‘‘. If it's an ISDN gateway, it could map the UUI into the right DSS1 [Q933] information element, QSIG [QSIG] information element, or ISDN User Part (ISUP) parameter 🌸. Or the app could show the info to the user, use it during alerting, or use it as a lookup for a screen pop πŸ’œ. In this case, the proxy doesn't need to understand the UUI mechanism at all πŸ™ˆ. Normal proxy rules should be enough to get the UUI forwarded without any changes πŸ’…. Here's the call flow, Figure 1 ✨:

         Originating UA            Proxy           Terminating UA
                |                    |                    |
                |   INVITE (UUI) F1  |                    |
                |------------------->|   INVITE (UUI) F2  |
                |      100 Trying F3 |------------------->|
                |<-------------------|         200 OK F4  |
                |          200 OK F5 |<-------------------|
                |<-------------------|                    |
                |  ACK F6            |                    |
                |------------------->|            ACK F7  |
                |                    |------------------->|

      Figure 1: Call Flow with UUI Exchanged between Originating and
                              Terminating UAs

2.2. Proxy Retargeting 🌈

In this scenario, the originating UA includes UUI in the INVITE request that goes through a proxy to the terminating UA πŸ’–. The proxy retargets the INVITE by changing its Request-URI to a URI that points at the terminating UA 🧚. The terminating UA then receives and processes the UUI data πŸŽ€. This call flow is identical to Figure 1, except the proxy retargets the request, meaning it changes the Request-URI as directed by some unspecified process πŸ¦‹. The UUI in the INVITE request needs to get through this retargeting operation unchanged πŸ”₯. And here's the key bit: the proxy doesn't use the contents of the UUI for routing, because the UUI only has end-to-end significance between UAs 🫢.


2.3. Redirection ✨

okay so in this one, UUI gets inserted by an application that's using a SIP Redirect Server πŸ“ž. The UUI then rides along in the INVITE request that the originating UA sends to the terminating UA πŸ’Œ. The originating UA doesn't necessarily need to support the UUI mechanism itself, but it does need to support the SIP redirection mechanism that carries the UUI data πŸ¦‹. Two examples of UUI with redirection, transfer and diversion, are defined in [ANSI] and [ETSI] πŸ’….

Note that this case may not precisely map to an equivalent ISDN service use case πŸ™ˆ. There's no one-to-one mapping between elements in a SIP network and elements in an ISDN network, and SIP call control and ISDN call control don't match exactly either. However, this should not prevent the usage of SIP call control UUI in these cases ✨. Instead, these slight differences between the SIP UUI mechanism and the ISDN service need to be carefully noted and discussed in an interworking specification πŸ“.

Figure 2 shows this scenario, with the Redirect Server inserting UUI that then gets included in the INVITE request F4 sent to the terminating UA πŸŽ€.

            Originating UA        Redirect Server      Terminating UA
                   |                    |                    |
                   |          INVITE F1 |                    |
                   |------------------->|                    |
                   | 302 Moved (UUI) F2 |                    |
                   |<-------------------|                    |
                   |            ACK F3  |                    |
                   |------------------->|                    |
                   |  INVITE (UUI) F4   |                    |
                   |---------------------------------------->|
                   |  200 OK F5                              |
                   |<----------------------------------------|
                   |  ACK F6                                 |
                   |---------------------------------------->|

    Figure 2: Call Flow with UUI Exchanged between Redirect Server and
                              Terminating UA

A super common example of this call flow is an Automatic Call Distributer (ACD) in a PSTN contact center πŸ“žπŸŒΈ. The originator would be a PSTN gateway. The ACD acts as the Redirect Server, inserting UUI based on called number, calling number, time of day, and other info πŸ•. That UUI gets passed to the agent's handset, which is the terminating UA. The UUI can then be used to look up information to show the agent right when the call gets answered πŸ‘€βœ¨.

This redirection scenario and the referral scenario in the next section are the most important ones for contact center apps πŸ’œ. Incoming calls to a contact center almost always get redirected or referred to a final destination, sometimes more than once, based on collected info and business logic πŸ”. So being able to pass UUI along in these call redirection scenarios is critical πŸ‘‘.


2.4. Referral πŸ¦‹

In this one, the application uses a UA to start a referral, which makes an INVITE request get generated between the originating UA and terminating UA, with UUI data inserted by the referrer UA πŸ’«. Note that this REFER method [RFC3515] could be part of a transfer operation, or it might be unrelated to an existing call, like an out-of-dialog REFER request 🧚. In some cases this call flow is used in place of the redirection call flow: the referrer answers the call right away and then sends the REFER request πŸ“². Figure 3 shows this scenario πŸ‘‡.

         Originating UA         Referrer           Terminating UA
               |                    |                    |
               |  REFER (UUI) F1    |                    |
               |<-------------------|                    |
               |  202 Accepted F2   |                    |
               |------------------->|                    |
               |  INVITE (UUI) F3   |                    |
               |---------------------------------------->|
               | NOTIFY (100 Trying) F4                  |
               |------------------->|                    |
               |         200 OK F5  |                    |
               |<-------------------|                    |
               |  200 OK F6                              |
               |<----------------------------------------|
               |  ACK F7                                 |
               |---------------------------------------->|
               | NOTIFY (200 OK) F8 |                    |
               |------------------->|                    |
               |        200 OK F9   |                    |
               |<-------------------|                    |

             Figure 3: Call Flow with Referral and UUI

3. Requirements πŸŽ€

This section lays out the requirements for transporting call control User-to-User Information (UUI) πŸ“‹.

REQ-1: Okay, so the mechanism will let UAs insert and receive UUI data in SIP call setup requests and responses πŸ’Œ. The SIP messages covered here are INVITE requests and the end-to-end responses to the INVITE, meaning 18x and 200 responses πŸ“¨. UUI data may also be inserted in 3xx responses to an INVITE πŸ¦‹. But if an intermediary proxy recurses on a 3xx response, the resulting INVITE will not contain the UUI data from that 3xx response πŸ™ˆ. And in a scenario where a proxy forks an INVITE to multiple UAS that include UUI data in 3xx responses, if a 3xx response is the best response the proxy sends upstream, it will only contain the UUI data from one of those 3xx responses πŸ’….

REQ-2: The mechanism will let UAs insert and receive UUI data in SIP dialog terminating requests and responses 🌸. Q.931 UUI supports inclusion in release and release completion messages, and the SIP messages covered here are BYE and 200 OK responses to a BYE ✨.

REQ-3: The mechanism will allow UUI to be inserted and retrieved in SIP redirects and referrals πŸ”. The SIP messages covered are REFER requests and 3xx responses to INVITE requests πŸ“¬.

REQ-4: The mechanism will allow UUI to survive proxy retargeting or redirection of the request πŸš€. Retargeting is a common method of call routing in SIP, and it must not result in the loss of User-to-User Information 🫢.

REQ-5: The mechanism should not require processing entities to dereference a URL in order to retrieve the UUI data πŸ™…β€β™€οΈ. Passing a pointer or link to the UUI data won't meet the real-time processing considerations, and it would complicate interworking with the PSTN πŸ“žπŸ’€.

REQ-6: The mechanism will support interworking with call-control-related DSS1 information elements or QSIG information elements and ISUP parameters 🧚.

REQ-7: The mechanism will allow a UAC to learn that a UAS understands the UUI mechanism πŸ‘€.

REQ-8: The mechanism will allow a UAC to require that a UAS understands the call control UUI mechanism and have a request routed based on this information πŸ‘‘. If the request can't be routed to a UAS that understands the UUI mechanism, the request will fail ❌.

This could be useful for making sure a request destined for the PSTN gets routed to a gateway that supports the UUI mechanism, rather than an otherwise equivalent PSTN gateway that doesn't support the ISDN mechanism 🌈. Note that support of the UUI mechanism does not, by itself, imply that a particular application is supported (see REQ-10) πŸ™ˆ.

REQ-9: The mechanism will allow proxies to remove a particular application usage of UUI data from a request or response πŸ›‘οΈ. This is a common security function provided by border elements for header fields such as Alert-Info or Call-Info URIs πŸ”’. There is no requirement for UAs to be able to determine whether a particular usage of UUI data has been removed from a request or response πŸ€·β€β™€οΈ.

REQ-10: The mechanism will provide the ability for a UA to discover which application usages of UUI another UA understands or supports πŸ”. Creating a registry of application usages for the UUI mechanism is implied by this requirement πŸ“š. The ISDN service uses a field called the protocol discriminator, which is the first octet of the ISDN UUI data, for this purpose 🧠.

REQ-11: The UUI is a sequence of octets 🧡. The solution will provide a way to transport at least 128 octets of user data plus a one-octet protocol discriminator, so 129 octets in total πŸ’–. There's potential for non-ISDN services to let UUI get larger than 128 octets 🌊. But users of the mechanism will need to be cognizant of the size of SIP messages and the ability of parsers to handle extremely large values ⚠️.

REQ-12: The recipient of UUI will be able to determine the entity that inserted the UUI πŸ•΅οΈβ€β™€οΈ. It's acceptable for this to happen implicitly where it's known that there's only one other end UA involved in the dialog 🫢. Where that doesn't exist, some other mechanism will need to be provided 🧩. The UUI mechanism does not introduce stronger authorization requirements for SIP; instead, it needs to be able to use the existing SIP approaches for request and response identity πŸ”. This requirement comes into play during redirection, retargeting, and referral scenarios πŸ¦‹.

4. Security Considerations πŸ”

okay bestie, this section is SO important, so pay attention πŸ’… The security requirements for the UUI mechanism live right here. The main thing to know is that UUI security is shared between the application layer and the SIP layer, so it's a teamwork situation 🫢 That means application users of the UUI mechanism need to actually know what level of security is used and deployed in their SIP environment. Don't just assume a standardized (but maybe rarely deployed) security mechanism is in place πŸ’€

There are three main security models the UUI mechanism needs to handle ✨

First up, the model that treats the SIP layer as untrusted and requires end-to-end integrity protection and/or encryption. 🧱 This one can be achieved by providing those security services at a layer above SIP. So the application integrity protects and/or encrypts the UUI data before passing it to the SIP layer. It has two big perks: it doesn't assume or rely on end-to-end security mechanisms in SIP (which have virtually no deployment 😭), and it lets an application that understands the contents of the UUI apply a proper level of security. Iconic behavior πŸ‘‘

The second approach is for the application to pass the UUI without any protection to the SIP layer and require the SIP layer to provide this security. πŸ€” This is possible in theory, but its practical use would be extremely limited πŸ™ˆ

The third model uses a trust domain and relies on perimeter security at the SIP layer. This is the security model of the PSTN and ISDN, which is where UUI is commonly used today 🧚 It uses hop-by-hop security mechanisms and relies on border elements for filtering and application of policy. This approach is used today in UUI deployments. Within it, there is a requirement that intermediary elements can detect and remove a UUI element based on policy, but there is no requirement that an intermediary element be able to read or interpret the UUI. Why? Because the UUI contents only have end-to-end significance πŸ¦‹

The next three requirements capture the UUI security requirements. Let's go 🌈

REQ-13: The mechanism will allow integrity protection of the UUI.

This lets the UAS know that the UUI hasn't been modified or tampered with by intermediaries. πŸ•΅οΈβ€β™€οΈ Heads up, there are tradeoffs between this requirement and requirement REQ-9, which is about proxies and border elements removing UUI. One possible way to satisfy both is to utilize hop-by-hop protection. πŸŽ€ This property is not guaranteed by the protocol in the ISDN application.

REQ-14: The mechanism will allow end-to-end privacy of the UUI.

Some UUI may contain private or sensitive information, and it may need different security handling from the rest of the SIP message. πŸ”’ Note that this property is not available in the ISDN application. Sad but true 😭

REQ-15: The mechanism will allow both end-to-end and hop-by-hop security models.

The hop-by-hop model is required by the ISDN UUI service. πŸ’œ


5. Acknowledgements 🫢

Thanks to Joanne McMillen, who was a co-author of earlier draft versions of this specification. πŸ’– Thanks to Spencer Dawkins, Keith Drage, Dale Worley, and Vijay Gurbani for reviewing earlier draft versions of this document. The authors also wish to thank Christer Holmberg, Frederique Forestie, Francois Audet, Denis Alexeitsev, Paul Kyzivat, Cullen Jennings, and Mahalingam Mani for their comments on this topic. The whole crew, literally iconic ✨

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.

[Q931] ITU-T, "ISDN user-network interface layer 3 specification for basic call control", ITU-T Recommendation Q.931, <http://www.itu.int/rec/T-REC-Q.931-199805-I/en>.

[Q763] ITU-T, "Signalling System No. 7 - ISDN User Part formats and codes", ITU-T Recommendation Q.763, <http://www.itu.int/rec/T-REC-Q.763-199912-I/en>.

[RFC6086] Holmberg, C., Burger, E., and H. Kaplan, "Session Initiation Protocol (SIP) INFO Method and Package Framework", RFC 6086, January 2011.

[Q933] ITU-T, "ISDN Digital Subscriber Signalling System No. 1 (DSS1) - Signalling specifications for frame mode switched and permanent virtual connection control and status monitoring", ITU-T Recommendation Q.933, <http://www.itu.int/rec/T-REC-Q.933/en>.

[QSIG] ECMA, "Private Integrated Services Network (PISN) - Circuit Mode Bearer Services - Inter-Exchange Signalling Procedures and Protocol (QSIG-BC)", Standard ECMA-143, December 2001.

[ANSI] ANSI, "Telecommunications-Integrated Services Digital Network (ISDN)-Explicit Call Transfer Supplementary Service", ANSI T1.643-1995.

[ETSI] ETSI, "Integrated Services Digital Network (ISDN); Diversion supplementary services", ETSI ETS 300 207-1, Ed. 1, 1994.

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


Authors' Addresses πŸ’Œ

Alan Johnston Avaya St. Louis, MO 63124

EMail: alan.b.johnston@gmail.com

Laura Liess Deutsche Telekom AG

EMail: laura.liess.dt@gmail.com

πŸ“¦ where this page comes from