RFC 9878

Updates to Private Header (P-Header) Extension Usage in Session Initiation Protocol (SIP) Requests and Responses

πŸ“… published November 2025, from ietf

RFC 9878 πŸ’– (Part 1 of 2)

okay bestie, this is RFC 9878, and the title is "Updates to Private Header (P-Header) Extension Usage in Session Initiation Protocol (SIP) Requests and Responses" πŸŽ€

Request for Comments: 9878, published by the IETF in November 2025 🌸

It was written by four people: C. Holmberg from Ericsson, N. Biondic from ETSI, G. Salgueiro from Cisco Systems, Inc., and R. Jesske from Deutsche Telekom. The ISSN is 2070-1721.

It's Informational, which means it's not an Internet Standards Track spec. It's published for information, not as a standard πŸ“š

It updates RFC 7315 and obsoletes RFC 7976 πŸ¦‹ So if you're reading RFC 7976 for anything, this one is the newer version that replaces it, and it changes how RFC 7315 is read.


Abstract πŸ’–

okay so the Third Generation Partnership Project (3GPP) noticed some cases where different SIP private header extensions, the ones called "P-" header fields and defined in RFC 7315, need to show up in SIP requests and responses where RFC 7315 said they weren't allowed πŸ™ˆ This document updates RFC 7315 so the affected "P-" header fields are allowed in those requests and responses.

This document also obsoletes RFC 7976. The RFC 7976 changes are about putting the P-Visited-Network-ID header field into SIP responses ✨

It also fixes some misalignments that showed up when RFC 3455 got obsoleted by RFC 7315. Clean-up arc unlocked 🧹


Status of This Memo πŸ“

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

It's a product of the Internet Engineering Task Force (IETF) and it represents the consensus of the IETF community. 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. For more on that, check Section 2 of RFC 7841 🌈

If you want the current status, any errata, or a way to send feedback, go to https://www.rfc-editor.org/info/rfc9878 πŸ’œ


