RFC 4457

The Session Initiation Protocol (SIP) P-User-Database Private-Header (P-Header)

πŸ“… published April 2006, from ietf

The Session Initiation Protocol (SIP) P-User-Database Private-Header (P-Header) πŸ’–

  • RFC: 4457
  • Authors: G. Camarillo and G. Blanco, both from Ericsson πŸŽ€
  • Category: Informational πŸ¦‹
  • Date: April 2006 🌸
  • Obsoletes / Updates: the title block doesn't list anything it obsoletes or updates πŸ™ˆ

Status of This Memo πŸ“œ

okay so this memo is just here to inform the Internet community ✨ It does not specify an Internet standard of any kind. Distribution of this memo is unlimited, so share it with everyone πŸ’…

Copyright (C) The Internet Society (2006). 🫢

Abstract 🌈

bestie, this document specifies the SIP P-User-Database Private-Header (P-header) πŸ’œ It's used in the 3rd-Generation Partnership Project (3GPP) IMS (IP Multimedia Subsystem) to give SIP registrars and SIP proxy servers the address of the database holding the user profile of whoever generated a particular request. It's giving network plumbing and I'm obsessed 😭

Table of Contents πŸ—‚οΈ

   1. Introduction ....................................................2
   2. Scenarios .......................................................2
      2.1. User Registering to the IMS ................................2
      2.2. Incoming Request for an Unregistered User ..................3
   3. Requirements ....................................................4
   4. P-User-Database Header Field Definition .........................4
   5. Applicability ...................................................5
   6. IANA Considerations .............................................5
   7. Security Considerations .........................................5
   8. Acknowledgements ................................................6
   9. References ......................................................6
      9.1. Normative References .......................................6
      9.2. Informative References .....................................6

1. Introduction ✨

so the 3GPP IMS uses the Session Initiation Protocol (SIP) [2] as its main signalling protocol πŸ’… (If you want the full IMS tea, check out 3GPP TS 23.228 [5] and 3GPP TS 24.229 [6].) 3GPP came up with a bunch of requirements that can be met by defining a brand-new SIP Private-Header (P-header), and they followed the procedures in RFC 3427 [3] to do it πŸŽ€

Here's how the rest of the doc is laid out πŸ—ΊοΈ Section 2 covers the scenarios 3GPP cares about, and Section 3 talks about the requirements that come out of them. Section 4 defines the P-User-Database header field, which meets those requirements, and Section 5 explains the applicability and scope of this new header. Section 6 registers the P-User-Database header field with the IANA, and Section 7 covers the security properties of the environment where this header is meant to be used πŸ”

2. Scenarios 🎬

in the 3GPP IMS there are two scenarios where a set of proxies handling a request has to consult the same user database 🧚 One is a user registering to the IMS network. The other is an unregistered user receiving an incoming request that triggers a service (for example, a voice mail service) πŸ“«

2.1. User Registering to the IMS πŸ“²

in the IMS, SIP REGISTER requests from a User Agent (UA) go through a bunch of SIP proxy servers before they reach the SIP registrar πŸšΆβ€β™€οΈ A REGISTER request sent by a UA gets routed to the UA's outbound proxy, which is called the P-CSCF (Proxy-Call/Session Control Function) πŸ’–

The P-CSCF then routes the REGISTER request to another proxy called the I-CSCF (Interrogating-CSCF). The I-CSCF is always located in the home domain of the user 🏠 It consults the user database of the domain, called the Home Subscriber Server (HSS), so it can choose the registrar that will process the REGISTER request πŸ”

With the information it gets from the HSS, the I-CSCF routes the REGISTER request to the right registrar, which is called the S-CSCF (Serving-CSCF) 🎯 At this point the S-CSCF needs to contact the same HSS the I-CSCF already contacted, so it can fetch the user profile of whoever generated the REGISTER request πŸ™ˆ

The interface between the I-CSCF and the HSS, and the one between the S-CSCF and the HSS, is called the Cx interface. It's based on Diameter [4] πŸ’œ

