RFC 7316

The Session Initiation Protocol (SIP) P-Private-Network-Indication Private Header (P-Header)

πŸ“… published July 2014, from ietf

RFC 7316: The Session Initiation Protocol (SIP) P-Private-Network-Indication Private Header (P-Header) πŸŽ€

okay bestie, RFC 7316 is an Informational doc from the IETF (Internet Engineering Task Force) πŸ’… It came out in July 2014 with ISSN 2070-1721. The authors are J. van Elburg (Detecon International Gmbh), K. Drage (Alcatel-Lucent), and M. Ohsugi, S. Schubert, and K. Arai (all NTT). The title block doesn't list any Obsoletes or Updates entries, so it's not replacing or amending anything else πŸ¦‹

Abstract

This doc is all about the SIP P-Private-Network-Indication P-header, which 3GPP uses ✨ The header says that a message is part of a private network's traffic and tells you which private network it belongs to. That's the whole point, because once a node knows the traffic is private, it can handle it with a different set of rules than public network traffic gets πŸ’–

Status of This Memo

This is not an Internet Standards Track spec, so it's published just to inform people 🧚

It's an IETF product and it reflects what the IETF community agreed on. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). Not everything the IESG approves is up for any level of Internet Standard, so check out Section 2 of RFC 5741 if you want the details πŸ™ˆ

For the current status, any errata, and how to send feedback, go to http://www.rfc-editor.org/info/rfc7316 🌸

Copyright (c) 2014 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 stood when it was published. Please actually read those, bestie, because they spell out your rights and restrictions for this doc πŸ“œ

If you pull Code Components out of this doc, they have to include the Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions. They also come with no warranty, the way the Simplified BSD License says 🫢

Table of Contents

   1. Introduction ....................................................3
      1.1. Overview ...................................................3
      1.2. Applicability ..............................................3
      1.3. Background .................................................3
      1.4. Business Communication .....................................3
      1.5. Indication Types ...........................................4
   2. Conventions .....................................................6
   3. Definitions .....................................................6
      3.1. Traffic ....................................................6
      3.2. Public Network Traffic .....................................6
      3.3. Private Network Traffic ....................................6
      3.4. Break-In ...................................................6
      3.5. Break-Out ..................................................6
      3.6. Trust Domain ...............................................6
   4. Application of Terminology ......................................7
   5. Overview of Solution ...........................................10
   6. Proxy Behavior .................................................11
      6.1. P-Private-Network-Indication Generation ...................11
      6.2. P-Private-Network-Indication Consumption ..................11
      6.3. P-Private-Network-Indication Removal ......................11
      6.4. P-Private-Network-Indication Verification .................11
   7. P-Private-Network-Indication Header Field Definition ...........12
   8. Security Considerations ........................................12
   9. IANA Considerations ............................................13
   10. Acknowledgments ...............................................13
   11. References ....................................................13
      11.1. Normative References .....................................13
      11.2. Informative References ...................................14

1. Introduction ✨

1.1. Overview

Okay so ETSI TISPAN (Telecommunications and Internet converged Services and Protocols for Advanced Networking) came up with Next Generation Networks (NGNs) 🌈 These run on the 3GPP IP Multimedia Subsystem (IMS), and IMS uses SIP [RFC3261] as its main signaling protocol πŸ“ž If you want the full IMS story, check out 3GPP TS 23.228 [3GPP.23.228] and 3GPP TS 24.229 [3GPP.24.229]. 3GPP and ETSI TISPAN figured out a set of requirements that a brand new optional SIP header could meet, and they followed the procedures in RFC 5727 [RFC5727] to do it πŸ’–

1.2. Applicability

The P-Private-Network-Indication header field is meant for controlled, closed networks like 3GPP IMS and ETSI TISPAN NGNs 🏰 It is not meant for the general Internet, and it's probably not suitable there πŸ™ˆ

Real talk: there are no mechanisms defined to stop anyone from spoofing this header 😭 So if a network accepted calls carrying it from the general Internet, an attacker could inject information into private networks. Not a vibe!

1.3. Background

The P-Private-Network-Indication header field shows up in 3GPP IMS specs, and some networks already use it as an indicator for a specific capability 🧚 Some vendors have also implemented it in their equipment, in some countries 🌸

RFC 5727 [RFC5727] doesn't let people propose new P-headers "unless existing deployments or standards use the prefix already". Here, existing deployments and 3GPP standards already use P-Private-Network-Indication, so this is exactly the exception case where a P-header is allowed πŸŽ€