Copyright (c) 2025 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 (https://trustee.ietf.org/license-info) as they stand on the publication date. Please read these carefully because they describe your rights and restrictions for this document 🧾 Code Components pulled out of this document must include the Revised BSD License text described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as the Revised BSD License says πŸ’…


Table of Contents πŸ—‚οΈ

   1.  Introduction
   2.  Misalignments and 3GPP Use Cases
     2.1.  General
     2.2.  Misalignments
     2.3.  3GPP Use Cases
       2.3.1.  General
       2.3.2.  P-Access-Network-Info
       2.3.3.  P-Charging-Vector
   3.  Updates to RFC 7315
   4.  IANA Considerations
   5.  Security Considerations
   6.  Operational considerations
   7.  Changes since RFC 7976
   8.  References
     8.1.  Normative References
     8.2.  Informative References
   Acknowledgments
   Authors' Addresses

1. Introduction ✨

okay so 3GPP found cases where different Session Initiation Protocol (SIP) [RFC3261] private header extensions, the "P-" header fields defined in [RFC7315], need to show up in SIP requests and responses where [RFC7315] said no 😭 This document updates [RFC7315] so the affected "P-" header fields are allowed in those requests and responses πŸ¦‹

This document also updates [RFC7315] to fix misalignments that happened when [RFC3455] got updated and then obsoleted by the publication of [RFC7315]. Main character glow-up πŸ‘‘


2. Misalignments and 3GPP Use Cases 🌸

2.1. General πŸ’…

[RFC7315] has contradictory statements about how SIP "P-" header fields get used in SIP requests and responses. That leaves it open to interpretation, so different implementations can end up doing different things πŸ’€ The statements in Section 5.7 of [RFC7315] don't line up with how the SIP "P-" header fields are defined and used in Section 4 of [RFC7315]. This section covers the misalignments that happened when [RFC3455] got updated and then obsoleted by [RFC7315], and how they get fixed πŸ”§

   |  NOTE: In the case of the P-Called-Party-ID header field,
   |  allowing it in PUBLISH requests was done deliberately in
   |  [RFC7315].  Therefore, it is not considered a misalignment.

Since [RFC7315] was published, 3GPP defined new use cases that need the RFC updated πŸ“ˆ This section covers the 3GPP use cases behind the updates and the changes needed to [RFC7315] to support them 🫢

Section 3 updates [RFC7315], based on the misalignments and the 3GPP use cases πŸŽ€

2.2. Misalignments 🧩

These updates fix the misalignments that happened when [RFC3455] got obsoleted by [RFC7315] ✨

  • P-Associated-URI: Remove the statement that this header field can appear in the SIP REGISTER method. Bye bye, REGISTER πŸ‘‹
  • P-Called-Party-ID: Delete the statement that the P-Called-Party-ID header field can appear in SIP responses. Then add a statement that it can appear in the SIP REFER method πŸ¦‹
  • P-Access-Network-Info: Add a statement that the P-Access-Network-Info header field can appear in SIP responses 🌈
  • P-Charging-Vector: Add a statement that the P-Charging-Vector header field can appear in SIP responses. Also add a statement that it cannot appear in the SIP ACK method 🚫
  • P-Charging-Function-Addresses: Add a statement that the P-Charging-Function-Addresses header field can appear in SIP responses πŸ’œ

This update clarifies how the header gets used compared to [RFC7315]:

  • P-Visited-Network-ID: Add a statement that the P-Visited-Network-ID header field cannot appear in the SIP NOTIFY, PRACK, INFO, and UPDATE methods. Then add a statement that it can appear in all non-100 (Trying) responses πŸ“

2.3. 3GPP Use Cases πŸŽ€

2.3.1. General 🌸

These updates are needed to implement the 3GPP use cases:

  • P-Access-Network-Info: Add a statement that the P-Access-Network-Info header field can appear in the SIP ACK method when a SIP 2xx response triggers it πŸ¦‹
  • P-Charging-Vector: Add a statement that the P-Charging-Vector header field can appear in the SIP ACK method when a SIP 2xx response triggers it 🫢

The following sections go through the "P-" header fields one by one and describe the 3GPP use cases behind the updates. The use cases come from the procedures defined in [TS24.229] πŸ“š

2.3.2. P-Access-Network-Info 🌍

The P-Access-Network-Info header field may contain the Network Provided Location Information (NPLI). The NPLI is described in [TS23.228] πŸ—ΊοΈ

A proxy that has the right info about the access technology might insert a P-Access-Network-Info header field with its own values. Those values are identified by the string "network-provided", which is defined in [RFC7315]. Depending on operator policy, roaming agreement, or both, the local time of the visited network may be included ⏰

Call Data Records (CDRs) generated within the IP Multimedia Subsystem (IMS) have to contain the NPLI to make sure billing is correct πŸ’° When an IMS session gets modified, the NPLI also needs to be stored, because where the user is at the moment the session is modified can trigger a charging event 🧾 For a session modification event at IMS, the NPLI needs to be provided:

  • when the bearer establishment is triggered, or
  • at session release when the bearer deactivation is triggered, or
  • when the bearer modification is triggered, e.g., a QoS modification for the use of a newly negotiated codec ✨

In some scenarios, a proxy may trigger the bearer modification when it receives a Session Description Protocol (SDP) answer within the SIP 2xx response to the SIP INVITE request. In that case, the NPLI needs to be provided within the SIP ACK request. The catch is that [RFC7315] doesn't allow the P-Access-Network-Info header field in a SIP ACK request 😀

When a proxy receives the SDP answer within a SIP 2xx response to the SIP INVITE request, it may start procedures to get the NPLI and may include the P-Access-Network-Info header field with the NPLI in the SIP ACK request πŸ”₯

The P-Access-Network-Info header field shall not be included in SIP ACK requests triggered by non-2xx responses 🚫

2.3.3. P-Charging-Vector πŸ’Έ

[RFC7315] defines an Inter Operator Identifier (IOI). It lets different operators in a SIP dialog, or in a transaction outside a dialog, identify each other by exchanging operator identification information in the P-Charging-Vector header field 🀝

In interconnection scenarios with multiple operators, one or more transit operators can sit between the originating and terminating operators. The identities of those transit operators are represented by a transit-ioi parameter of the P-Charging-Vector header field πŸ›£οΈ

Transit operators can be selected independently for each SIP method and direction of request. A transit network only knows about one individual SIP request, so transit network selection is an independent decision for each request. It could be based on load, cost, percentage, time of day, and other factors πŸ•°οΈ That's why the P-Charging-Vector header field, which carries the transit IOI information, needs to be included in each SIP request and response. The problem is that [RFC7315] doesn't allow the P-Charging-Vector header field in the SIP ACK request 😩

A SIP proxy that supports this extension and receives the SIP ACK request may include a P-Charging-Vector header field in it 🫢

The P-Charging-Vector header field shall not be included in SIP ACK requests triggered by non-2xx responses πŸ™…β€β™€οΈ


Part 2 is next: Section 3 (Updates to RFC 7315) onward, including the IANA, Security, and Operational considerations and the references πŸ‘€πŸ’–

3. Updates to RFC 7315 πŸ’…

okay so this is where the actual edits live πŸ¦‹ it updates Section 5.7 of [RFC7315] so the misalignment fixes and the 3GPP requirements from Section 2 actually get implemented. the old text has blank lines added so it's easier to read (the blank lines aren't part of the real text, just vibes 🫢)

Old text:

The P-Associated-URI header field can appear in SIP REGISTER
method and 2xx resonses [sic].

The P-Called-Party-ID header field can appear in SIP INVITE,
OPTIONS, PUBLISH, SUBSCRIBE, and MESSAGE methods and all
responses.

The P-Visited-Network-ID header field can appear in all SIP
methods except ACK, BYE, and CANCEL and all responses.

The P-Access-Network-Info header field can appear in all SIP
methods except ACK and CANCEL.

The P-Charging-Vector header field can appear in all SIP methods
except CANCEL.

The P-Charging-Function-Addresses header field can appear in all
SIP methods except ACK and CANCEL.

New text:

The P-Associated-URI header field can appear in SIP REGISTER 2xx
responses.

