<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "http://xml.resource.org/authoring/rfc2629.dtd" [
<!ENTITY rfc3261 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3261.xml">
<!ENTITY rfc3665 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3665.xml">
<!ENTITY rfc5627 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5627.xml">
<!ENTITY rfc3087 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3087.xml">
<!ENTITY rfc4240 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4240.xml">
<!ENTITY rfc5039 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5039.xml">
<!ENTITY rfc4458 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4458.xml">
<!ENTITY rfc6117 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6117.xml">
<!ENTITY rfc4769 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4769.xml">
<!ENTITY rfc7044 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7044">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc iprnotified="no" ?>
<?rfc strict="no" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no"?>
<?rfc sortrefs="no" ?>
<?rfc rfcedstyle="yes"?>
<rfc submissionType="IETF" category="info" consensus="yes" number="7131"
     ipr="trust200902" >
  <front>
    <title abbrev="History-Info Call Flows"> Session Initiation
    Protocol (SIP) History-Info Header Call Flow Examples </title>

    <author fullname="Mary Barnes" initials="M." surname="Barnes">
      <organization></organization>

      <address>
        <postal>
          <street></street>

          <city></city>

          <region>TX</region>

          <code></code>

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

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

    <author fullname="Francois Audet" initials="F." surname="Audet">
      <organization>Skype</organization>

      <address>
        <postal>
          <street></street>

          <city></city>

          <region></region>

          <code></code>

          <country></country>
        </postal>

        <email>francois.audet@skype.net</email>
      </address>
    </author>

    <author fullname="Shida Schubert" initials="S." surname="Schubert">
      <organization>NTT</organization>

      <address>
        <postal>
          <street></street>

          <city></city>

          <region>Tokyo</region>

          <country>Japan</country>
        </postal>

        <email>shida@ntt-at.com</email>
      </address>
    </author>

    <author fullname="Hans Erik van Elburg" initials="H." surname="van Elburg">
      <organization>
        Detecon International Gmbh
        
      </organization>

      <address>
        <postal>
          <street>
            Oberkasseler str. 2
          </street>

          <city>
            Bonn
          </city>

          <region></region>

          <country>
            Germany
          </country>
        </postal>

        <email>ietf.hanserik@gmail.com</email>
      </address>
    </author>

    <author fullname="Christer Holmberg" initials="C." surname="Holmberg">
      <organization>Ericsson</organization>

      <address>
        <postal>
          <street></street>

          <city>Hirsalantie 11</city>

          <region>Jorvas</region>

          <country>Finland</country>
        </postal>

        <email>christer.holmberg@ericsson.com</email>
      </address>
    </author>

    <date month="March"  year="2014" />
    <workgroup>SIPCORE</workgroup>


<keyword>SIP, History-Info, RFC4244bis, Example, Call Flow</keyword>


    <abstract>
      <t>This document describes use cases and documents call flows that 
      require the History-Info header field to 
      capture the Request-URIs as a Session Initiation Protocol (SIP) Request is retargeted. 
      The use cases are described along with the corresponding call flow diagrams and
      messaging details. 
     </t>
    </abstract>
  </front>

  <middle>
    <section title="Overview">
      <t>Many services that use SIP require the ability
      to determine why and how the call arrived at a specific application.
      The use cases provided in this document illustrate the use of the History-Info
      header <xref target="RFC7044"/>, for example, applications and 
      common scenarios.  The optional "rc" and "mp" header field parameters defined in <xref target="RFC7044"/> 
      are required for several of the use cases. Descriptions of the example use cases, 
      call flow diagrams, and messaging details are provided.  </t>
    </section>

    <section title="Conventions and Terminology">
      <t>The term "retarget" is used as defined in <xref target="RFC7044"/>.
      The terms "location service", "redirect", and "address-of-record (AOR)" are used consistent with
      the terminology in <xref target="RFC3261"></xref>.</t>
    </section>

   
    <section anchor="callflows" title="Detailed Call Flows">
      <t>The scenarios in this section provide sample use cases for the
      History-Info header for informational purposes only. They are not
      intended to be normative.  In many cases, only the relevant messaging
      details are included in the body of the call flow.</t>


      <section anchor="fork"
               title="Sequentially Forking (History-Info in Response)">
        <t>This scenario highlights an example where the History-Info in the
        response is useful to an application or user that originated the
        request.</t>

        <t>Alice sends a call to Bob via sip:example.com. The proxy
        sip:example.com sequentially tries Bob on a SIP User Agent (UA) that has bound a
        contact with the sip:bob@example.com AOR, and then several alternate
        addresses (Office and Home) unsuccessfully before sending a response
        to Alice. The hi-entry containing the initial contact is the hi-entry just 
        prior to the first hi-entry tagged with 
        an "rc" header field parameter. 
        In this example, the Office and Home are not the same
        AOR as sip:bob@example.com, but rather different AORs that have been
        configured as alternate addresses for Bob in the proxy. In other
        words, Office and Home are not bound through SIP Registration with
				Bob's AOR. This type of arrangement is common, for example, when a
        "routing" rule to a Public Switched Telephone Network (PSTN) number is manually configured in a proxy.
        These hi-entries 
        are identified by the index contained in the hi-target-param 
        "mp" header field parameter in the hi-entries.
        </t>

        <t>This scenario illustrates that by providing the History-Info
         to Alice, the end-user, or an application at Alice could make a
         decision on how best to attempt finding Bob without sending multiple 
         requests to the same destination.  Upon receipt of the response
         containing the History-Info entries, the Request-URIs for the
         History-Info entries
         tagged with an "mp" header field parameter are extracted. Those
         Request-URIs can be compared
         to other URIs (if any) that might be attempted in order to
         establish the session
         with Bob. &nbsp;This results in avoiding the sending of another INVITE to Bob's home phone.
         Without this mechanism, Alice might well attempt to reach Bob at his office 
         phone, which would then retarget the request to Bob's home phone. When that attempt
         failed, then Alice might attempt to reach Bob directly at his home phone, unknowingly
         for a third time. </t>
       

        <figure anchor="sequentialForkingFlow" title="Example with Sequential Forking">
          <artwork><![CDATA[

  Alice   example.com            Bob     Office    Home

  |            |                  |        |        |
  | INVITE F1  |                  |        |        |
  |----------->|    INVITE F2     |        |        |
  |            |----------------->|        |        |
  | 100 Trying F3                 |        |        |
  |<-----------|  302 Move Temporarily F4  |        |
  |            |<-----------------|        |        |
  |            |   ACK F5         |        |        |
  |            |----------------->|        |        |
  |            |       INVITE F6           |        |
  |            |-------------------------->|        |
  |            |      180 Ringing F7       |        |
  |            |<--------------------------|        |
  |  180 Ringing F8                        |        |
  |<-----------|   retransmit INVITE       |        |
  |            |-------------------------->|        |
  |            |      ( timeout )          |        |
  |            |             INVITE F9              |
  |            |----------------------------------->|
  |            |           100 Trying F10           |
  |            |<-----------------------------------|
  |            |           486 Busy Here F11        |
  |            |<-----------------------------------|
  |  486 Busy Here F12                              |
  |<-----------|             ACK F13                |
  |            |----------------------------------->|
  |  ACK F14   |                                    |
  |----------->|                                    |

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
Message Details

F1 INVITE Alice -> example.com

INVITE sip:bob@example.com SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
F2 INVITE  example.com -> Bob

INVITE sip:bob@192.0.2.4 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
Record-Route: <sip:proxy.example.com;lr>
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4>;index=1.1;rc=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
F3 100 Trying example.com -> Alice

SIP/2.0 100 Trying
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
Content-Length: 0

]]></artwork>
        </figure>

        <figure>
          <artwork>
  <![CDATA[
F4 302 Moved Temporarily Bob -> example.com

SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=es43sd
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4>;index=1.1;rc=1
Contact: <sip:office@example.com>;mp=1
Content-Length: 0

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
F5 ACK example.com -> Bob

ACK sip:bob@example.com SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=es43sd
Call-ID: 12345600@example.com
CSeq: 1 ACK
Content-Length: 0

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
F6 INVITE example.com -> office

INVITE sip:office@192.0.2.5 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx4st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
Record-Route: <sip:proxy.example.com;lr>
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\
              index=1.1;rc=1
History-Info: <sip:office@example.com>;index=1.2;mp=1
History-Info: <sip:office@192.0.2.5>;index=1.2.1;rc=1.2
CSeq: 1 INVITE
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
F7 180 Ringing office -> example.com

SIP/2.0 180 Ringing
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx4st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=53rdds
Supported: histinfo
Call-ID: 12345600@example.com
Record-Route: <sip:proxy.example.com;lr>
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\
              index=1.1;rc=1
History-Info: <sip:office@example.com>;index=1.2;mp=1
History-Info: <sip:office@192.0.2.5>;index=1.2.1;rc=1.2
CSeq: 1 INVITE
Contact: Office <sip:office@192.0.2.5>
Content-Length: 0

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
F8 180 Ringing example.com -> Alice

SIP/2.0 180 Ringing
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=53rdds
Supported: histinfo
Call-ID: 12345600@example.com
Record-Route: <sip:proxy.example.com;lr>
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\
              index=1.1;rc=1
History-Info: <sip:office@example.com>;index=1.2;mp=1
History-Info: <sip:office@192.0.2.5>;index=1.2.1;rc=1.2
CSeq: 1 INVITE
Contact: Office <sip:office@192.0.2.5>
Content-Length: 0

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
F9 INVITE example.com -> home

INVITE sip:home@192.0.2.6 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx5st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
Record-Route: <sip:proxy.example.com;lr>
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\
              index=1.1;rc=1
History-Info: <sip:office@example.com?Reason=SIP%3Bcause%3D408>;\
              index=1.2;mp=1
History-Info: <sip:office@192.0.2.5?Reason=SIP%3Bcause%3D408>;\
              index=1.2.1;rc=1.2
History-Info: <sip:home@example.com>;index=1.3;mp=1
History-Info: <sip:home@192.0.2.6>;index=1.3.1;rc=1.3
CSeq: 1 INVITE
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
F10 100 Trying home -> example.com

SIP/2.0 100 Trying
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx5st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>
Call-ID: 12345600@example.com
CSeq: 1 INVITE
Content-Length: 0

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
F11 486 Busy Here home -> example.com

SIP/2.0  486 Busy Here
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx5st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=55rdds
Call-ID: 12345600@example.com
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\
              index=1.1;rc=1
History-Info: <sip:office@example.com?Reason=SIP%3Bcause%3D408>;\
              index=1.2;mp=1
History-Info: <sip:office@192.0.2.5?Reason=SIP%3Bcause%3D408>;\
              index=1.2.1;rc=1.2
History-Info: <sip:home@example.com>;index=1.3;mp=1
History-Info: <sip:home@192.0.2.6>;index=1.3.1;rc=1.3
CSeq: 1 INVITE
Content-Length: 0

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
F12 486 Busy Here example.com -> Alice

SIP/2.0  486 Busy Here
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=55rdds
Call-ID: 12345600@example.com
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\
              index=1.1;rc=1
History-Info: <sip:office@example.com?Reason=SIP%3Bcause%3D408>;\
              index=1.2;mp=1
History-Info: <sip:office@192.0.2.5?Reason=SIP%3Bcause%3D408>;\
              index=1.2.1;rc=1.2
History-Info: <sip:home@example.com>;index=1.3;mp=1
History-Info: <sip:home@192.0.2.6>;index=1.3.1;rc=1.3
CSeq: 1 INVITE
Content-Length: 0

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
F13 ACK example.com -> home

ACK sip:home@192.0.2.6 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx5st
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=55rdds
Call-ID: 12345600@example.com
CSeq: 1 ACK
Content-Length: 0

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
F14 ACK Alice -> example.com

ACK sip:bob@example.com SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=55rdds
Call-ID: 12345600@example.com
Route: <sip:proxy.example.com;lr>
CSeq: 1 ACK
Content-Length: 0

]]></artwork>
        </figure>
      </section> 
<section anchor="entirePrivacy" title="History-Info with Privacy Header Field">
        <t>   This is an example of the use of the Privacy header field with a value of
   "history" added by an intermediary.  The 
   intermediary responsible for the biloxi.example.com domain adds a
   Privacy header field with a value of "history"
   indicating that all the History-Info header field
   information is anonymized outside the biloxi.example.com domain.</t>

        <figure anchor="entirePrivacyFlow" title="Example with Privacy Header Fields">
          <artwork><![CDATA[

   Alice  atlanta.example.com  biloxi.example.com  Bob Work  Bob Home

   |             |                |                 |          |
   | INVITE F1   |                |                 |          |
   |------------>|                |                 |          |
   |             |                |                 |          |
   |             |   INVITE F2    |                 |          |
   |             |--------------->|                 |          |
   |             |                |                 |          |
   |             |                | INVITE F3       |          |
   |             |                |---------------->|          |
   |             |                |302 Move Temporarily F4     |
   |             |                |<----------------|          | 
   |             |                |    ACK F5       |          |
   |             |                |---------------->|          |
   |             |                |                 |          |
   |             |                | INVITE F6       |          |
   |             |                |--------------------------->|
   |             |                |     200 F7      |          |
   |             |                |<---------------------------|
   |             |                |                 |          |
   |             |     200 F8     |                 |          |
   |             |<---------------|                 |          |
   |             |                |                 |          |
   |     200 F9  |                |                 |          |
   |<------------|                |                 |          |
   |             |                |                 |          |
   |             |       ACK      |                 |          |  
   |---------------------------------------------------------->| 
   |             |                |                 |          |           


]]></artwork>
        </figure>
        <figure>
          <artwork><![CDATA[
Message Details

F1 INVITE Alice -> atlanta.example.com

INVITE sip:bob@biloxi.example.com;p=x SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>
Supported: histinfo
Privacy: history
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
          
          
F2 INVITE  atlanta.example.com -> biloxi.example.com

INVITE sip:bob@biloxi.example.com;p=x SIP/2.0
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 69
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>
Supported: histinfo
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>
        
        <figure>
          <artwork><![CDATA[
          
F3 INVITE  biloxi.example.com -> Bob Work

INVITE sip:bob@192.0.1.11 SIP/2.0
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKgs33
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
			   received=192.0.2.3
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 68
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>
Privacy: history
Supported: histinfo
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1
History-Info: <sip:bob@192.0.1.11>;index=1.1.1;rc=1.1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>


        <figure>
          <artwork><![CDATA[
          
F4 302 Moved Temporarily Bob Work -> biloxi.example.com

SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKgs33;\
				 received=192.0.2.102
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
			   received=192.0.2.3
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>;tag=11
Privacy: history
Supported: histinfo
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1
History-Info: <sip:bob@192.0.1.11>;index=1.1.1;rc=1.1
Contact: Bob Home <sip:bob@192.0.1.15>
Content-Type: application/sdp
Content-Length: <appropriate value>

<!-- SDP Not Shown -->

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
          
F5 ACK  biloxi.example.com -> Bob Work

ACK sip:bob@192.0.1.11 SIP/2.0
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKgs33
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
			   received=192.0.2.3
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 68
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>;tag=11
Call-ID: 12345600@atlanta.example.com
CSeq: 1 ACK
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>


        <figure>
          <artwork><![CDATA[
          
F6 INVITE  biloxi.example.com -> Bob Home

INVITE sip:bob@192.0.1.15 SIP/2.0
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKgs32
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
			   received=192.0.2.3
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 68
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>
Privacy: history
Supported: histinfo
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1
History-Info: <sip:bob@192.0.1.11?Reason=SIP%3Bcause%3D302>;\
                index=1.1.1;rc=1
History-Info: <sip:bob@192.0.1.15>;index=1.1.2
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
          
F7 200 OK  Bob -> biloxi.example.com

SIP/2.0 200 OK
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKgs32;\
			   received=192.0.2.101
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
			   received=192.0.2.3
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>;tag=33
Privacy: history
Supported: histinfo
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1
History-Info: <sip:bob@192.0.1.11?Reason=SIP%3Bcause%3D302>;\
                index=1.1.1;rc=1
History-Info: <sip:bob@192.0.1.15>;index=1.1.2;rc=1.1
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>
<figure>
          <artwork><![CDATA[
          
F8 200 OK  biloxi.example.com -> atlanta.example.com

SIP/2.0 200 OK
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
			   received=192.0.2.3
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>;tag=33
Privacy: history
Supported: histinfo
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:anonymous@anonymous.invalid>;index=1
History-Info: <sip:anonymous@anonymous.invalid>;index=1.1
History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.1;rc=1
History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.2;rc=1.1
Contact: Bob <sip:bob@192.0.1.11>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>
        
<figure>
          <artwork><![CDATA[
          
F9 200 OK  atlanta.example.com -> Alice

SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>;tag=33
Privacy: history
Supported: histinfo
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:anonymous@anonymous.invalid>;index=1
History-Info: <sip:anonymous@anonymous.invalid>;index=1.1
History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.1;rc=1
History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.2;rc=1.1
Contact: Bob <sip:bob@192.0.1.11>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>
        
      </section>

      <section anchor="entryPrivacy"
               title="Privacy for a Specific History-Info Entry">
        <t>This example provides a basic call scenario similar to 
        <xref target="entirePrivacy"></xref>; however, due to
        local policy at sip:biloxi.example.com, only the final hi-entry in the
        History-Info, which is Bob's local URI, contains a privacy header field with a priv-value of
        "history", thus providing Alice with some information about the
        history of the request, but anonymizing Bob's local URI.</t>

        <figure anchor="entryPrivacyFlow"
                title="Example with Privacy Header Field for Specific URI">
                    <artwork><![CDATA[
Alice   atlanta.example.com  biloxi.example.com   Bob
|                |                |                |
|   INVITE F1    |                |                |
|--------------->|                |                |
|                |                |                |
|                |   INVITE F2    |                |
|                |--------------->|                |
|                |                |                |
|                |                | INVITE F3      |
|                |                |--------------->|
|                |                |                |
|                |                |     200 F4     |
|                |                |<---------------|
|                |                |                |
|                |     200 F5     |                |
|                |<---------------|                |
|                |                |                |
|     200 F6     |                |                |            
|<---------------|                |                |
|                |                |                |
|                |       ACK      |                |
|------------------------------------------------->|
|                |                |                |

]]></artwork>
        </figure>
        
                <figure>
          <artwork><![CDATA[
Message Details

F1 INVITE Alice -> atlanta.example.com

INVITE sip:bob@biloxi.example.com;p=x SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>
Supported: histinfo
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
          
          
F2 INVITE  atlanta.example.com -> biloxi.example.com

INVITE sip:bob@biloxi.example.com;p=x SIP/2.0
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 69
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>
Supported: histinfo
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;np=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>
        
        <figure>
          <artwork><![CDATA[
          
F3 INVITE  biloxi.example.com -> Bob

INVITE sip:bob@192.0.1.11 SIP/2.0
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKeset
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
			   received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 68
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>
Supported: histinfo
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;np=1
History-Info: <sip:bob@192.0.1.11?Privacy=history>;index=1.1.1;rc=1.1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[
          
F4 200 OK  Bob -> biloxi.example.com

SIP/2.0 200 OK
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKeset;\
			   received=192.0.2.5
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
			   received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>;tag=33
Supported: histinfo
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;np=1
History-Info: <sip:bob@192.0.1.11?Privacy=history>;index=1.1.1;rc=1.1
Contact: Bob <sip:bob@192.0.1.11>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>
<figure>
          <artwork><![CDATA[
          
F5 200 OK  biloxi.example.com -> atlanta.example.com

SIP/2.0 200 OK
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
			   received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>;tag=33
Supported: histinfo
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;np=1
History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.1;rc=1.1
Contact: Bob <sip:bob@192.0.1.11>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>
        
<figure>
          <artwork><![CDATA[
          
F6 200 OK  atlanta.example.com -> Alice

SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>;tag=33
Supported: histinfo
Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;np=1
History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.1;rc=1.1
Contact: Bob <sip:bob@192.0.1.11>
Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->

]]></artwork>
        </figure>
        
      </section>


      
      <section anchor="acd" title="Automatic Call Distribution">
        <t>This scenario highlights an example of an Automatic Call
        Distribution service, where the agents are divided into groups based
        upon the type of customers they handle. In this example, the Gold
        customers are given higher priority than Silver customers, so a Gold
        call would get serviced even if all the agents servicing the Gold
        group were busy, by retargeting the request to the Silver Group for
        delivery to an agent. Upon receipt of the call at the agent assigned
        to handle the incoming call, based upon the History-Info header in the
        message, the application at the agent can provide an indication that
        this is a Gold call by extracting the hi-entry associated with the 
        incoming request, which is determined by locating the hi-entry whose
        index is reflected in the first hi-entry with a hi-target of "mp".
        In the example, this would be the hi-entry referenced by the value of 
        the first "mp" header field parameter, i.e., the hi-entry containing an index of "1". 
        An application can also determine how many groups from which the call
        may have overflowed
        before reaching the agent, etc., and present the information to the agent 
        so that the call can be handled appropriately, i.e., "I'm so sorry for the delay, blah, blah, blah..."</t>

        <t>For scenarios whereby calls might overflow from the Silver to the
        Gold, clearly the alternate group identification, internal routing, or
        actual agent that handles the call should not be sent to UA1. Thus, 
				for this scenario, one would expect that the proxy would not support 
				the sending of the History-Info in the response, even if requested by 
				Alice or the proxy could anonymize the Silver related hi-entries by 
				adding privacy in the Silver hi-entries.</t>

        <t>As with the other examples, this is not a complete prescription of how one
        would do this type of service but an example of a subset of processing
        that might be associated with such a service. In addition, this
        example does not address any aspects of agent availability resulting in the
        call being sent to an agent in another group, which
        might also be done via a SIP interface.</t>

        <figure anchor="acdFlow"
                title="Example for Automatic Call Distribution">
          <artwork><![CDATA[
Alice       example.com     Gold          Silver       Agent

|              |              |             |            |
| INVITE F1    |              |             |            |
|------------->|              |             |            |
|              |              |             |            |
|              |  INVITE F2   |             |            |
|              |------------->|             |            |
|              |              |             |            |
|              |  302 Moved Temporarily F3  |            |
|              |<-------------|             |            |
|              |              |             |            |
|              |      ACK     |             |            |
|              |------------->|             |            |
|              |              |             |            |
|              |  INVITE F4   |             |            |
|              |--------------------------->|            |
|              |              |             |            |
|              |              |             | INVITE F5  |
|              |              |             |----------->|
|              |              |             |            |
|              |              |             |  200 OK F6 |
|              |              |             |<-----------|
|              |              |             |            |
|              |         200 OK F7          |            |
|              |<---------------------------|            |
|              |              |             |            |
|  200 OK F8   |              |             |            |
|<-------------|              |             |            |
|              |              |             |            |
|                         ACK F9                         |
|------------------------------------------------------->|

F1 INVITE Alice -> example.com

INVITE sip:Gold@example.com SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:Gold@example.com>;index=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>

[SDP Not Shown]
   
F2 INVITE example.com -> Gold.example.com
 
INVITE sip:Gold@gold.example.com SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com>;rc=1;index=1.1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>

[SDP Not Shown]

F3 302 Moved Temporarily Gold.example.com -> example.com
 
SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4;\
			   received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>;tag=kkaz-
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com>;rc=1;index=1.1
Contact: <sip:Silver@example.com>;mp=1
Content-Type: application/sdp
Content-Length: <appropriate value>

[SDP Not Shown]

F4 INVITE example.com -> Silver.example.com
 
INVITE sip:Silver@example.com SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK45q2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\
                rc=1;index=1.1
History-Info: <sip:Silver@example.com>;index=1.2;mp=1
History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>

[SDP Not Shown]

F5 INVITE Silver.example.com -> Agent
 
INVITE sip:Silver@192.0.2.7 SIP/2.0
Via: SIP/2.0/TCP silver.example.com:5060;branch=z9hG4bKerxs
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK45q2;\
			   received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 68
From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\
                rc=1;index=1.1
History-Info: <sip:Silver@example.com>;index=1.2;mp=1
History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2
History-Info: <sip:Silver@192.0.2.7>;index=1.2.1.1;rc=1.2.1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>

[SDP Not Shown]

F6 200 OK Agent -> Silver.example.com
 
SIP/2.0 200 OK
Via: SIP/2.0/TCP silver.example.com:5060;branch=z9hG4bKerxs;\
				received=192.0.2.5
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK45q2;\
				received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>;tag=2325
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\
                rc=1;index=1.1
History-Info: <sip:Silver@example.com>;index=1.2;mp=1
History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2
History-Info: <sip:Silver@192.0.2.7>;index=1.2.1.1;rc=1.2.1
Contact: Agent <sip:Silver@192.0.2.7>
Content-Type: application/sdp
Content-Length: <appropriate value>

[SDP Not Shown]


F7 200 OK Silver.example.com -> example.com
 
SIP/2.0 200 OK
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK45q2;\
				received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>;tag=2325
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\
                rc=1;index=1.1
History-Info: <sip:Silver@example.com>;index=1.2;mp=1
History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2
History-Info: <sip:Silver@192.0.2.7>;index=1.2.1.1;rc=1.2.1
Contact: Agent <sip:Silver@192.0.2.7>
Content-Type: application/sdp
Content-Length: <appropriate value>

[SDP Not Shown]


F8 200 OK example.com -> Alice
 
SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>;tag=2325
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\
                rc=1;index=1.1
History-Info: <sip:Silver@example.com>;index=1.2;mp=1
History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2
History-Info: <sip:Silver@192.0.2.7>;index=1.2.1.1;rc=1.2.1
Contact: Agent <sip:Silver@192.0.2.7>
Content-Type: application/sdp
Content-Length: <appropriate value>

[SDP Not Shown]

F9 ACK Alice -> Agent
 
ACK sip:Silver@192.0.2.7 SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t3
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>;tag=2325
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 ACK
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>

[SDP Not Shown]

]]></artwork>
        </figure>



        
      <t>The first hi-entry with the "mp" header field parameter contains an
       "mp" header field parameter value of 1, which points to the original-target, 
       which allows the operator to identify that the call was from 
       the Gold customer.</t> 
      </section>

      
      <section anchor="sec-solvealias" title="Determining the Alias Used">
        <t>SIP UAs are associated with an AOR. It
        is possible for a single UA to actually have multiple AORs associated
        with it. One common usage for this is aliases. For example, a user
        might have an AOR of sip:john@example.com but also have the AORs
        sip:john.smith@example.com and sip:jsmith@example.com. Rather than
        registering against each of these AORs individually, the user would
        register against just one of them, and the home proxy would
        automatically accept incoming calls for any of the aliases, treating
        them identically and ultimately forwarding them towards the UA. This
        is common practice in the IP Multimedia Subsystem (IMS), where
        it is called "implicit registration" and each alias is called a "public 
				user identity (PUID)".</t>

        <t>It is a common requirement for a User Agent Server (UAS), on receipt of a call, to know
        which of its aliases was used to reach it. This knowledge can be used
        to choose ringtones to play, determine call treatment, and so on. For
        example, a user might give out one alias to friends and family only,
        resulting in a special ring that alerts the user to the importance of
        the call.</t>

        <t>The following call flow and example messages show how History-Info can
        be used to find out the alias used to reach the callee. 
        The alias for the call is determined by hi-entry with the index that matches 
        the value of the last hi-entry with an "rc" header field parameter
        in the Request received.</t>

        <figure anchor="fig-alias" title="Alias Example">
          <artwork><![CDATA[
       Alice             example.com             John
       |                     | REGISTER F1         |
       |                     |<--------------------|
       |                     | 200 OK F2           |
       |                     |-------------------->|
       | INVITE F3           |                     |
       |-------------------->|                     |
       |                     | INVITE F4           |
       |                     |-------------------->|
                    * Rest of flow not shown *	

F1 REGISTER John -> example.com

REGISTER sip:example.com SIP/2.0
Via: SIP/2.0/TCP 192.0.2.1;branch=z9hG4bKnashds7
Max-Forwards: 70
From: John <sip:john@example.com>;tag=a73kszlfl
To: John <sip:john@example.com>
Supported: histinfo
Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1
CSeq: 1 REGISTER
Contact: <sip:john@192.0.2.1>
Content-Length: 0


F2 200 OK example.com -> John
 
SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.0.2.1;branch=z9hG4bKnashds7
From: John <sip:john@example.com>;tag=a73kszlfl
To: John <sip:john@example.com>;tag=d2dstee2
Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1
CSeq: 1 REGISTER
Contact: <sip:john@192.0.2.1>;expires=3600
Content-Length: 0

F3 INVITE Alice -> example.com 

INVITE sip:john.smith@example.com SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=a73kszlfl
To: John <sip:john.smith@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:john.smith@example.com>;index=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>

[SDP Not Shown]
   
F4 INVITE example.com -> John
 
INVITE sip:john@192.0.2.1 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=a73kszlfl
To: John <sip:john.smith@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
Record-Route: <sip:proxy.example.com;lr>
History-Info: <sip:john.smith@example.com>;index=1
History-Info: <sip:john@192.0.2.1>;index=1.1;rc=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>

[SDP Not Shown]
                    
]]></artwork>
        </figure>
        
       <t>The last hi-entry with the "rc" header field parameter references the 
       source of retargeting pointing at the alias AOR, which in the example 
       is "john.smith@example.com". 
       </t>

      </section>
      
      <section anchor="voicemail" title="PBX Voicemail Example">
        <t>A typical use case for voicemail is one whereby the original called
        party is not reachable and the call arrives at a voicemail system. In some cases,
        multiple alternate destinations may be tried without success. The voicemail 
        system typically requires the original called party information to determine
        the appropriate mailbox so an appropriate greeting can be provided and the appropriate
        party notified of the message.  </t>

        <t>In this example, Alice calls Bob, whose SIP client is forwarded to Carol. Carol
        does not answer the call; thus, it is forwarded to a VM (voicemail) server (VMS).
        In order to determine the appropriate mailbox to use for this call, the 
        VMS needs the original target for the request.  The original target is determined 
        by finding the first hi-entry tagged with "rc" or "mp" and using the hi-entry referenced by the 
        index of "rc" or "mp" header field parameter as 
        the target for determining the appropriate mailbox.  This hi-entry is used to populate the 
        "target" URI parameter as defined in <xref target="RFC4458"/>. 
        The reason associated with the first
        hi-entry tagged with "rc" or "mp" (i.e., 302) could be used to provide a 
        customized voicemail greeting and is used to populate the "cause" URI parameter
        as defined in <xref target="RFC4458"/>. Note that some VMSs may also (or
        instead) use the
        information available in the History-Info headers for custom handling of the VM based 
        on how and why the call arrived at the VMS. </t>      
        <t>Furthermore, it is the proxy forwarding the call to the VMS that determines the 
        target of the voicemail; it is the proxy that sets the target of voicemail, which 
        is also the entity that utilizes <xref
      target="RFC7044" /> to find the target that is usually 
        based on local policy installed by the user or an administrator.</t>  

        <figure anchor="fig-pbx-vm" title="Enterprise Voicemail Example">
          <artwork><![CDATA[
Alice      example.com       Bob          Carol        VM

| INVITE F1    |              |             |          |
|------------->|              |             |          |
|              | INVITE  F2   |             |          |
|              |------------->|             |          |
|              |              |             |          |
|  100 Trying  |              |             |          |
|<-------------| 302 Moved Temporarily F3   |          |
|              |<-------------|             |          |
|              |              |             |          |
|              |      ACK     |             |          |
|              |------------->|             |          |
|              |              |             |          |
|              | INVITE F4    |             |          |
|              |--------------------------->|          |
|              |              |             |          |
|              |         180 Ringing  F5    |          |
|              |<---------------------------|          |
|              |              |             |          |
| 180 Ringing  |              |             |          |
|<-------------|              |             |          |
|              |              |             |          |
|              |       (timeout)            |          |
|              |              |             |          |
|              | INVITE  F6   |             |          |
|              |-------------------------------------->|
|              |              |             |          |
|              |               200 OK  F7              |
|              |<--------------------------------------|
|   200 OK     |              |             |          |
|<-------------|              |             |          |
|              |              |             |          |
|                         ACK                          |
|----------------------------------------------------->|


F1 INVITE Alice -> example.com 
 
INVITE sip:bob@example.com SIP/2.0
Via: SIP/2.0/TCP  192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Length: <appropriate value>

[SDP Not Shown]
   

F2 INVITE example.com -> Bob
  
INVITE sip:bob@192.0.2.5 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5>;index=1.1;rc=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
                  
[SDP Not Shown]
   
F3 302 Moved Temporarily Bob -> example.com
  
SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4;\
				 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>;tag=2g22d-lnf
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5>;index=1.1;rc=1
Contact: <sip:carol@example.com>;mp=1
Content-Type: application/sdp
Content-Length: <appropriate value>
                  
[SDP Not Shown]
   
  
F4 INVITE example.com -> Carol
  
INVITE sip:carol@192.0.2.4 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK4522
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302>;\
                   index=1.1;rc=1
History-Info: <sip:carol@example.com;cause=480>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4;cause=480>;index=1.2.1;rc=1.2
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
                  
[SDP Not Shown]

F5 180 Ringing Carol -> example.com
  
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK4522;\
				 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>;tag=setss3x
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302>;\
                   index=1.1;rc=1
History-Info: <sip:carol@example.com;cause=480>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4;cause=480>;index=1.2.1;rc=1.2
Contact: <sip:carol@192.0.2.4>
Content-Type: application/sdp
Content-Length: <appropriate value>
                  
[SDP Not Shown]
   
F6 INVITE example.com -> VM
  
INVITE sip:vm@192.0.2.6;target=sip:bob%40example.com;cause=480\
					 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK4523
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 
History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302>;\ 
                    index=1.1;rc=1         
History-Info: <sip:carol@example.com;cause=480?Reason=SIP%3Bcause%3D\
              408>;index=1.2;mp=1 
History-Info: <sip:carol@192.0.2.4;cause=480?Reason=SIP%3Bcause%3D\
              408>;index=1.2.1;rc=1.2 
History-Info: <sip:vm@example.com;\
                    target=sip:bob%40example.com;cause=480>;\
                    index=1.3;mp=1
History-Info: <sip:vm@192.0.2.6;\
                    target=sip:bob%40example.com;cause=480>;\
                    index=1.3.1;rc=1.3
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
                  
[SDP Not Shown]

F7 200 OK VM -> example.com
  
SIP/2.0 200 OK
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK4523;\
				 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>;tag=3dweggs
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302>;\
                   index=1.1;rc=1
History-Info: <sip:carol@example.com;cause=480?Reason=SIP%3Bcause%3D\
              408>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4;cause=480?Reason=SIP%3Bcause%3D\
              408>;index=1.2.1;rc=1.2
History-Info: <sip:vm@example.com;\
                   target=sip:bob%40example.com;cause=480>;\
                   index=1.3;mp=1
History-Info: <sip:vm@192.0.2.6;\
                   target=sip:bob%40example.com;cause=480>;\
                   index=1.3.1;rc=1.3
Contact: <sip:vm@192.0.2.6>
Content-Type: application/sdp
Content-Length: <appropriate value>
                  
[SDP Not Shown]

]]></artwork>
        </figure>
        
       <t>The VMS can look at the last hi-entry and find the 
       target of the mailbox by looking at the URI entry in  
       the "target" URI parameter in the hi-entry. 
       </t>
        
      </section>
      
       <section anchor="voicemailcc" title="Consumer Voicemail Example">
        <t>In the case of a consumer, when the call is retargeted, it is usually to 
        another administrative domain. 
        
        The voicemail 
        system in these environments typically requires the last-called-party information to determine
        the appropriate mailbox so an appropriate greeting can be provided and the appropriate
        party notified of the message.  </t>

        <t>In this example, Alice calls Bob, but   
         Bob has temporarily 
        forwarded his phone to Carol
        (she is his wife). 
        Carol
        does not answer the call; thus, it is forwarded to a VMS. 
        In order to determine the appropriate mailbox to use for this call, the 
        VMS needs the appropriate target for the request.  The last target is determined 
        by finding the hi-entry referenced by the index of last hi-entry tagged with "mp" 
        for determining the appropriate mailbox. This hi-entry is used to populate the 
        "target" URI parameter as defined in <xref target="RFC4458"/>.  Note that some VMSs may also (or
        instead) use the
        information available in the History-Info headers for custom handling of the VM in 
        terms of how and why the called arrived at the VMS. </t>        

        <figure anchor="fig-consumer-vm" title="Consumer Voivemail Example">
          <artwork><![CDATA[
          
          
Alice      example.com       Bob          Carol        VM

| INVITE F1    |              |             |          |
|------------->|              |             |          |
|              | INVITE  F2   |             |          |
|              |------------->|             |          |
|              |              |             |          |
|  100 Trying  |              |             |          |
|<-------------| 302 Moved Temporarily F3   |          |
|              |<-------------|             |          |
|              |              |             |          |
|              |      ACK     |             |          |
|              |------------->|             |          |
|              |              |             |          |
|              | INVITE F4    |             |          |
|              |--------------------------->|          |
|              |              |             |          |
|              |         180 Ringing  F5    |          |
|              |<---------------------------|          |
|              |              |             |          |
| 180 Ringing  |              |             |          |
|<-------------|              |             |          |
|              |              |             |          |
|              |       (timeout)            |          |
|              |              |             |          |
|              | INVITE  F6   |             |          |
|              |-------------------------------------->|
|              |              |             |          |
|              |               200 OK  F7              |
|              |<--------------------------------------|
|   200 OK     |              |             |          |
|<-------------|              |             |          |
|              |              |             |          |
|                         ACK                          |
|----------------------------------------------------->|


F1 INVITE Alice -> example.com 
 
INVITE sip:bob@example.com SIP/2.0
Via: SIP/2.0/TCP  192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Length: <appropriate value>

[SDP Not Shown]
   

F2 INVITE example.com -> Bob
  
INVITE sip:bob@192.0.2.5 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5>;index=1.1;rc=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
                  
[SDP Not Shown]
   
F3 302 Moved Temporarily Bob -> example.com
  
SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4;\
		received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>;tag=224ls3s-t
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5>;index=1.1;rc=1
Contact: <sip:carol@example.com>;mp=1
Content-Type: application/sdp
Content-Length: <appropriate value>
                  
[SDP Not Shown]
   
  
F4 INVITE example.com -> Carol
  
INVITE sip:carol@192.0.2.4 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK24s5
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302\
              %3Btext%3D%22Moved%20Temporarily%22>\
              ;index=1.1;rc=1
History-Info: <sip:carol@example.com>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
                  
[SDP Not Shown]

F5 180 Ringing Carol -> example.com
  
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK24s5;\
		received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>;tag=setss3x
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302\
              %3Btext%3D%22Moved%20Temporarily%22>;\
              index=1.1;rc=1
History-Info: <sip:carol@example.com>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2
Contact: <sip:carol@192.0.2.4>
Content-Type: application/sdp
Content-Length: <appropriate value>
                  
[SDP Not Shown]
   
F6 INVITE example.com -> VM
  
INVITE sip:vm@192.0.2.6;target=sip:carol%40example.com SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKbbg4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302\
              %3Btext%3D%22Moved%20Temporarily%22>;\
              index=1.1;rc=1
History-Info: <sip:carol@example.com>;\
              index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4?Reason=SIP%3Bcause%3D408>;\
              index=1.2.1;rc=1.2
History-Info: <sip:vm@example.com;target=sip:carol%40example.com;\
              cause=408>;index=1.2.2;mp=1.2
History-Info: <sip:vm@192.0.2.5;target=sip:carol%40example.com;\
              cause=408>;index=1.2.2.1;rc=1.2.2
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
                  
[SDP Not Shown]

F7 200 OK VM -> example.com
  
SIP/2.0 200 OK
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKbbg4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>;tag=3dweggs
Supported: histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302\
              %3Btext%3D%22Moved%20Temporarily%22>;\
              index=1.1;rc=1
History-Info: <sip:carol@example.com>;\
              index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4?Reason=SIP%3Bcause%3D408>;\
              index=1.2.1;rc=1.2
History-Info: <sip:vm@example.com;target=sip:carol%40example.com;\
              cause=408>;index=1.2.2;mp=1.2
History-Info: <sip:vm@192.0.2.5;target=sip:carol%40example.com;\
              cause=408>;index=1.2.2.1;rc=1.2.2
Contact: <sip:carol@192.0.2.5>
Content-Type: application/sdp
Content-Length: <appropriate value>
                  
[SDP Not Shown]  


]]></artwork>
        </figure>
             <t>The VMS can look at the last hi-entry and find the 
       target of the mailbox by looking for the "target" URI 
       parameter in the hi-entry and the reason by the "cause" URI 
			 parameter in the same hi-entry. 
       </t>
      </section>      

      
      

      <section anchor="sec-solvegruu" title="GRUU">
        <t>A variation on the problem in <xref target="sec-solvealias"></xref>
        occurs with Globally Routable User Agent URI (GRUU) <xref
        target="RFC5627"></xref>. A GRUU is a URI assigned to a UA instance
        that has many of the same properties as the AOR but causes requests
        to be routed only to that specific instance. It is desirable for a UA
        to know whether it was reached because a correspondent sent a request
        to its GRUU or to its AOR. This can be used to drive differing
        authorization policies on whether the request should be accepted or
        rejected, for example. However, like the AOR itself, the GRUU is lost
        in translation at the home proxy. Thus, the UAS cannot know whether it
        was contacted via the GRUU or its AOR.</t>

        <t>The following call flow and example messages show how History-Info can
        be used to find out the GRUU used to reach the callee.</t>

        <t>While a GRUU is comprised of an AOR with a URI parameter, as defined in   
        <xref target="RFC5627"></xref>, the GRUU construct itself is not an AOR.  Thus, the retargeting 
   of a request based on a GRUU does not result in the addition of an "rc" header
   field parameter to the hi-entry containing the GRUU.  
   The lack of an "rc" header field parameter in the hi-entries can be a hint that
   the source of retargeting is
   a GRUU. However, to ensure this is the case, the UAS needs to search for a
   "gr" parameter in the hi-entry prior to the last hi-entry.  If there
   is a GRUU, the URI will always be prior to the last hi-entry as the GRUU
   does not allow multiple instance to be mapped to a contact address.</t>

        <figure anchor="fig-gruu" title="GRUU Example">
          <artwork><![CDATA[
       Alice             example.com             John
       |                     | REGISTER F1         |
       |                     |<--------------------|
       |                     | 200 OK F2           |
       |                     |-------------------->|
       | INVITE F3           |                     |
       |-------------------->|                     |
       |                     | INVITE F4           |
       |                     |-------------------->|
                    * Rest of flow not shown *	

F1 REGISTER John -> example.com

REGISTER sip:example.com SIP/2.0
Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bKnashds7
Max-Forwards: 70
From: John <sip:John@example.com>;tag=a73kszlfl
Supported: gruu
To: John <sip:john@example.com>
Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1
CSeq: 1 REGISTER
Contact: <sip:john@192.0.2.1>;+sip.instance=\
	<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>
Content-Length: 0

[SDP Not Shown]
   

F2 200 OK example.com -> John

SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.0.2.1;branch=z9hG4bKnashds7
From: John <sip:john@example.com>;tag=a73kszlfl
To: John <sip:john@example.com> ;tag=b88sn
Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1
CSeq: 1 REGISTER
Contact: <sip:john@192.0.2.1>;\
	pub-gruu="sip:john@example.com;\
	gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6";\
	temp-gruu=\
	"sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;\
  gr";+sip.instance=\
	"<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>";\
	expires=3600
  Content-Length: 0

[SDP Not Shown]
   

Assuming Alice has knowledge of a GRUU either through 
prior communication or through other means such as presence 
places a call to John's GRUU.

F3 INVITE Alice -> example.com 
 
INVITE sip:john@example.com;\
	gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 SIP/2.0
Via: SIP/2.0/TCP  192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=kkaz-
To: <sip:john@example.com;\
	gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>
Supported: gruu, histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: <sip:john@example.com;\
	gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>;index=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Length: <appropriate value>

[SDP Not Shown]
   

F4 INVITE example.com -> John
  
INVITE sip:john@192.0.2.1 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=kkaz-
To: <sip:john@example.com;\
	gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>
Supported: gruu, histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
Record-Route: <sip:proxy.example.com;lr>
History-Info: <sip:john@example.com;\
	gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>;index=1
History-Info: <sip:john@192.0.2.1>;index=1.1;rc=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
                  
[SDP Not Shown]
   
  
]]></artwork>
        </figure>
        
       <t>By analyzing the entry referenced by the entry with the last 
       "rc", one can realize that the URI used to reach the device was 
       GRUU by finding the "gr" parameter.  
       </t>
      </section>

      <section anchor="sec-solvelimit" title="Limited-Use Address">
        <t>A limited-use address is a SIP URI that is minted on-demand, and
        passed out to a small number (usually one) of remote correspondents.
        Incoming calls targeted to that limited-use address are accepted as
        long as the UA still desires communications from the remote target.
        Should they no longer wish to be bothered by that remote
        correspondent, the URI is invalidated so that future requests targeted
        to it are rejected.</t>

        <t>Limited-use addresses are used in battling voice spam <xref
        target="RFC5039"></xref>. The easiest way to provide them would be for
        a UA to be able to take its AOR and "mint" a limited-use address by
        appending additional parameters to the URI. It could then give out the
        URI to a particular correspondent and remember that URI locally. When
        an incoming call arrives, the UAS would examine the parameter in the
        URI and determine whether or not the call should be accepted.
        Alternatively, the UA could push authorization rules into the network,
        so that it need not even see incoming requests that are to be
        rejected.</t>

        <t>This approach, especially when executed on the UA, requires that
        parameters attached to the AOR, but not used by the home proxy in
        processing the request, survive the translation at the home proxy
        and be presented to the UA. This will not be the case with the logic
        in RFC 3261, since the Request-URI is replaced by the registered
        contact, and any such parameters are lost.</t>

        <t>Using the History-Info, John's UA can easily see if the call was
        addressed to its AOR, GRUU, or a temp-GRUU and treat the call
        accordingly by looking for a "gr" tag in the hi-entry prior to the 
        last hi-entry.</t>

        <figure anchor="fig-luae" title="Limited-Use Address Example">
          <artwork><![CDATA[
       Alice             example.com             John
       |                     | REGISTER F1         |
       |                     |<--------------------|
       |                     | 200 OK F2           |
       |                     |-------------------->|
       | INVITE F3           |                     |
       |-------------------->|                     |
       |                     | INVITE F4           |
       |                     |-------------------->|
                    * Rest of flow not shown *	


F1 REGISTER John -> example.com

REGISTER sip:example.com SIP/2.0
Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bKnashds7
Max-Forwards: 70
From: John <sip:John@example.com>;tag=a73kszlfl
Supported: gruu
To: John <sip:john@example.com>
Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1
CSeq: 1 REGISTER
Contact: <sip:john@192.0.2.1>;\
  +sip.instance="<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>"
Content-Length: 0

F2 200 OK example.com -> John

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bKnashds7
From: John <sip:john@example.com>;tag=a73kszlfl
To: John <sip:john@example.com> ;tag=b88sn
Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1
CSeq: 1 REGISTER
Contact: <sip:john@192.0.2.1>;\
  pub-gruu="sip:john@example.com;\
  gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6";\
  temp-gruu=\
  "sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;gr";\
  +sip.instance="<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>";\
  expires=3600
Content-Length: 0

 Assuming Alice has knowledge of a temp-GRUU, she places a 
 call to the temp-GRUU.

F3 INVITE Alice -> example.com 
 
INVITE sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;\
	gr SIP/2.0
Via: SIP/2.0/UDP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=kkaz-
To: <sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com\
 ;gr>
Supported: gruu, histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
History-Info: \
 <sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;gr>\
 ;index=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Length: <appropriate value>

F4 INVITE example.com -> John
 
INVITE sip:john@192.0.2.1 SIP/2.0
Via: SIP/2.0/UDP proxy.example.com:5060;branch=z9hG4bK12s4
Via: SIP/2.0/UDP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=kkaz-
To: <sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com\
 ;gr>
Supported: gruu, histinfo
Call-ID: 12345600@example.com
CSeq: 1 INVITE
Record-Route: <sip:proxy.example.com;lr>
History-Info: \
 <sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;gr>\
 ;index=1
History-Info: <sip:john@192.0.2.1>;index=1.1;rc=1
Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp
Content-Length: <appropriate value>
                    
]]></artwork>
        </figure>
       <t>By analyzing the entry referenced by the entry with the last 
       "rc", one can realize that the URI used to reach the device was 
       GRUU by finding the "gr" parameter.  
       </t>     
      </section>

      <section anchor="sec-solveservice" title="Service Invocation">
        <t>Several SIP specifications have been developed that make use of
        complex URIs to address services within the network rather than
        subscribers. The URIs are complex because they contain numerous
        parameters that control the behavior of the service. Examples of this
        include the specification that first introduced the concept, <xref
        target="RFC3087"></xref>, control of network announcements and Interactive Voice Response (IVR)
        with SIP URI <xref target="RFC4240"></xref>, and control of voicemail
        access with SIP URI <xref target="RFC4458"></xref>.</t>

        <t>A common problem with all of these mechanisms is that once a proxy
        has decided to rewrite the Request-URI to point to the service, it
        cannot be sure that the Request-URI will not be destroyed by a
        downstream proxy that decides to forward the request in some way, and
        does so by rewriting the Request-URI.</t>

        <t><xref target="voicemail"></xref> shows how 
        History-Info can be used to invoke a service.</t>
      </section>

      <section anchor="sec-solvetollfree" title="Toll-Free Number">
        <t>Toll-free numbers, also known in the United States as 800 or 8xx numbers, are telephone numbers that are free for users to call.</t>

        <t>In the telephone network, toll-free numbers are just aliases to
        actual numbers that are used for routing of the call. In order to
        process the call in the PSTN, a switch will perform a query (using a
        protocol called Transaction Capabilities Application Part (TCAP)), which will return either a phone number or the
        identity of a carrier which can handle the call.</t>

        <t>There has been recent work on allowing such PSTN translation
        services to be accessed by SIP proxy servers through IP querying
        mechanisms. For example, ENUM <xref target="RFC6117"></xref> has
        already been proposed as a mechanism for performing Number
        Portability (NP) queries <xref target="RFC4769"></xref>.         Using it for 8xx number translations is a logical next step.</t>

        <t>The new target from translating the 8xx number may be in the PSTN or in 
				the SIP network. If the new target is an entity in the PSTN, 
				the proper treatment in the PSTN (and in particular, correct 
				reconciliation of billing records) requires that the call be marked 
				with both the originating number (8xx number) and the new target 
				number, History-info would come in play here to assure original 8xx 
				number is not lost.</t>

				<t>Although not required to have both the originating number (8xx number) 
				and the new target in the SIP network, an enterprise or user who utilize 
				the 8xx service can benefit by knowing whether the call came in via an 8xx 
				number in order to treat the call differently (for example, to play a 
				special announcement), but if the original Request-URI is lost through 
				translation, there is no way to tell if the call came in via 8xx number. 
				History-Info again would come in play here. </t>

        <t>Similar problems arise with other "special" numbers and services
        used in the PSTN, such as operator services, pay/premium numbers (9xx numbers
        in the United States), and short service codes such as 311.</t>

        <t>To find the service number, the UAS can extract the hi-entry whose index matches
        the value of the first hi-entry with an "mp" tag. Technically, the call can be forwarded
        to these "special" numbers from non-special numbers; however, that is uncommon 
        based on the way these services authorize translations.</t>

				<t>This example call flow shows a UAC that does not support History-Info.</t>

        <figure anchor="fig-tollfree" title="Service Number Example">
          <artwork><![CDATA[
      Alice      Toll-Free Service   Atlanta.com          John
       |                |              |                   |
       |    INVITE F1   |              |                   |
       |--------------->|   INVITE F2  |                   |
       |                |------------->|                   |
       |                |              |  INVITE F3        |
       |                |              |------------------>|
     
                    * Rest of flow not shown *	
	
F1: INVITE 192.0.2.1 -> Toll-Free Service

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

[SDP Not Shown]

F2: INVITE Toll-Free Service -> Atlanta.com

INVITE sip:+15555551002@atlanta.com 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 <sip:+15551001@example.com;user=phone>;tag=9fxced76sl
To: <sip:+18005551002@example.com;user=phone>
Call-ID: c3x842276298220188511
CSeq: 1 INVITE
Max-Forwards: 69
Supported: histinfo
History-Info: <sip:+18005551002@example.com;user=phone>;index=1
History-Info: <sip:+15555551002@atlanta.com>;index=1.1;mp=1
Contact: <sip:alice@192.0.2.1>
Content-Type: application/sdp
Content-Length: <appropriate value>

[SDP Not Shown]

F3: INVITE Atlanta.com -> John

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 <sip:+15551001@example.com;user=phone>;tag=9fxced76sl
To: <sip:+18005551002@example.com;user=phone>
Call-ID: c3x842276298220188511
CSeq: 1 INVITE
Max-Forwards: 68
Supported: histinfo
History-Info: <sip:+18005551002@example.com;user=phone>;index=1
History-Info: <sip:+15555551002@atlanta.com>;index=1.1;mp=1
History-Info: <sip:john@atlanta.com>;index=1.1.1;rc=1.1
History-Info: <sip:john@198.51.100.2>;index=1.1.1.1;rc=1.1.1
Contact: <sip:alice@192.0.2.1>
Content-Type: application/sdp
Content-Length: <appropriate value>

[SDP Not Shown]
                    
]]></artwork>
        </figure>
      </section>
    </section>
    
    <section anchor="security" title="Security Considerations">
      <t>The security considerations for the History-Info header field are specified in <xref
      target="RFC7044"></xref>.</t>

    </section>
     
    <section title="Acknowledgements">
     <t>Jonathan Rosenberg, et al produced the document that provided 
      additional use cases precipitating the requirement for the 
      new "target" parameter in the History-Info header field and the new
      SIP/SIPS URI parameter. Hadriel Kaplan provided some comments.</t>
		 <t>Brett Tate, Roland Jesske, Laura Liess, Scott Godin, Dale Worley, and Marianne Mohali 
			provided extensive review and comments on call flows, message examples, 
			and text.</t>
     
    </section>
  </middle>

  <back>
    <references title="Informative References">
      &rfc3261;
      
      &rfc5627;

      &rfc3087;

      &rfc4240;

      &rfc5039;

      &rfc4458;

      &rfc6117;

      &rfc4769;
 
      &rfc7044;


      
 <!--     &I-D.ietf-sipcore-rfc4244bis; RFC 7044-->
    </references>

    
  </back>
</rfc>
