<?xml version="1.0" encoding="US-ASCII"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd"[]>
<?rfc toc="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc sortrefs="no" ?>
<rfc number="7976" ipr="trust200902" category="info" consensus="yes" updates="7315" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="Updates to P-Header Usage">Updates to Private Header (P-Header)
    Extension Usage
    in&nbsp;Session&nbsp;Initiation&nbsp;Protocol&nbsp;(SIP)&nbsp;Requests and
    Responses</title>
    <author fullname="Christer Holmberg" initials="C.H." surname="Holmberg">
        <organization abbrev="Ericsson">Ericsson</organization>
        <address>
            <postal>
                <street>Hirsalantie 11</street>
                <city>Jorvas</city>
                <region></region>
                <code>02420</code>
                <country>Finland</country>
            </postal>
            <email>christer.holmberg@ericsson.com</email>
        </address>
    </author>
    <author initials="N." surname="Biondic" fullname="Nevenka Biondic">
        <organization>Ericsson</organization>
        <address>
            <postal>
                <street>Krapinska 45</street>
                <code>10002</code>
                <city>Zagreb</city>
                <country>Croatia</country>
            </postal>
            <email>nevenka.biondic@ericsson.com</email>
        </address>
    </author>
    <author initials="G.S" surname="Salgueiro" fullname="Gonzalo Salgueiro">
        <organization abbrev="Cisco">Cisco Systems, Inc.</organization>
        <address>
			<postal>
				<street>7200-12 Kit Creek Road</street>
				<city>Research Triangle Park</city>
				<region>NC</region>
				<code>27709</code>
				<country>United States of America</country>
			</postal>
			<email>gsalguei@cisco.com</email>
		</address>
	</author>

    <date month="September" year="2016" />
    <area>Transport</area>

	<keyword>P-</keyword>
	<keyword>3GPP</keyword>
	<keyword>IMS</keyword>
    <abstract>
        <t>
            The Third Generation Partnership Project (3GPP) has identified cases where different
            SIP private header extensions referred to as "P-" header fields, and defined
            in RFC 7315, need to be included in SIP requests and responses currently not
            allowed according to RFC 7315. This document updates RFC 7315, in order to allow
            inclusion of the affected "P-" header fields in such requests and responses.
        </t>
        <t>
            This document also makes updates for RFC 7315 in order to fix misalignments that
            occurred when RFC 3455 was updated and obsoleted by RFC 7315.
        </t>
    </abstract>
</front>

