Internet Engineering Task Force D. York Internet-Draft Individual Intended status: Informational T. Asveren Expires: September 6, 2018 Ribbon Communications March 5, 2018 P-Charge-Info - A Private Header Field (P-Header) Extension to the Session Initiation Protocol (SIP) draft-york-p-charge-info-06 Abstract This text documents the current usage of 'P-Charge-Info', an existing private Session Initiation Protocol (SIP) header field (P-header) used to convey billing information about the party to be charged. This P-Header is currently used in production by several equipment vendors and carriers. This document is submitted to request the registration of this header field with the Internet Assigned Numbers Authority (IANA). NOTE: This document is a simplified version of the document previously known as 'draft-york-dispatch-p-charge-info'. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on September 6, 2018. Copyright Notice Copyright (c) 2018 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 York & Asveren Expires September 6, 2018 [Page 1] Internet-Draft P-Charge-Info, a SIP Private Header Field March 2018 (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to 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 are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 3. Purpose of this Document . . . . . . . . . . . . . . . . . . 3 4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5. Alternatives . . . . . . . . . . . . . . . . . . . . . . . . 4 5.1. P-Charging-Vector . . . . . . . . . . . . . . . . . . . . 4 5.2. P-DCS-Billing-Info . . . . . . . . . . . . . . . . . . . 4 5.3. P-Asserted-Identity . . . . . . . . . . . . . . . . . . . 5 6. The P-Charge-Info Header . . . . . . . . . . . . . . . . . . 6 6.1. Applicability Statement for the P-Charge-Info header field . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6.2. Usage of the P-Charge-Info header field . . . . . . . . . 6 6.2.1. Procedures at the UA . . . . . . . . . . . . . . . . 6 6.2.2. Procedures at the Proxy . . . . . . . . . . . . . . . 7 6.3. Example of Usage . . . . . . . . . . . . . . . . . . . . 7 7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 7 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 9. Security Considerations . . . . . . . . . . . . . . . . . . . 8 9.1. Trust Relationship . . . . . . . . . . . . . . . . . . . 8 9.2. Untrusted Peers . . . . . . . . . . . . . . . . . . . . . 8 9.2.1. Ingress from Untrusted Peers . . . . . . . . . 8 9.2.2. Egress to Untrusted Peers . . . . . . . . . . 9 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 11. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 12.1. Normative References . . . . . . . . . . . . . . . . . . 13 12.2. Informative References . . . . . . . . . . . . . . . . . 14 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 1. Overview In certain network configurations, several entities have found it useful to decouple the identity of the caller (what is normally thought of as "Caller ID") from the identity/number used for billing purposes. This document records the current usage of 'P-Charge- Info', a private SIP header field, to provide simple billing information and requests the registration of this header field with IANA as required by Section 4.2 of [RFC5727]. York & Asveren Expires September 6, 2018 [Page 2] Internet-Draft P-Charge-Info, a SIP Private Header Field March 2018 In a typical configuration, the identity of the caller, commonly referred to as "Caller ID" by end users, is derived from one of the following SIP header fields: o P-Asserted-Identity o From (in the absence of P-Asserted-Identity) (NOTE: Some service providers have also used the "Remote-Party-ID" header field but this was replaced by P-Asserted-Identity in [RFC3325].) This identity/number is typically presented to the receiving user agent (UA) where it is usually displayed for the end user. It is also typically used for billing purposes by the network entities involved in carrying the session. However, in some network configurations the "Caller ID" presented to the receiving UA may be different from the number to be used for billing purposes. In this case, there exists a need for a way to pass an additional billing identifier that can be used between network entities in order to correctly bill for services. Several carriers and equipment providers have been using the "P- Charge-Info" header field since at least 2007 as a simple mechanism to exchange this billing identifier. 2. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. 3. Purpose of this Document This document has been prepared to document the existing deployed usage of the P-Charge-Info header field and to comply with Section 4 of [RFC5727] to register this header field with IANA. This document was originally prepared to comply with sections 4.1 and 4.2 of the now obsolete RFC 3427. It is noted that RFC 5727 specifically deprecates new usage of "P-" header fields, but P-Charge-Info has been in deployment since prior to 2007 and pre-dates RFC 5727. Given this, the authors request that P-Charge-Info be admitted as a "grandfathered case" per Section 4 of RFC 5727. York & Asveren Expires September 6, 2018 [Page 3] Internet-Draft P-Charge-Info, a SIP Private Header Field March 2018 4. Use Cases The simplest use case for P-Charge-Info is an enterprise environment where each SIP endpoint has a direct number that is passed by the enterprise SIP proxy across to a SIP proxy at a SIP service provider who provides connectivity to the Public Switched Telephone Network (PSTN). Rather than cause the SIP service provider to have to track each individual direct number for billing purposes, the enterprise SIP proxy sends in the P-Charge-Info header field a single billing identifier that the SIP service provider uses for billing purposes. As another example, a hosted telephony provider or hosted voice application provider may have a large SIP network with customers distributed over a very large geographic area using local market PSTN numbers but with only a very few actual PSTN interconnection points. The customers may all have local phone numbers yet outgoing calls are actually routed across a SIP network and out specific PSTN gateways or across specific SIP connections to other SIP service providers. The hosted provider may want to pass a billing identifier to its SIP service providers either for the purpose of simplicity in billing or to obtain better rates from the SIP service providers. 5. Alternatives 5.1. P-Charging-Vector P-Charging-Vector is defined in Section 4.6 of [RFC3455] and used by the 3GPP to carry information related to the charging of a session. There are, however, some differences in the semantics associated with P-Charging-Vector and P-Charge-Info. P-Charging-Vector is mainly used to carry information for correlation of multiple charging records generated for a single session. On the other hand, P-Charge- Info is used to convey information about the party to be billed for a call. Furthermore, P-Charging-Vector has a mandatory icid-value parameter which is a globally unique value to identify the session for which the charging information is generated. Such a globally- unique identifier is not necessary when carrying information about the user to be billed when it is attached to the corresponding session-related signaling. 5.2. P-DCS-Billing-Info P-DCS-Billing-Info is defined in Section 7 of [RFC3603] and used for passing billing information between trusted entities in the PacketCable Distributed Call Signaling Architecture. For many billing situations, particularly the very large-scale residential telephone networks for which this header field is designed, P-DCS- York & Asveren Expires September 6, 2018 [Page 4] Internet-Draft P-Charge-Info, a SIP Private Header Field March 2018 Billing-Info is an excellent solution. However, this ability to address a range of situations adds complexity. According to RFC 3603, each use of the P-DCS-Billing-Info header field MUST include in the header field the following: o Billing-Correlation-ID, a globally unique identifier o Financial-Entity-ID o RKS-Group-ID (record keeping server) and may include a variety of additional parameters. While this may work well in many billing scenarios, there are other billing scenarios that do not need this level of complexity. In those simpler scenarios all that is needed is simply a number to use for billing. P-Charge-Info provides this simple solution for simple billing scenarios. Additionally, Section 7.3 of RFC 3603 mandates that a UA MUST create a Billing-Correlation-ID and insert this into the P-DCS-Billing-Info header field (along with the other required information) sent in the initial SIP INVITE. This again makes sense for the residential telephone service environment for which this header field is designed. In contrast, P-Charge-Info is designed to be used among proxies and not to be used at all by normal user agents. (P-Charge- Info may, though, by used by user agents associated with PSTN gateways.) 5.3. P-Asserted-Identity Early reviewers of this document asked why the "P-Asserted-Identity" header field documented in [RFC3325] could not be used. As mentioned in the use case example above, P-Asserted-Identity is used to indicate the identity of the calling party. However, in this instance, the requirement is to provide an additional identity of the SIP-to-PSTN interconnect point. It would be typical to find both P-Asserted-Identity and P-Charge- Info used in a SIP exchange. P-Asserted-Identity would be used to provide the caller identity which would be displayed to the end user as "Caller ID" while P-Charge-Info would provide the billing identifier used for the billing associated with the call. York & Asveren Expires September 6, 2018 [Page 5] Internet-Draft P-Charge-Info, a SIP Private Header Field March 2018 6. The P-Charge-Info Header 6.1. Applicability Statement for the P-Charge-Info header field The P-Charge-Info header field is applicable within a single private administrative domain or between different administrative domains where there is a trust relationship between the domains. 6.2. Usage of the P-Charge-Info header field The P-Charge-Info header field is used to convey information about the identity of the party to be charged. The P-Charge-Info header field is typically inserted by one of the following: o the SIP proxy on the originating network; o a PSTN gateway acting as a SIP UA; or o an application server generating billing information. P-Charge-Info is to be used by the SIP entity that provides billing services for a session. This could be an entity generating billing records or an entity interacting with another enitity generating billing records. Upon receipt of an INVITE request with the P- Charge-Info header field, such an entity SHOULD use the value present in P-Charge-Info as indicating the party responsible for the charges associated with the session. 6.2.1. Procedures at the UA The P-Charge-Info header field may be inserted by PSTN gateways or application servers acting as a SIP UA. The P-Charge-Info header field is ignored by an end-user UA and should not normally be seen by such a UA. It MUST not be sent to such a UA and the UA SHOULD ignore it if it receives the header field. Similarly, a regular UA originating a SIP message SHOULD NOT insert this header field. A PSTN gateway or application server acting as a UA MAY use the content of the P-Charge-Info header field present in an INVITE request it received for billing related procedures, e.g. in a billing record or during interaction with another entity generating billing records, as the identity of the party to be charged for the session. A PSTN gateway or application server acting as a UA MAY use the content of the P-Charge-Info header field to populate information about the identity of the party to charge in another type of signaling, e.g. ISUP. York & Asveren Expires September 6, 2018 [Page 6] Internet-Draft P-Charge-Info, a SIP Private Header Field March 2018 6.2.2. Procedures at the Proxy A SIP proxy that supports this extension and receives a request, typically a SIP INVITE, without the P-Charge-Info header field MAY insert a P-Charge-Info header field. The contents of the inserted header field may be decided based on local policy or by querying an external entity to determine the identity of the party to be charged. A proxy MAY use the content of the P-Charge-Info header field present in an INVITE request it received for billing related procedures, e.g. in a billing record or during interaction with another entity generating billing records. A SIP proxy that does not support this extension will pass any received P-Charge-Info header field unmodified in compliance with RFC 3261. A proxy supporting this extension SHOULD remove the P-Charge-Info header field before sending a request to a UA that is not acting as a PSTN gateway or appropriate application server. 6.3. Example of Usage The content of the P-Charge-Info header field is typically just a SIP URI used as a billing indicator. An example could be as simple as one of: P-Charge-Info: P-Charge-Info: P-Charge-Info: P-Charge-Info: Any other applicable SIP URI could be used. 7. Formal Syntax This RFC contains the definition of one or more SIP header fields that allow choosing between addr-spec and name-addr when constructing header field values. As specified in [RFC8217], the "addr-spec" form MUST NOT be used if its value would contain a comma, semicolon, or question mark. The Private Header Field specified in this document is described in both prose and an augmented Backus-Naur Form (BNF) defined in [RFC2234]. Further, several BNF definitions are inherited from SIP York & Asveren Expires September 6, 2018 [Page 7] Internet-Draft P-Charge-Info, a SIP Private Header Field March 2018 and are not repeated here. Implementors need to be familiar with the notation and contents of [RFC3261] and [RFC2234] to understand this document. The syntax of the P-Charge-Info header field is described as follows: P-Charge-Info = "P-Charge-Info" HCOLON (name-addr / addr-spec) ; name-addr and addr-spec are specified in RFC 3261 The SIP URI contained in the name-addr/addr-spec is the billing indicator that is passed between the parties. 8. IANA Considerations This document defines a private SIP extension header field. The extension is registered as a private extension field: RFC Number: RFCXXXX [Note to IANA: Please fill in with the RFC number of this specification. Header Field Name: P-Charge-Info Compact Form: none 9. Security Considerations 9.1. Trust Relationship Given that the information contained in the P-Charge-Info header field will be used for billing purposes, the proxies and other SIP entities that share this information MUST have a trust relationship. If an untrusted entity were inserted between the trusted entities, it could potentially interfere with the billing records for the call. If the SIP connections are not made over a private network, a mechanism for securing the confidentiality and integrity of the SIP connection SHOULD be used to protect the information. One such mechanism could be TLS-encryption of the SIP signaling stream. 9.2. Untrusted Peers 9.2.1. Ingress from Untrusted Peers If the P-Charge-Info header field was accepted by a SIP entity from an untrusted peer, there is the potential for fraud if the untrusted entity sent incorrect information, either inadvertently or maliciously. York & Asveren Expires September 6, 2018 [Page 8] Internet-Draft P-Charge-Info, a SIP Private Header Field March 2018 Therefore a SIP entity MUST remove and ignore the P-Charge-Info header field when it is received from an untrusted entity. 9.2.2. Egress to Untrusted Peers If the P-Charge-Info header field was sent by a SIP entity to an untrusted peer, there is the potential exposure of network information that is internal to a trust domain. For instance, the untrusted entity may learn the identities of public SIP proxies used within the trust domain which could then potentially be directly attacked. If an implementation does not strip P-Charge-Info from the message where specified in this document, it introduces serious privacy risks. Examples include revealing third-party billing relationships that might be sensitive, as well as unmasking the identity of callers who wish to remain anonymous. Depending on circumstances, the latter case may result in unwanted harassment and even physical harm to the calling party. Therefore a SIP entity MUST remove the P-Charge-Info header field when it is sent to an untrusted entity. 10. Acknowledgements The authors thank the following people for their comments: Keith Drage, Miguel Garcia, Sumit Garg, John Haluska, Juha Heinanen, Christer Holmberg, Paul Kyzivat, Adam Roach, Jonathan Rosenberg, Henning Schulzrinne, Tom Taylor and Glen Wang. 11. Changes NOTE TO RFC EDITOR - Please remove this "Changes" section prior to publication. Thank you. Revision -06 fixes one nit and updates the Requirements Language to comply with BCP 14 / RFC 8174. Revision -05 fixed a few typos and had other editorial changes. Revision -04 removes the PASSporT and RFC 8224/8225 references (inserted in Revision -03), as it was decided to capture that usage in a separate draft. Revision -03 incorporates feedback from the expert review by Adam Roach, including: o changing all references to "header" to be "header field"; York & Asveren Expires September 6, 2018 [Page 9] Internet-Draft P-Charge-Info, a SIP Private Header Field March 2018 o the addition of references to RFCs 8224 and 8225 related to STIR; o a reference to RFC 8217 in the formal syntax; and o multiple editorial and proofreading updates. Revision -02 incorporates a range of feedback provided by Henning Schulzrinne. Revision -01 is a refresh as -00 expired. The affiliation of Tolga Asveren was changed to Ribbon Communications. Revision -00 strips out the NPI and NOA parameters to focus only on the usage in a pure SIP-to-SIP environment. Multiple editing changes were made for readability. NAME CHANGE - The document is now "draft-york-p-charge-info" to reflect the fact that the publishing route for the draft is being determined. Revision -06 updates the text for 2017 and changes Dan York's affiliation to "Individual". Revision -05 is a refresh as -04 expired. Several small tweaks were also made to narrative text. Revision -04 is purely a refresh as -03 expired. Revision -03 is purely a refresh as -02 expired. Revision -02 is purely a refresh as -01 expired. My hope is to move this document forward soon to put closure on it. Revision -01 is purely a refresh as -00 expired. Only a few minor tweaks to this "Changes" section of the document. Revision -00 is the initial release of "draft-york-dispatch-p-charge- info" and is identical to "draft-york-sipping-p-charge-info-15" except for changes to wording to reflect the change to the DISPATCH working group. The "organization" name for Dan York was also changed from blank to "DisTel Research" to remove the confusion that it looked like he was also employed by Sonus Networks. NAME CHANGE - The document is now "draft-york-dispatch-p-charge-info" to reflect the fact that the SIPPING Working Group no longer exists. Revision -15 simply fixes a wording error in the abstract in the previous revision. This will also be the last version of 'draft- York & Asveren Expires September 6, 2018 [Page 10] Internet-Draft P-Charge-Info, a SIP Private Header Field March 2018 york-sipping-p-charge-info'. The next version will be 'draft-york- dispatch-p-charge-info'. Revision -14 incorporates the following changes: o Two examples were updated to include a "+1" at the beginning of the SIP URI. o An example was changed to use "example.net" to be compliant with RFC 2606. o Dan York's organization was updated to "Individual" (from empty) to indicate that his involvement with this draft is purely as an individual with no connection to his employer. o The length of time the header has been used in the Introduction was changed to 7 years, to reflect the first usage around 2005. o A note was added to the abstract indicating that this is expected to be the last version using the name 'draft-york-sipping-p- charge-info'. o Informative references were added to RFC 3261 and RFC 2234 to address missing references in the text. o Numerous other tweaks to the text for readability. Revision -13 has no changes to content and was issued as -12 expired. Discussions are under way coming out of IETF 83 on a plan to move this draft forward. As the SIPPING working group no longer exists, the draft name needs to change and there are a couple of other required changes. Revision -12 included the following modifications based on feedback from John Haluska and Glen Wang: o Modification of Appendix B to reflect ANSI T1.113 values. Revision -11 represents a fairly significant revision responding to a solid review by Paul Kyzivat and providing additional explanation. A major shift was the move to using decimal values for the npi-value parameter versus the text values of previous drafts. Changes include: o ABNF definition updated to indicate that npi is now a number vs text. York & Asveren Expires September 6, 2018 [Page 11] Internet-Draft P-Charge-Info, a SIP Private Header Field March 2018 o The "npi" and "noa" acronyms were expanded and stated near the formal syntax definition. o New section created explicitly mentioning the optional parameters. o Example of optional parameters updated to have npi use a number vs text. o Appendix B added to give examples of NOA parameter. o Overview text updated to indicate that P-Charge-Info was been in use now for over 5 years (given that the draft has been in development for 3 years). o Several small fixes for readability. Revision -10 included the following modifications: o Formal ABNF definition updated. o In formal syntax, semicolons added to npi-param and noa-param definitions. o npi-param changed to a 'gen-value' to use digits vs text. Values npi-param are shown in Appendix A. o Corrected example to show proper use of parameters. o Updated references to RFC 3427 and RFC 3968 to reference RFC 5727. Revision -09 included the following modifications: o Re-submitted with only a date change. Discussions are ongoing to finalize this draft and submit it for expert review. Revision -08 included the following modifications: o The ABNF for the "npi-value" was modified to conform to the sequence of possible values stated in ANSI T1.113. o An Appendix A was created listing the values from ANSI T1.113. Revision -07 was updated to the "trust200902" IPR statement and added references to RFC 3968. At this point all comments have been incorporated and publication will be requested. Revision -06 had only a minor correction to the second usage example. The IPR statement was also updated to comply with RFC 5378. York & Asveren Expires September 6, 2018 [Page 12] Internet-Draft P-Charge-Info, a SIP Private Header Field March 2018 Revision -05 included the following modifications: o The usage of P-Charge-Info for carrying the ISUP Charge Number parameter was formally incorporated into the draft. Previous revisions had mentioned it as a possible use case but had not really explicitly included it. o The examples/use cases section was expanded to include further examples of where P-Charge-Info may be used. o The original use case which discussed inter/intra-state billing practices was changed as the geographical references were clouding the more fundamental issue. o The "UNKNOWN" value was added to the ABNF for the "npi-value" parameter as that was identified as missing but required for ISUP interworking. o The optional "Nature of Address" parameter was added to support interworking with the ISUP Charge Number. Revision -04 corrected a major error in the example where the parameter was placed inside the angle brackets. The P-DCS-Billing- Info header was also added as an alternative and a few minor edits were made. 12. References 12.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ RFC2119, March 1997, . [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. [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, . York & Asveren Expires September 6, 2018 [Page 13] Internet-Draft P-Charge-Info, a SIP Private Header Field March 2018 12.2. Informative References [RFC2234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 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. [RFC3325] Jennings, C., Peterson, J., and M. Watson, "Private Extensions to the Session Initiation Protocol (SIP) for Asserted Identity within Trusted Networks", RFC 3325, November 2002. [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, January 2003. [RFC3603] Marshall, W. and F. Andreasen, "Private Session Initiation Protocol (SIP) Proxy-to-Proxy Extensions for Supporting the PacketCable Distributed Call Signaling Architecture", RFC 3603, October 2003. [RFC8217] Sparks, R., "Clarifications for When to Use the name-addr Production in SIP Messages", RFC 8217, DOI 10.17487/ RFC8217, August 2017, . Authors' Addresses Dan York Individual Keene, NH USA Email: dyork@lodestar2.com Tolga Asveren Ribbon Communications NJ USA Email: tasveren@rbbn.com York & Asveren Expires September 6, 2018 [Page 14]