1.4. Business Communication

ETSI TISPAN came up with a framework, which 3GPP adopted as [3GPP.22.519], for supporting business communication capabilities in the NGN πŸ’Ό Besides directly attaching Next Generation Corporate Network (NGCN) equipment, this also means the NGN can "host" enterprise functionality inside itself ✨

These hosting arrangements are:

  • a) virtual leased line, where NGCN sites are interconnected through the NGN;
  • b) business trunking application, where the NGN hosts transit capabilities between NGCNs; break-in capabilities, where the NGN converts public network traffic to private network traffic for delivery at a served NGCN; and break-out capabilities, where the NGN converts private network traffic from a served NGCN to public network traffic; and
  • c) hosted enterprise services, where an NGN hosts originating and/or terminating business communication capabilities for business communication users that are directly attached to an NGN.

ETSI TISPAN has requirements that an explicit indication for private network traffic can meet 🫢

The traffic a public NGN generates or receives on behalf of a private network can be either:

  1. Public network traffic: traffic sent to or received from an NGN for processing according to the rules for ordinary subscribers of a public telecommunication network. This type of traffic is known as public network traffic.
  2. Private network traffic: traffic sent to the NGN for processing according to an agreed set of rules specific to an enterprise. This type of traffic is known as private network traffic. It's normally exchanged within a single enterprise, but it can also be exchanged between two or more different enterprises, based on some prior arrangements, if regulations don't rule it out πŸ“

1.5. Indication Types

A private network indication, as this doc proposes it, tells the receiving network element (the one supporting this spec) that a request is about private network traffic and not public network traffic πŸ”₯ It doesn't identify an end user on a private network, and it isn't meant to be delivered to one. It just says special service arrangements apply (if that service is configured for private network traffic) for an enterprise. So it's service on behalf of an enterprise, not service to a private network's end user πŸ’…

So IMS nodes in the NGN can do different processing, ETSI TISPAN came up with these requirements for the NGN. The NGN shall:

  • a) distinguish public network traffic from private network traffic; and
  • b) distinguish private network traffic belonging to one enterprise from that belonging to another enterprise.

Here are a few reasons a public NGN might want to tell the two types of traffic apart:

  1. Different regulations apply to the two types of traffic. For example, emergency calls may be handled differently depending on the type of traffic.
  2. Different charging regimes may apply.
  3. Call recording for business reasons (e.g., quality control, training, non-repudiation) might apply only to a specific type of traffic.
  4. Different levels of signaling and/or media transparency may apply to the different types of traffic.

There are a few reasons signaling needs an explicit indication 🧠

  • a) Caller and callee addresses can't always tell you whether a call should be treated as private or public network traffic.
  • b) Nodes that span multiple networks often need to behave differently depending on the type of traffic. When that's done with implicit schemes, enterprise-specific logic ends up spread across nodes in multiple operators' networks. That is clearly not a manageable architecture or solution 😭
  • c) Sometimes treating the call as a public network call is good for the enterprise, even when both participants come from the same enterprise πŸ’œ

Based on all that background, this doc sets out requirements for SIP to support an explicit private network indication, and defines a P-header, P-Private-Network-Indication, to meet them πŸ¦‹

2. Conventions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this doc are to be read as described in BCP 14, RFC 2119 [RFC2119] πŸ“–βœ¨

3. Definitions

3.1. Traffic

In this doc, "traffic" means all communication that pertains to and/or is controlled by a SIP transaction or dialog 🌸

3.2. Public Network Traffic

Traffic sent to or received from a public telecommunication network for processing according to the rules for ordinary subscribers of a public telecommunication network πŸ’–

3.3. Private Network Traffic πŸŽ€

Okay so this one is traffic going to or coming from a public telecom network, but it's getting processed under a set of rules that belong to one enterprise (or a little group of closely related enterprises). Basically it's their VIP lane πŸ’…

3.4. Break-In πŸšͺ✨

Break-in is when public network traffic gets converted into private network traffic. Once that conversion happens, the header defined in this spec gets added so everyone knows the traffic is now private. Bouncer let you in, bestie 🫢

3.5. Break-Out πŸ¦‹

Break-out is the reverse glow-up: private network traffic gets converted back into public network traffic. The header defined in this spec gets removed, so the traffic is clearly public again after the conversion 🌸

3.6. Trust Domain πŸ’œ