<middle>
    <section title="Introduction">
        <t>
            The Third Generation Partnership Project (3GPP) has identified cases where different
            Session Initiation Protocol (SIP) <xref target="RFC3261" pageno="false" format="default"/>
            private header extensions referred to as "P-" header fields, and defined in
            <xref target="RFC7315" pageno="false" format="default"/>, need to be included in SIP
            requests and responses currently not allowed according to RFC 7315. This document updates
            RFC 7315, in order to allow inclusion of the affected "P-" header fields
            in such requests and responses.
        </t>
        <t>
            This document also makes updates for RFC 7315 in order to fix misalignments that
            occurred when RFC 3455 <xref format="default" pageno="false" target="RFC3455"/> was
            updated and obsoleted by RFC 7315.
        </t>
        <t>
            As the "P-" header fields are mainly used in (and in most cases, only defined for)
            networks defined by the 3GPP, where the updates
            defined in this document are already defined <xref target="TS.3GPP.24.229"
            pageno="false" format="default"/>, the updates are not seen to cause backward-compatibility concerns.
        </t>
    </section>

    <section title="Misalignments and 3GPP Use Cases" anchor="sec-mis">
        <section title="General">
            <t>
                RFC 7315 contains contradicting statements regarding the
                usage of SIP "P-" header fields in SIP requests and responses, which leave
                the presence of the SIP "P-" header fields in the SIP requests and responses
                open to interpretation and different implementations. Statements in
                Section 5.7 of that RFC are not aligned with the definitions and usage of the SIP "P-"
                header fields specified in Section 4. This section describes the misalignments
                that occurred when RFC 3455 was updated and obsoleted by RFC 7315, and how
                they are fixed.
            </t>
            <t>
                NOTE: In the case of the P-Called-Party-ID header field, allowing it in PUBLISH
                requests was deliberately done in RFC 7315. Therefore,
		it is not considered a misalignment.
            </t>
            <t>
                Since RFC 7315 was published, 3GPP defined new use cases that require
                the RFC to be updated. This section describes the 3GPP use cases behind
                the updates, and the updates needed to RFC 7315 in order to support the
                use cases.
            </t>
            <t>
                <xref target="sec-updates"></xref> updates RFC 7315, based on the misalignments
                and 3GPP use cases.
            </t>
        </section>
        <section title="Misalignments">
            <t>
                The following updates are needed in order to fix the misalignments between RFCs 7315 and 3455:
                <list style="symbols">
                    <t>
                        P-Associated-URI: Remove the statement that the header field can
                        appear in the SIP REGISTER method.
                    </t>
                    <t>
                        P-Called-Party-ID: Delete the statement that the P-Called-Party-ID header
                        field can appear in SIP responses. Add a statement that the P-Called-Party-ID
                        header field can appear in the SIP REFER method.
                    </t>
                    <t>
                        P-Visited-Network-ID: Delete the statement that the P-Visited-Network-ID header
                        field can appear in SIP responses. Add a statement that the P-Visited-Network-ID
                        header field cannot appear in the SIP NOTIFY, PRACK, INFO, and UPDATE methods.
                    </t>

                    <t>
                        P-Access-Network-Info: Add a statement that the P-Access-Network-Info header
                        field can appear in SIP responses.
                    </t>
                    <t>
                        P-Charging-Vector: Add a statement that the P-Charging-Vector header field can appear in SIP
                        responses. Add a statement that the P-Charging-Vector header field cannot appear in the SIP ACK
                        method.
                    </t>
                    <t>
                        P-Charging-Function-Addresses: Add a statement that the P&nbhy;Charging&nbhy;Function&nbhy;Addresses
                        header field can appear in SIP responses.
                    </t>
                </list>
            </t>
        </section>
        <section title="3GPP Use Cases">
            <section title="General">
                <t>
                    The following updates are needed in order to implement the
		    3GPP use cases:
                        <list style="symbols">
                            <t>
                                P-Access-Network-Info: Add statement that the P-Access-Network-Info
                                header field can appear in the SIP ACK method when triggered by a SIP 2xx response.
                            </t>
                            <t>
                                P-Charging-Vector: Add statement that the P-Charging-Vector header field can
                                appear in the SIP ACK method when triggered by a SIP 2xx response.
                            </t>
                        </list>
                </t>
                <t>
                    This following sections describe, for individual "P-" header
		    fields, the 3GPP use cases that
                    are the basis for the updates. The use cases are based on the procedures defined in
                    <xref target="TS.3GPP.24.229" pageno="false" format="default"/>.
                </t>
            </section>
            <section title="P-Access-Network-Info">
                <t>
                    The P-Access-Network-Info header field may contain the Network
                    Provided Location Information (NPLI). The NPLI is described in <xref target="TS.3GPP.23.228"
                    pageno="false" format="default"/>.
                </t>
                <t>
                    A proxy in possession of appropriate information about the access
                    technology might insert a P-Access-Network-Info header field with its own
                    values. Such values are identified by the string "network-provided" defined
                    in RFC 7315. Based on operator policy and/or roaming
		    agreement, the local time
                    of the visited network may be included.
                </t>
                <t>
                    The Call Data Records (CDRs) generated within the IP
		    Multimedia Subsystem (IMS) have to contain the NPLI in order to
                    guarantee correct billing. When an IMS session is modified, the NPLI also
                    needs to be stored as the location of the user at the time when the
                    session is modified may generate a charging event. In case of a session
                    modification event at IMS, the NPLI needs to be provided:
                    <list style="symbols">
                        <t>
                            when the bearer establishment is triggered, or
                        </t>
                        <t>
                            at session release when the bearer deactivation is triggered, or
                        </t>
                        <t>
                            when the bearer modification is triggered, e.g.,
			    a QoS modification for the
                            use of a newly negotiated codec.
                        </t>
                    </list>
                </t>
                <t>
                    In some scenarios, the bearer modification may be triggered by the proxy
                    upon reception of a Session Description Protocol (SDP) answer within SIP 2xx response to the SIP
                    INVITE request. In such case, the NPLI needs to be provided within the SIP
                    ACK request. However, RFC 7315 does not allow the usage of
                    the P-Access-Network-Info header field in SIP ACK request.
                </t>
                <t>
                    Upon reception of the SDP answer within SIP 2xx response on the
                    SIP INVITE request, a proxy may initiate procedures to obtain the NPLI and
                    may include the P-Access-Network-Info header field with the NPLI in the
                    SIP ACK request.
                </t>
                <t>
                    The P-Access-Network-Info header field shall not be included in SIP ACK
                    requests triggered by non-2xx responses.
                </t>
            </section>
            <section title="P-Charging-Vector">
                <t>
                    RFC 7315 defines an Inter Operator Identifier (IOI) to enable different
                    operators involved in a SIP dialog or a transaction outside a dialog to
                    identify each other by exchanging operator identification information
                    within the P-Charging-Vector header field.
                </t>
                <t>
                    In the interconnection scenarios in multi-operator environments,
                    where one or more transit operators are between the originating and
                    terminating operator, the identities of the involved transit operators are
                    represented by a transit-ioi parameter of the P&nbhy;Charging-Vector
                    header field.
                </t>
                <t>
                    Transit operators can be selected independently for each SIP method
                    and direction of request. A transit network will only have knowledge
                    of an individual SIP request, and transit network selection will be an
                    independent decision for each request and could be made based on
                    load, cost, percentage, time of day, and other factors. For this reason, it is
                    necessary that the P-Charging-Vector header field, which carries
                    the transit IOI information, is included in each SIP request and response.
                    However, RFC 7315 does not allow the usage of the P-Charging-Vector header field in the SIP ACK request.
                </t>
                <t>
                    A SIP proxy that supports this extension and receives the SIP ACK
                    request may include a P-Charging-Vector header field in the SIP
                    ACK request.
                </t>
                <t>
                    The P-Charging-Vector header field shall not be included in SIP ACK
                    requests triggered by SIP non-2xx responses.
                </t>
            </section>
        </section>
    </section>
    <section title="Updates to RFC 7315" anchor="sec-updates">
            <t>
                This section implements the update to Section 5.7 of RFC 7315, in order to
                implement the misalignment fixes and the 3GPP requirements described
                in <xref target="sec-mis"></xref>.
            </t>
