<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="info"
     docName="draft-mohali-dispatch-cause-for-service-number-10"
     ipr="trust200902" obsoletes="" submissionType="independent"
     updates="4458">
  <front>
    <title abbrev="Cause for service number translation">Session Initiation
    Protocol (SIP) Cause URI parameter for Service Number translation</title>

    <author fullname="Marianne Mohali" initials="M" surname="Mohali">
      <organization>Orange</organization>

      <address>
        <postal>
          <street>44 Avenue de la Republique</street>

          <code>92320</code>

          <city>Chatillon</city>

          <country>France</country>
        </postal>

        <email>marianne.mohali@orange.com</email>
      </address>
    </author>

    <author fullname="Mary Barnes" initials="M" surname="Barnes">
      <organization>MLB@Realtime Communications</organization>

      <address>
        <postal>
          <street/>

          <region>TX</region>

          <country>US</country>
        </postal>

        <email>mary.ietf.barnes@gmail.com</email>
      </address>
    </author>

    <date day="08" month="December" year="2016"/>

    <keyword>Cause</keyword>

    <abstract>
      <t>RFC4458 defines a "cause" URI parameter, which may
      appear in the Request-URI of a SIP request, that is used to indicate a
      reason why the request arrived to the User Agent Server (UAS) receiving
      the message.<vspace/>This document creates a new predefined value for 
	  the "cause" URI parameter to cover service number translation for cases 
	  of retargeting due to specific service action leading to the translation 
	  of a called service access number.<vspace/>This document also provides a
	  guidance for using the "cause" URI parameter within the History-Info 
	  header field because it was missing in RFC4458 whereas the combination of
	  both is mandatory in some IP networks implementations.
	  <vspace blankLines="1"/>This document updates RFC4458.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction, Terminology and Overview">
      <t><vspace blankLines="1"/><xref target="RFC4458"/> defines a mechanism
      to identify retargeting due to call forwarding supplementary services.
      The "cause" URI parameter in the target URI identifies the reason for
      retargeting and has defined values equivalent to the TDM (Time Division
      Multiplexing) Redirecting Reasons <xref target="ITU-T_Q.763"/>. The
      concept of "retargeting" is defined in <xref target="RFC7044"/>.<vspace
      blankLines="1"/>In the Public Switched Telephone Network (PSTN)/
      Integrated Services Digital Network (ISDN), there is another kind of
      retargeting introduced by the Intelligent Network (IN) services based on
      a translation of the called number as mentioned in <xref
      target="ITU-T_Q.1214"/>.<vspace/>Indeed, IN aims to ease the
      introduction of new services (i.e. Universal Personal Telecommunication
      (UPT), Virtual Private Network (VPN), Freephone, etc.) based on greater
      flexibility and new capabilities as described in <xref
      target="ITU-T_I.312_Q.1201"/>. For these IN services, ISUP introduced
      the "called IN number" and the "original called IN number" parameters to
      capture the information of the requested service access number prior its
      translation <xref target="ITU-T_Q.763"/>.<vspace blankLines="1"/>The
      term "service access number" is used in this specification to refer to
      the dialable number by which a specific service is reached. This special
      number is not a globally routable number and therefore needs to be
      translated into a routable SIP or tel URI to process the session
      establishment. <vspace blankLines="1"/>This specification proposes a
      solution to allow the identification of well-known services such as
      premium or toll free services that perform service access number
      translation, and to enable interworking with SIP signaling with the ISUP
      Called IN number and Original Called IN numbers parameters.<vspace
      blankLines="1"/>The mechanism will allow a SIP network to insert and
      convey the service access number requested prior its translation to the
      final destination. <vspace blankLines="1"/>In order to provide full call 
	  forwarding or access number translation services, usage of the "cause" URI
	  parameter is only relevant within the History-Info header field defined is
	  <xref target="RFC7044"/>. Because this relation has not been described in 
	  <xref target="RFC4458"/>, this document provides a guidance for using the 
	  "cause" URI parameter in conjunction with the History-Info header field.
	  <vspace blankLines="1"/>This document also answers a need expressed by the 
	  3rd-Generation Partnership Project (3GPP) <xref target="TS.3GPP.24.229"/>.
	  <vspace blankLines="1"/>This document should have a Standard Track status 
	  as it formally extends the SIP protocol but because it updates RFC4458 that 
	  has been standardized with the Informational status, it has been decided to 
	  keep the Informational status to be consistent with the former document.</t>
    </section>

    <section title="Solution">
      <t>A new value for the "cause" URI parameter of the 'sip:' or 'sips:'
      URI schemes is defined. This value may be used in a 'sip:' or 'sips:'
      URI inserted in the Request-URI and in the History-Info header field
      <xref target="RFC7044"/> when the URI is issued from a retargeting or an
      service access number translation by a specific service similar to
      PSTN/ISDN IN services that is not a call forwarding service.<vspace/>As
      defined in <xref target="RFC4458"/>, the cause URI parameter must be
      encoded in the new target URI when generated by the service. <vspace
      blankLines="1"/>The ABNF grammar <xref target="RFC5234"/> for the
      cause-param and target-param parameters is summarized below as it has
      been subject to Errata [ID: 1409] in <xref target="RFC4458"/>. The
      Status-Code is defined in <xref target="RFC3261"/>. <vspace
      blankLines="1"/>target-param = "target=" pvalue <vspace
      blankLines="1"/>cause-param = "cause=" Status-Code <vspace
      blankLines="1"/>The following value for this URI parameter is added to
      the existing ones: <vspace blankLines="1"/></t>

      <figure>
        <artwork>                +---------------------------------+-------+
                |         Cause                   | Value |
                +---------------------------------+-------+
                | Service number translation      | 380   |
                +---------------------------------+-------+</artwork>
      </figure>

      <section title="Interaction with Request History Information">
        <t>The History-Info header field defined in <xref target="RFC7044"/>
        specifies a means of providing the UAS and UAC with information about
        the retargeting of a request. This information includes the initial
        Request-URI and any retargeted URIs. This information is placed in
        History-Info headers as the request is retargeted and, upon reaching
        the UAS, is returned in certain responses. The History-Info header
        field enables many enhanced services by providing the information as
        to how and why a SIP request arrives at a specific application or user
        and to keep this information throughout the signaling path even when
        successive applications are involved.<vspace blankLines="1"/>When a
        proxy inserts a URI containing the "cause" URI parameter defined in
        <xref target="RFC4458"/> into the Request-URI of a forwarded request,
        per <xref target="RFC7044"/>, the proxy must also copy this new
        Request-URI within a History-Info header field entry into the
        forwarded request, and so the URI in that entry includes the "cause"
        URI parameter. Therefore, even if the Request-URI is replaced as a
        result of rerouting by a downstream proxy, the History-Info header
        field will still contain these parameters, which can be of use to the
        UAS. Note that if a proxy does not support generation of the
        History-Info header field or if a downstream proxy removes the
        History-Info header fields, an application will only have access to
        the "cause" URI parameter if the request is not subsequently
        retargeted (i.e., it will be contained only in the Request-URI in the
        incoming request). The implications of this are further discussed in
        section Section 2.2.<vspace blankLines="1"/>In order to be able to
        filter specific entries among the history information, header field
        parameters have been defined in <xref target="RFC7044"/>. In
        particular, the "mp" and "rc" header field parameters having the
        following definitions: The "mp" header field parameter is added when
        the new target was determined based on a mapping to a user other than
        the target user associated with the Request-URI being retargeted. This
        allows identifying retargets that are the result of a decision made by
        a particular type of application or that an initial request has been
        retargeted as a result of an application decision in a general manner.
        The "rc" header field parameter is added when the new target
        represents a change in Request-URI, while the target user remains the
        same. These header field parameters can be used in conjunction with
        the new "cause" URI parameter for certain applications, an example of
        which is provided in section Section 3.<vspace blankLines="1"/>When
        using the History-Info header field in conjunction with the "cause"
        URI parameter in a Request-URI, it is important to consider that the
        "cause" URI parameter is not the same parameter as the "cause" header
        field parameter included in the Reason header <xref
        target="RFC3326"/>. The "cause" header field parameter of the Reason
        header should be added to a History-Info entry only when the
        retargeting is due to a received SIP response.</t>
      </section>

      <section title="Handling and Processing the Service Number Translation &quot;cause&quot; URI parameter value">
        <t>At the Application Server: <vspace/><list>
            <t>When an application receiving a request that is addressed to a
            service access number changes the Request-URI into a routable
            number it should insert within this new Request-URI a "cause" URI
            parameter value set to 380. Following the process described in
            <xref target="RFC7044"/>, the application must add a new
            History-Info header field entry including the new Request-URI
            value including the "cause" URI parameter. It is also possible for
            an application to add a "target" URI parameter as defined in <xref
            target="RFC4458"/> with the initial value of the Request-URI
            received by the application.</t>
          </list><vspace blankLines="1"/>Note that if the new Request-URI is
        further replaced by a downstream proxy for any reason and if the
        History-Info header field is not supported, the information of the
        service access number initially requested would be lost. Thus, it is
        strongly recommended to support the History-Info header field all
        along the signaling path. <vspace blankLines="1"/>At the UAS:
        <vspace/><list>
            <t>When the UAS receiving the request wants to retrieve the
            service access number by which it has been reached, first it
            should look for the "cause" URI parameter value 380 in the
            History-Info header field. This History-Info entry should also
            contain an "mp" or "rc" header field parameter and then the UAS
            can find the requested service number in the History-Info entry
            having an index parameter value that match this "mp" or "rc"
            header field parameter value. If for any reason, there is no "mp"
            or "rc" header field parameter in the identified History-Info
            entry, the UAS can find the requested service number in the
            preceding History-Info entry.</t>
          </list><vspace blankLines="1"/>If the History-Info header is not
        supported or has been removed by a proxy for any reason, the UAS might
        be able to find the requested service access number before translation
        in either of the following ways, but there is no guarantee:<list
            hangIndent="0" style="symbols">
            <t>If the UAS is the direct target of the request coming from the
            application, the UAS ought to be able to find the service access
            number in the "target" URI parameter of the Request-URI if there
            is also a "cause" URI parameter set to 380 in this
            Request-URI.</t>

            <t>If there is no "cause" URI parameter set to 380 in the Request-URI
			and there is no History-Info header field, some existing 
			implementations use to find the service access number before 
			translation in the To header field of the INVITE request. While this 
			approach may work under specific conditions, it may not be reliable 
			in the general case.</t>
          </list></t>
      </section>
    </section>

    <section title="Example">
      <t>In this section an example is provided to illustrate the application
      of the new cause-param value.<vspace blankLines="1"/>In this example,
      Alice calls her bank customer care. John is the person at the call
      center that answers the call. John is in a call center that manages
      several toll-free services and he needs to know for which service Alice
      is calling to provide the appropriate welcome speech.<vspace
      blankLines="1"/><figure>
          <artwork>     Alice      Toll-Free Service   Atlanta.com          John
      |                |              |                   |
      |    INVITE F1   |              |                   |
      |---------------&gt;|   INVITE F2  |                   |
      |                |-------------&gt;|                   |
      |                |              |  INVITE F3        |
      |                |              |------------------&gt;|

                 * Rest of flow not shown *

      Figure 1: Service Access Number Translation Example