The term "trust domain" is borrowed from P-Asserted-Identity [RFC3324], and it applies to the private network indication too. The rules for setting up one of these trust domains are also in P-Asserted-Identity [RFC3324], and you'll need to specify a Spec(T) as described in Section 2.4 of [RFC3324] πŸ“‹

Here's the tea: you need the exact same info to specify a Spec(T) for P-Private-Network-Indication as you would for P-Asserted-Identity [RFC3324]. BUT if a network is using P-Private-Network-Indication alongside other header fields that also use Spec(T) (like P-Asserted-Identity), the Spec(T) for each header will probably be different from the others πŸ™ˆ

4. Application of Terminology 🌈

Figure 1 shows how sites from two private networks connect over the public network. Traffic in the public network that links the two sites of enterprise 1 gets tagged as private network traffic for enterprise 1. Sometimes an enterprise can also decide to send traffic between its own sites as public network traffic, if that's better for them πŸ’… Traffic in the public network linking the two sites of enterprise 2 gets tagged as private network traffic for enterprise 2. Enterprise 1 also calls public phones, and that's public network traffic (untagged in the public network).

There can also be situations where traffic in the public network between two different private networks gets tagged as private network traffic, using a pre-arranged domain name that both enterprises agreed on. Figure 1 shows this with the link between the site of enterprise 3 and the site of enterprise 4 🧚

                 +------------------------------+
                 |       private network        |
  +------------+ |<===========traffic==========>| +------------+
  | enterprise | |         (enterprise 1)       | | enterprise |
  |      1     +-+------------------------------+-+      1     !
  |   site 1   | |                              | |   site 2   |
  +------------+ |                          +---+-|            |
                 |          public          |   | |            |
       /--\      |<=========network========>|   | +------------+
      o /\ o     |          traffic         |   |
       /  \------+--------------------------+   |
      +----+     |                              |
       public    |                              |
       phone     |                              |
                 |       private network        |
  +------------+ |<===========traffic==========>| +------------+
  | enterprise | |         (enterprise 2)       | | enterprise |
  |      2     +-+------------------------------+-+      2     !
  |   site 1   | |                              | |   site 2   |
  +------------+ |                              | +------------+
                 |                              |
                 |       private network        |
  +------------+ |<===========traffic==========>| +------------+
  | enterprise | |  (pre-arranged domain name)  | | enterprise |
  |      3     +-+------------------------------+-+      4     !
  |   site 1   | |                              | |   site 1   |
  +------------+ |                              | +------------+
                 |                              |
                 +------------------------------+

                  Figure 1: Two Private Networks

Figure 2 shows a private network connecting over the public network with help from a server that runs a business trunking application. That application handles routing for the enterprise traffic, figures out which calls are to and from public network users, and manages the break-in and break-out for that traffic. (Heads up: the business trunking application might be made of two pieces of logic, one for the originating enterprise site and one for the terminating enterprise site πŸ‘€) Traffic in the public network between the two sites of enterprise 1 gets tagged as private network traffic for enterprise 1. The business trunking application also routes calls to public phones, and those are public network traffic (untagged in the public network) πŸ’–

                 +-------------------------------------------------+
                 |       private network                           |
  +------------+ |<===========traffic============>+------------+   |
  | enterprise | |         (enterprise 1)         |            |   |
  |      1     +-+--------------------------------+            |   |
  |   site 1   | |                                | business   |   |
  +------------+ |                          +-----+ trunking   |   |
                 |          public          |     | application|   |
       /--\      |<=========network========>|  +--+            |   |
      o /\ o     |          traffic         |  |  |            |   |
       /  \------+--------------------------+  |  |            |   |
      +----+     |                             |  +------------+   |
       public    |                             |                   |
       phone     |                             |                   |
                 |       private network       |                   |
  +------------+ |<===========traffic=========>|                   |
  | enterprise | |         (enterprise 1)      |                   |
  |      1     +-+-----------------------------+                   |
  |   site 2   | |                                                 |
  +------------+ |                                                 |
                 |                                                 |
                 +-------------------------------------------------+

         Figure 2: Private Network and Business Trunking

