<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc3326 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3326.xml">
]>
<?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-07"
     ipr="trust200902" 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 R&eacute;publique</street>

          <code>92320</code>

          <city>Ch&acirc;tillon</city>

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

        <phone/>

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

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

      <address>
        <postal>
          <street/>

          <city/>

          <region>TX</region>

          <code/>

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

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

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

    <keyword>Cause</keyword>

    <abstract>
      <t>RFC 4458 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 specification 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 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"/>. 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"/>This document also answers a need expressed by
      the 3rd-Generation Partnership Project (3GPP) <xref
      target="TS.3GPP.24.229"/>. </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="2"/>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="2"/>The following value for this URI parameter is added to
      the existing ones: <vspace blankLines="2"/></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.</t>

        <t>When a proxy inserts a URI containing the "cause" URI parameter
        defined in [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 <xref target="application"/>.</t>

        <t>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 <xref target="example"/>.</t>

        <t>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 anchor="application"
               title="Handling and Processing the Service Number Translation &quot;cause&quot; URI parameter value">
        <t>At the Application Server: <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></t>

        <t>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.</t>

        <t>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></t>

        <t>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, the UAS
            might find the service access number before translation in the To
            header field only if the To header field has not been changed when
            the request was retargeted.</t>
          </list></t>
      </section>
    </section>

    <section anchor="example" 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 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>
  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>
  </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="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="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>

      &rfc3326;

      <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</organization>
          </author>

          <date day="21" month="December" year="2014"/>
        </front>

        <seriesInfo name="3GPP TS" value="24.229 13.0.0"/>

        <format target="http://www.3gpp.org/ftp/Specs/html-info/24229.htm"
                type="HTML"/>
      </reference>
    </references>

    <references title="Informative References">
      <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>

      <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="ITU-T_Q.1600">
        <front>
          <title>Signalling System No. 7 &minus; Interaction between ISUP and
          INAP</title>

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

          <date month="September" year="1997"/>
        </front>
      </reference>

      <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>
    </references>
  </back>
</rfc>