Message Details

   F1 INVITE 192.0.2.1 -&gt; Toll-Free Service

      In the initial request, the Request-URI contains the Toll-Free 
      number dialed by Alice.

      INVITE sip:+18005551002@example.com;user=phone  SIP/2.0
      Via: SIP/2.0/TCP 192.0.2.1:5060;branch=z9hG4bK74bf
      From: Alice &lt;sip:+15551001@example.com;user=phone&gt;;tag=9fxced76sl
      To: &lt;sip:+18005551002@example.com;user=phone&gt;
      Call-ID: c3x842276298220188511
      CSeq: 1 INVITE
      Max-Forwards: 70
      Contact: &lt;sip:alice@192.0.2.1&gt;
      Content-Type: application/sdp
      Content-Length: &lt;appropriate value&gt;

      [SDP Not Shown]


   F2 INVITE Toll-Free Service -&gt; Atlanta.com

      The Toll-Free application receives the request and translates
      the service number into a routable number toward the call center.
      The Request-URI is changed and, in the new Request-URI, the
      "cause" URI parameter set to 380 is added. As there was no
      History-Info header field in the received request,
      the application creates a History-Info header with two entries:
      one for the received Request-URI and one for the new Request-URI.

      INVITE sip:+15555551002@atlanta.com;cause=380;user=phone SIP/2.0
      Via: SIP/2.0/TCP 192.0.2.4:5060;branch=z9hG4bK-ik8
      Via: SIP/2.0/TCP 192.0.2.1:5060;branch=z9hG4bK74bf
      From: Alice &lt;sip:+15551001@example.com;user=phone&gt;;tag=9fxced76sl
      To: &lt;sip:+18005551002@example.com;user=phone&gt;
      Call-ID: c3x842276298220188511
      CSeq: 1 INVITE
      Max-Forwards: 69
      Supported: histinfo
      History-Info: &lt;sip:+18005551002@example.com;user=phone&gt;;index=1
      History-Info: &lt;sip:+15555551002@atlanta.com;cause=380;user=phone&gt;;
                    index=1.1;mp=1
      Contact: &lt;sip:alice@192.0.2.1&gt;
      Content-Type: application/sdp
      Content-Length: &lt;appropriate value&gt;

      [SDP Not Shown]


   F3 INVITE Atlanta.com -&gt; John

      The call center proxy routes the received request to John's
      IP address by changing the Request-URI. When changing the
      Request-URI, the proxy adds a new entry in the History-Info
      header field.

      INVITE sip:john@198.51.100.2 SIP/2.0
      Via: SIP/2.0/TCP 198.51.100.1:5060;branch=z9hG4bKpxk7g
      Via: SIP/2.0/TCP 192.0.2.4:5060;branch=z9hG4bK-ik8
      Via: SIP/2.0/TCP 192.0.2.1:5060;branch=z9hG4bK74bf
      From: Alice &lt;sip:+15551001@example.com;user=phone&gt;;tag=9fxced76sl
      To: &lt;sip:+18005551002@example.com;user=phone&gt;
      Call-ID: c3x842276298220188511
      CSeq: 1 INVITE
      Max-Forwards: 68
      Supported: histinfo
      History-Info: &lt;sip:+18005551002@example.com;user=phone&gt;;index=1
      History-Info: &lt;sip:+15555551002@atlanta.com;cause=380;user=phone&gt;;
                    index=1.1;mp=1
      History-Info: &lt;sip:john@198.51.100.2&gt;;index=1.1.1;rc=1.1
      Contact: &lt;sip:alice@192.0.2.1&gt;
      Content-Type: application/sdp
      Content-Length: &lt;appropriate value&gt;

      [SDP Not Shown]</artwork>
        </figure></t>
    </section>

    <section title="IANA Considerations">
      <t><xref target="RFC4458"/> defines a "cause" parameter specified as
      having predefined values. This document defines a new value for the
      "cause" parameter: 380.<vspace/>This document requests IANA to modify 
	  the existing row for the "cause" parameter to add a reference to this 
	  document under the "SIP/SIPS URI Parameters" subregistry within the 
	  "Session Initiation Protocols" registry:<vspace blankLines="1"/></t>

      <figure>
        <artwork align="center">Parameter Name    Predefined Values           References 