Figure 3 shows a private network living on a server that runs a hosted enterprise service application (also called Centrex) ☎️ That service supports the enterprise's own phones and can also route calls to and from public network phones using break-in or break-out. Traffic in the public network between the site of enterprise 1 and the hosted enterprise service for enterprise 1 gets tagged as private network traffic for enterprise 1. The hosted service also routes calls to public phones, which are public network traffic (untagged in the public network). Traffic from the enterprise phones normally wouldn't be tagged, but it can be 🫣 (Note: the hosted enterprise service logic might come before or after a business trunking application that offers services for an enterprise site.)

                 +-------------------------------------------------+
                 |       private network                           |
  +------------+ |<===========traffic============>+------------+   |
  | enterprise | |         (enterprise 1)         |            |   |
  |      1     +-+--------------------------------+ hosted     |   |
  |   site 1   | |                                | enterprise |   |
  +------------+ |                          +-----+ service    |   |
                 |          public          |     | enterprise |   |
       /--\      |<=========network========>|  +--+ 1          |   |
      o /\ o     |          traffic         |  |  |            |   |
       /  \------+--------------------------+  |  |            |   |
      +----+     |                             |  +------------+   |
       public    |                             |                   |
       phone     |                             |                   |
                 |       private network       |                   |
       /--\      |<===========traffic=========>|                   |
      o /\ o     |         (enterprise 1)      |                   |
       /  \------+-----------------------------+                   |
      +----+     |                                                 |
      enterprise |                                                 |
       phone     |                                                 |
                 +-------------------------------------------------+

                Figure 3: Hosted Service and Private Network

5. Overview of Solution 🧩

The mechanism in this document depends on a brand-new header field called 'P-Private-Network-Indication'. It carries a private network identifier written as a domain name, for example:

P-Private-Network-Indication: example.com

A proxy server that handles a message MAY insert this P-Private-Network-Indication header field into the message, based on authentication of the message's source, configuration, or local policy πŸ” A proxy server MAY forward the message to other proxies in the same administrative domain, or to proxies in a trusted domain, so they can handle it as private network traffic. A proxy that forwards a message to a proxy server or user agent (UA) it does not trust MUST remove the P-Private-Network-Indication header field before forwarding the message. No sharing with strangers, periodt πŸ™…β€β™€οΈ

Using a domain name as the private network identifier makes it a globally unique identifier, tied to the originating and/or terminating enterprise(s). Domain names are the move here because a company can reuse a domain it already owns on the Internet, so there's no need for a separate private network identifier registry 🌸 And if the enterprise needs more than one identifier, it can freely add subdomains under its own control πŸ’…

The formal syntax for the P-Private-Network-Indication header is in Section 7 πŸ“–

6. Proxy Behavior πŸ‘‘

6.1. P-Private-Network-Indication Generation ✨

Proxies that either decide certain traffic should be treated as private network traffic, or have a break-in function that turns incoming public network traffic into private network traffic, MUST insert a P-Private-Network-Indication header field into incoming or outgoing requests, for a dialog or for a standalone transaction. The value MUST be set to the private network identifier that matches the enterprise(s) the traffic belongs to 🫢

6.2. P-Private-Network-Indication Consumption ✨

Okay bestie, so proxies that are in charge of handling specific private network traffic differently MUST support this extension πŸ’…. The P-Private-Network-Indication header field MUST NOT be used by a proxy if it showed up in a request from an entity the proxy doesn't trust πŸ™ˆ. And if that happens, it MUST be removed before the request gets forwarded 🧹.

6.3. P-Private-Network-Indication Removal 🧹

Proxies sitting at the edge of the trust domain, or proxies with a break-out function that turns incoming private network traffic into public network traffic, MUST remove the P-Private-Network-Indication header field before forwarding any request that contains it πŸ’–.

6.4. P-Private-Network-Indication Verification βœ…

Okay, so when proxies that support this spec get a P-Private-Network-Indication header field in a SIP request from a trusted node, they MUST check whether the domain name in the request matches the domain name associated with the provisioned domain name 🧐. If it doesn't match, they MUST remove the header field πŸ—‘οΈ.


7. P-Private-Network-Indication Header Field Definition πŸ“œ

This document defines the SIP P-Private-Network-Indication header field πŸ¦‹. A proxy can add it to initial requests for a dialog or to standalone requests. Its presence tells proxies that understand the header field that the request should be treated as private network traffic πŸ”’. The header field carries a domain name value, which connects the private network traffic to the enterprise it belongs to, and lets proxies that understand it process the request according to the local policy configured for a specific enterprise (or enterprises) 🏒.

The Augmented Backus-Naur Form (ABNF) [RFC5234] syntax of the P-Private-Network-Indication header field looks like this:

P-Private-Network-Indication = "P-Private-Network-Indication" HCOLON
                               PNI-value *(SEMI PNI-param)
PNI-param                 = generic-param
PNI-value                 = hostname

EQUAL, HCOLON, SEMI, hostname, and generic-param are defined in RFC 3261 [RFC3261] πŸ“–.