<t>
Old text:
</t>
<t>
   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&nbhy;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&nbhy;Charging&nbhy;Function-Addresses
   header field can appear in all SIP methods except ACK and CANCEL.
</t>
<t>
New text:
</t>
<t>
   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 methods.
   The P-Visited-Network-ID header field can appear in all SIP methods
   except ACK, BYE, CANCEL, NOTIFY, PRACK, INFO, and UPDATE. The
   P&nbhy;Access-Network-Info header field can appear in all SIP methods
   and non-100 responses, except in CANCEL methods, CANCEL responses,
   and ACK methods triggered by non-2xx responses. The P-Charging-Vector
   header field can appear in all SIP methods and non-100 responses,
   except in CANCEL methods, CANCEL responses, and ACK methods triggered
   by non-2xx responses. The P-Charging-Function-Addresses header field
   can appear in all SIP methods and non-100 responses, 
   except in CANCEL methods, CANCEL responses, and ACK methods.
   </t>

	</section>

	<section title="Security Considerations">
		<t>



    The security considerations for these "P-" header fields are defined in
    <xref format="default" pageno="false" target="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
    <xref format="default" pageno="false" target="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). 

 This document adds the ability to include
    P-Access-Network-Info in ACK requests. As documented in <xref format="default"
    pageno="false" target="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 <xref format="default" pageno="false"
    target="RFC7315"/>.
		</t>
	</section>


</middle>

<back>
    <references title="Normative References">
		<?rfc include="reference.RFC.3261"?>
    <?rfc include="reference.RFC.7315"?>
    <reference anchor="TS.3GPP.23.228" target="http://www.3gpp.org/ftp/Specs/html-info/23228.htm">
			<front>
				<title>
          IP multimedia call control protocol based on Session Initiation Protocol (SIP)
          and Session Description Protocol (SDP); Stage 3
        </title>
				<author><organization>3GPP</organization></author>
				<date year="2016" month="June" day="22"/>
			</front>
			<seriesInfo value="23.228 13.6.0" name="3GPP TS"/>
		</reference>
    <reference anchor="TS.3GPP.24.229" target="http://www.3gpp.org/ftp/Specs/html-info/24229.htm">
			<front>
				<title>
           IP Multimedia Subsystem (IMS); Stage 2
        </title>
				<author><organization>3GPP</organization></author>
				<date year="2016" month="June" day="24"/>
			</front>
			<seriesInfo value="24.229 13.6.0" name="3GPP TS"/>
		</reference>
    </references>
    <references title="Informative References">
		<?rfc include="reference.RFC.3455"?>
	</references>
	<section title="Acknowledgments" numbered="no">
		<t>
       Thanks to Paul Kyzivat, Jean Mahoney, Ben Campbell, and Adam Roach for providing comments on the document.
		</t>
	</section>

</back>
</rfc>