--------------    -----------------    ------------------------- 
   cause               Yes            [RFC4458][TBD:thisdocument] </artwork>
      </figure>
    </section>

    <section title="Security Considerations">
      <t>The security considerations in <xref target="RFC4458"/> apply.<vspace
      blankLines="1"/>A privacy service that performs the "Privacy: header"
      Service <xref target="RFC3323"/> must remove the cause URI parameter
      from the URI. Privacy of the parameters, when they form part of a URI
      within the History-Info header field, is covered in <xref
      target="RFC7044"/>.</t>
    </section>

    <section title="Acknowledgements">
      <t>The authors wish to thank the 3GPP community for providing guidance,
      input, and comments on the document. Thanks also to Paul Kyzivat, Dale
      Worley, Ben Campbell and to Jean Mahoney for her careful review of the
      document.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <reference anchor="RFC3261">
        <front>
          <title>SIP: Session Initiation Protocol</title>

          <author fullname="Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler">
            <organization/>
          </author>

          <date day="" month="June" year="2002"/>
        </front>

        <seriesInfo name="RFC" value="3261"/>
      </reference>

      <reference anchor="RFC3323">
        <front>
          <title>A Privacy Mechanism for the Session Initiation Protocol
          (SIP)</title>

          <author fullname=" Peterson, J.">
            <organization/>
          </author>

          <date month="November" year="2002"/>
        </front>

        <seriesInfo name="RFC" value="3323"/>
      </reference>

      <reference anchor="RFC3326">
        <front>
          <title>The Reason Header Field for the Session Initiation Protocol
          (SIP)</title>

          <author fullname="Schulzrinne, H., Oran, D., and G. Camarillo">
            <organization/>
          </author>

          <date month="December" year="2002"/>
        </front>

        <seriesInfo name="RFC" value="3326"/>
      </reference>

      <reference anchor="RFC7044">
        <front>
          <title>An Extension to the Session Initiation Protocol (SIP) for
          Request History Information</title>

          <author fullname="Barnes, M." role="editor"/>

          <date month="February" year="2014"/>
        </front>

        <seriesInfo name="RFC" value="7044"/>
      </reference>

      <reference anchor="TS.3GPP.24.229">
        <front>
          <title>IP multimedia call control protocol based on Session
          Initiation Protocol (SIP) and Session Description Protocol
          (SDP);Stage 3</title>

          <author>
            <organization>3GPP TS 24.229 13.0.0</organization>
          </author>

          <date month="December" year="2014"/>
        </front>
      </reference>
    </references>

    <references title="Informative References">
      <reference anchor="ITU-T_I.312_Q.1201">
        <front>
          <title>Principles of Intelligent Network Architecture</title>

          <author>
            <organization>ITU-T Recommendation I312/Q.1201</organization>
          </author>

          <date month="October" year="1992"/>
        </front>
      </reference>

      <reference anchor="ITU-T_Q.1214">
        <front>
          <title>Distributed Functional Plane For Intellignet Network
          CS-1</title>

          <author>
            <organization>ITU-T Recommendation Q.1214</organization>
          </author>

          <date month="October" year="1995"/>
        </front>
      </reference>

      <reference anchor="ITU-T_Q.763">
        <front>
          <title>Signalling System No. 7 &minus; ISDN User Part formats and
          codes.</title>

          <author>
            <organization>ITU-T Recommendation Q.763</organization>
          </author>

          <date month="December" year="1999"/>
        </front>
      </reference>

      <reference anchor="RFC4458">
        <front>
          <title>Session Initiation Protocol (SIP) URIs for Applications such
          as Voicemail and Interactive Voice Response (IVR)</title>

          <author fullname="Jennings, C., Audet, F., Elwell, J.">
            <organization/>
          </author>

          <date month="April" year="2006"/>
        </front>

        <seriesInfo name="RFC" value="4458"/>
      </reference>

      <reference anchor="RFC5234">
        <front>
          <title>Augmented BNF for Syntax Specifications: ABNF</title>

          <author fullname="Crocker, D. and P. Overell">
            <organization/>
          </author>

          <date month="January" year="2008"/>
        </front>

        <seriesInfo name="RFC" value="5234"/>
      </reference>
    </references>
  </back>
</rfc>