When there's a single HSS (aka one user database) handling all the users in the domain, both the I-CSCF and the S-CSCF can be configured with its address so they can contact it whenever they need to 🌸 But some domains have several HSSs, and each one handles a particular set of users. So when dealing with a REGISTER request, the I-CSCF and the S-CSCF have to figure out which HSS holds the profile of the user who generated the REGISTER request 🧩

In networks with more than one HSS, there's a Diameter redirect agent called the Subscription Locator Function (SLF) 🧭 The interface between the I-CSCF and the SLF, and the one between the S-CSCF and the SLF, is called the Dx interface. Like the CX interface, it's based on Diameter 🌈 The SLF gives the I-CSCF and the S-CSCF the address of the HSS that handles the user they're dealing with ✨

So in a network with more than one HSS, the SLF gets consulted twice per REGISTER request: first by the I-CSCF, and later by the S-CSCF 😭 If the I-CSCF could hand the S-CSCF the address of the HSS handling the user who generated the REGISTER request, the S-CSCF could contact that HSS directly. The S-CSCF wouldn't need to contact the SLF to get the HSS address. Main character energy, right? πŸ‘‘

2.2. Incoming Request for an Unregistered User πŸ“¬

in the IMS, incoming requests for a user go through an I-CSCF in the user's home domain 🏑 This I-CSCF consults the HSS over the Diameter-based Cx interface to decide which S-CSCF should handle the request. After that consultation, the I-CSCF forwards the request to an S-CSCF, which is also located in the user's home domain πŸ¦‹

If the user the request is addressed to is registered to the IMS network, the S-CSCF that receives the request already knows which HSS handles that user, because it stored this info when the user registered 🧠 But if the user isn't registered, the S-CSCF needs to consult the SLF (assuming there's more than one HSS in the network) to find the HSS that handles the user πŸ”Ž

So, just like in the previous scenario, in a network with more than one HSS the SLF gets consulted twice per incoming request addressed to an unregistered user: first by the I-CSCF, and later by the S-CSCF 😩 If the I-CSCF could give the S-CSCF the address of the HSS handling the user who generated the request, the S-CSCF could contact that HSS directly and skip the SLF entirely πŸ™Œ

3. Requirements πŸ“‹

this section lists the requirements that come out of the previous scenarios πŸ’…

  1. It is necessary to optimize the registration process in the 3GPP IMS by reducing the time it takes for a UA to register to the IMS network. ⏱️
  2. It is necessary to optimize the handling of incoming requests to unregistered users in the 3GPP IMS by reducing the time it takes for a domain to handle these requests. πŸš€
  3. It is necessary to improve the scalability of SLFs in the 3GPP IMS by reducing the amount of traffic the SLF of a network needs to handle. πŸ“ˆ

4. P-User-Database Header Field Definition πŸŽ€

this document defines the SIP P-User-Database P-header πŸ’– This header field can be added to requests routed from an I-CSCF to an S-CSCF, and it carries the address of the HSS that handles the user who generated the request 🫢

The P-User-Database header field's augmented Backus-Naur Form (BNF) [1] syntax is the following 🧁

   P-User-Database     = "P-User-Database" HCOLON database
                         *( SEMI generic-param )
   database            = LAQUOT DiameterURI RAQUOT

DiameterURI is defined in RFC 3588 [4] πŸ“– HCOLON, LAQUOT, RAQUOT, and generic-param are defined in RFC 3261 [2] πŸ’œ

here's an example of a P-User-Database header field ✨

   P-User-Database: <aaa://host.example.com;transport=tcp>

5. Applicability πŸ”­

okay so according to RFC 3427 [3], P-headers have limited applicability 🚧 Specifications of P-headers like this RFC need to clearly document the useful scope of the proposal, explain its limitations, and explain why it isn't suitable for general use of SIP on the Internet πŸ™ˆ