The P-Called-Party-ID header field can appear in the SIP INVITE,
OPTIONS, PUBLISH, REFER, SUBSCRIBE, and MESSAGE requests.

The P-Visited-Network-ID header field can appear in all SIP
requests and the associated non-100 response message except in
ACK, BYE, CANCEL, NOTIFY, PRACK, INFO, UPDATE.

The P-Access-Network-Info header field can appear in all SIP
requests and the associated non-100 responses, except in CANCEL
requests, CANCEL responses, and ACK methods triggered by non-2xx
responses.

The P-Charging-Vector header field can appear in all SIP requests
and the associated non-100 responses, except in CANCEL requests,
CANCEL responses, and ACK requests triggered by non-2xx responses.

The P-Charging-Function-Addresses header field can appear in all
SIP methods and the associated non-100 responses, except in CANCEL
requests, CANCEL responses, and ACK requests.

4. IANA Considerations 🧚

no IANA actions in this one, so nothing to register and nothing to request. easy peasy πŸ’–

5. Security Considerations πŸ”

okay bestie, this part is serious, so read it carefully πŸ™ˆ

The security considerations for these "P-" header fields are defined in [RFC7315]. This specification allows some header fields to be present in messages where they were previously not allowed, and the security considerations and assumptions described in [RFC7315] (e.g., regarding only sending information to trusted entities) also apply to those messages. In addition, this specification also disallows some header fields to be present in messages where they were previously allowed. That does not cause any security issues, but implementors need to be aware that implementations may not have been updated according to this document, and take proper actions if a header field occurs, or does not occur, in a message where it should occur (or occurs in a message where it should not occur).

⚠️ the big one: implementations might not have been updated to match this document, so if a header field shows up where it should, or doesn't show up where it should, you need to deal with it properly πŸ’€

This document adds the ability to include P-Access-Network-Info in ACK requests. As documented in [RFC7315], P-Access-Network-Info may include privacy sensitive information, including the user's location. πŸ“ The security and privacy considerations for P-Access-Network-Info in ACK requests are similar to those for the other SIP requests discussed in Section 6.4 of [RFC7315]. The security and privacy considerations for the P-Visited-Network-ID header field are similar to those for the other SIP responses discussed in Section 6.3 of [RFC7315].

6. Operational considerations πŸ› οΈ

so the "P-" header fields are mainly used in (and in most cases, only defined for) networks defined by the 3GPP. the updates in this document are already defined in [TS24.229], so the updates are not seen to cause backward-compatibility concerns. no drama here 🌸

7. Changes since RFC 7976 🌈

the changes related to RFC 7976 are about adding the P-Visited-Network-ID header field to SIP responses. specifically, any SIP response message, except a 100 (Trying) response, may include a P-Visited-Network-ID header field ✨

8. References πŸ“š

8.1. Normative 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,
           DOI 10.17487/RFC3261, June 2002,
           <https://www.rfc-editor.org/info/rfc3261>.

[RFC7315]  Jesske, R., Drage, K., and C. Holmberg, "Private Header
           (P-Header) Extensions to the Session Initiation Protocol
           (SIP) for the 3GPP", RFC 7315, DOI 10.17487/RFC7315, July
           2014, <https://www.rfc-editor.org/info/rfc7315>.

[TS23.228] 3GPP, "IP Multimedia Subsystem (IMS); Stage 2", 3GPP
           TS 23.228,
           <https://portal.3gpp.org/desktopmodules/Specifications/
           SpecificationDetails.aspx?specificationId=821>.

[TS24.229] 3GPP, "IP multimedia call control protocol based on
           Session Initiation Protocol (SIP) and Session Description
           Protocol (SDP); Stage 3", 3GPP TS 24.229,
           <https://portal.3gpp.org/desktopmodules/Specifications/
           SpecificationDetails.aspx?specificationId=1055>.

8.2. Informative References

[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, DOI 10.17487/RFC3455, January 2003,
           <https://www.rfc-editor.org/info/rfc3455>.

Acknowledgments 🫢

big thank you to Michael Kreipl, Charles Eckel, and Paul Kyzivat for the constructive feedback from the author πŸ’œ

and thanks to Paul Kyzivat, Jean Mahoney, Ben Campbell, and Adam Roach for comments on an earlier draft version of this doc πŸŽ€

Authors' Addresses πŸ’Œ

Christer Holmberg
Ericsson
Hirsalantie 11
FI-02420 Jorvas
Finland
Email: christer.holmberg@ericsson.com


Nevenka Biondic
ETSI
650 route des Lucioles
06921 Sophia Antipolis cedex
France
Email: Nevenka.Biondic@etsi.org


Gonzalo Salgueiro
Cisco Systems, Inc.
7200-12 Kit Creek Road
Research Triangle Park, NC 27709
United States of America
Email: gsalguei@cisco.com


Roland Jesske
Deutsche Telekom
Deutsche-Telekom-Allee 9
64295 Darmstadt
Germany
Email: r.jesske@telekom.de
URI:   www.telekom.com
πŸ“¦ where this page comes from