Here's an example of a P-Private-Network-Indication header field πŸ’œ:

P-Private-Network-Indication: example.com

8. Security Considerations πŸ”

Okay, this section is SERIOUS, bestie 😭. Read it carefully.

The private network indication defined in this document MUST only be used in traffic transported between network elements that are mutually trusted πŸ›‘οΈ. Traffic protection between network elements can be achieved with security protocols such as IP Encapsulating Security Payload (ESP) [RFC4303] or SIP / Transport Layer Security (SIP/TLS), or sometimes with physical protection of the network πŸ”. Either way, the environment where the private network indication is used needs to ensure the integrity and the confidentiality of the contents of this header field 🫢.

A private network indication received from an untrusted node MUST NOT be used, and the information MUST be removed from a request or response before it is forwarded to entities in the trust domain 🚫. Also, local policies may be in place to make sure that all requests entering the trust domain from untrusted nodes that carry a private network indication get discarded πŸ—‘οΈ.

There is a major security risk if a private network indication is allowed to escape the trust domain where it was generated πŸ’€. The indication may reveal information about the identity of the caller, meaning the organization that he belongs to, and that is sensitive information 😱. It also tells the outside world that this call follows a different set of rules than public traffic does, and that is sensitive information too πŸ™ˆ. To stop this kind of breach, proxies MUST NOT insert the information when forwarding requests to a next hop located outside the trust domain. When forwarding a request to a trusted node, proxies MUST NOT insert the header field unless they have sufficient knowledge that the route set includes another proxy in the trust domain that understands this header field. How to learn that knowledge is out of the scope of this document πŸ€·β€β™€οΈ. Proxies MUST remove the information when forwarding requests to untrusted nodes, or when the proxy doesn't know of any other proxy in the route set that can understand this header field 🧹.

9. IANA Considerations πŸ“‹

This document defines a new SIP header field, P-Private-Network-Indication πŸŽ€. IANA has registered this header field in the "SIP Parameters" registry, under the "Header Fields" subregistry ✨:

RFC Number: [RFC7316]

Header Field Name: P-Private-Network-Indication

Compact Form: none

10. Acknowledgments πŸ™Œ

The authors would like to thank Richard Barnes, Mary Barnes, Atle Monrad, Bruno Chatras, John Elwell, and Salvatore Loreto for commenting on an early version of this document 🌸. They also thank John Elwell for performing the expert review πŸ‘‘.


11. References πŸ“š

11.1. Normative References

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119, March 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.

[RFC3324]  Watson, M., "Short Term Requirements for Network Asserted
           Identity", RFC 3324, November 2002.

[RFC5234]  Crocker, D., Ed., and P. Overell, "Augmented BNF for
           Syntax Specifications: ABNF", STD 68, RFC 5234, January
           2008.

11.2. Informative References

[3GPP.22.519]
           3GPP, "Business Communication Requirements", TS 22.519.

[3GPP.23.228]
           3GPP, "IP Multimedia Subsystem (IMS); Stage 2", 3GPP TS
           23.228 V8, July 2007.

[3GPP.24.229] 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 V8, July 2007.

[RFC5727]  Peterson, J., Jennings, C., and R. Sparks, "Change Process
           for the Session Initiation Protocol (SIP) and the Real-
           time Applications and Infrastructure Area", BCP 67, RFC
           5727, March 2010.

[RFC4303]  Kent, S., "IP Encapsulating Security Payload (ESP)", RFC
           4303, December 2005.

Authors' Addresses πŸ¦‹

Hans Erik van Elburg
Detecon International Gmbh
Oberkasselerstrasse 2
Bonn  53227
Germany

EMail: ietf.hanserik@gmail.com


Keith Drage
Alcatel-Lucent
The Quadrant, Stonehill Green, Westlea
Swindon  SN5 7DJ
UK

EMail: drage@alcatel-lucent.com


Mayumi Ohsugi
NTT Corporation

Phone: +81 422 36 7502
EMail: mayumi.ohsugi@ntt-at.co.jp


Shida Schubert
NTT Corporation

Phone: +1 415 323 9942
EMail: shida@ntt-at.com


Kenjiro Arai
NTT Corporation
9-11, Midori-cho 3-Chome
Musashino-shi, Tokyo  180-8585
Japan

Phone: +81 422 59 3518
EMail: arai.kenjiro@lab.ntt.co.jp
URI:   http://www.ntt.co.jp
πŸ“¦ where this page comes from