The P-User-Database header field is intended for use in 3GPP IMS networks 🏰 It carries the address of a user database, which is referred to as HSS, between two proxies, which are referred to as I-CSCF and S-CSCF πŸ¦‹ The I-CSCF and the S-CSCF belong to the same administrative domain and share a common frame of reference to the user database 🀝 The I-CSCF inserts the P-User-Database header field into a SIP request, and the S-CSCF removes it before routing the request further πŸŽ€

Heads up bestie: when SIP is used on the Internet, there are typically no proxies querying a user database between the UA sending a REGISTER request and the registrar. So the P-User-Database header field doesn't seem useful in a general Internet environment πŸ’€

6. IANA Considerations πŸ—‚οΈ

this document defines a new SIP header field, P-User-Database 🌈 It has been registered by the IANA in the SIP Parameters registry, under the Header Fields subregistry βœ…

7. Security Considerations πŸ”

ok this one is serious so pay attention 😀 The P-User-Database defined in this document is meant to be used in an environment where the elements are trusted, and where attackers are not supposed to have access to the protocol messages between those elements πŸ›‘οΈ Traffic protection between network elements is sometimes handled with IP Security (IPsec), and sometimes by physically protecting the network πŸ”’ Either way, the environment where the P-User-Database header field will be used ensures the integrity and the confidentiality of its contents πŸ’…

There's a slight security risk if a P-User-Database header field is allowed to propagate out of the administrative domain where it was generated 🚨 No user-sensitive information would be revealed by such a breach, but it could disclose information about the topology of the operator network that goes beyond the level of disclosure already explicit in SIP messages without this extension πŸ™ˆ So operators need to make sure the P-User-Database header field is removed from requests before they're sent to another administrative domain. No leaks, periodt 🫢

8. Acknowledgements πŸ™

Nuria Esteban, Stephen Terrill, and Jeroen van Bemmel provided comments on this document πŸ’œ Dean Willis performed a thorough review of this document 🌸

9. References πŸ“š

9.1. Normative References πŸ’Ž

[1] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 4234, October 2005.

[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] Mankin, A., Bradner, S., Mahy, R., Willis, D., Ott, J., and B. Rosen, "Change Process for the Session Initiation Protocol (SIP)", BCP 67, RFC 3427, December 2002.

[4] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J. Arkko, "Diameter Base Protocol", RFC 3588, September 2003.

9.2. Informative References ✨

okay so these are the "extra reading" references, bestie πŸ“š they aren't required to implement this, but they're where the IMS stuff is actually defined πŸ’–

[5] 3GPP, "IP Multimedia Subsystem (IMS); Stage 2", 3GPP TS 23.228 5.14.0, October 2005.

[6] 3GPP, "Internet Protocol (IP) multimedia call control protocol based on Session Initiation Protocol (SIP) and Session Description Protocol (SDP); Stage 3", 3GPP TS 24.229 5.14.0, October 2005.


Authors' Addresses πŸŽ€

meet the two authors, both at Ericsson πŸ’…

Gonzalo Camarillo
Ericsson
Hirsalantie 11
Jorvas  02420
Finland

EMail: Gonzalo.Camarillo@ericsson.com
German Blanco
Ericsson
Via de los Poblados 13
Madrid  28035
Spain

EMail: german.blanco@ericsson.com

the legal part, bestie πŸ™ˆ the Internet Society owns the copyright here (2006) πŸ¦‹

Copyright (C) The Internet Society (2006).

this document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

this document and the information contained herein are provided on an "AS IS" basis and 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.

no warranties, no promises πŸ’€ the doc is provided as-is, so read it with your own eyes, fr fr

Intellectual Property πŸ”₯

the IETF doesn't claim to know whether any patents or other rights cover this tech, and it doesn't say whether licenses are available either 🫢 this is the part where they're just being honest, ngl

the IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

copies of IPR disclosures made to the IETF Secretariat, and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification, can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

the IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.


Acknowledgement 🧚

last but not least, the RFC Editor function gets its funding from the IETF Administrative Support Activity (IASA) πŸ’œ someone has to keep the lights on, periodt ✨

πŸ“¦ where this page comes from