<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="info" docName="draft-mohali-diversion-history-info-00"
     ipr="full3978">
  <front>
    <title abbrev="Mapping Diversion and History-Info">Mapping and
    interworking of Diversion information Between Diversion and History-Info
    Headers in the Session Initiation Protocol (SIP)</title>

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

      <address>
        <postal>
          <street>38-40 rue du Général Leclerc</street>

          <code>92794</code>

          <city>Issy-Les-Moulineaux Cedex 9</city>

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

        <phone>+33 1 45 29 45 14</phone>

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

    <author fullname="Steve Norreys" initials="S" surname="Norreys">
      <organization>British Telecom</organization>
    </author>

    <author fullname="Jan Van Gee" initials="J" surname="Van Gee">
      <organization>Belgacom</organization>
    </author>

    <author fullname="Martin Dolly" initials="M" surname="Dolly">
      <organization>ATT</organization>
    </author>

    <author fullname="Francisco Silva" initials="F" surname="Silva">
      <organization>Portugal Telecom</organization>
    </author>

    <author fullname="Guiseppe Sciortino" initials="G" surname="Sciortino">
      <organization>Italtel</organization>
    </author>

    <author fullname="Cinzia Amenta" initials="C" surname="Amenta">
      <organization>Italtel</organization>
    </author>

    <date month="July" year="2008" />

    <keyword>Diversion</keyword>

    <keyword>History-Info</keyword>

    <abstract>
      <t>Both History-Info and Diversion headers are able to transport
      diverting information in Session Initiation Protocol (SIP) signaling.
      <vspace />This document proposes a way to map call forwarding
      information contained in a Diversion header into a History-Info header
      and vice versa. In addition, an interworking policy is proposed to
      manage the headers coexistence. <vspace />Prior to existence of <xref
      target="RFC4244"></xref> describing the History-Info header, there was a
      draft introducing a header named Diversion for the transport of
      diversion information. <vspace />Since the Diversion header is used in
      many existing networks implementations and it is not standardized for
      transport of diversion information, a mapping with the standardized
      History-Info header is needed.</t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119"></xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <section title="Overview">
        <t>For enhanced network services (eg. Voicemail, IVR or automatic call
        distribution), it is necessary for the called SIP user agent to
        identify from whom and why the session was diverted. In order to be
        used by various service providers or applications, redirection
        information needs to pass through the network.<vspace /> This is
        possible with two different SIP headers: History-Info <xref
        target="RFC4244"></xref> and Diversion <xref
        target="draft-levy-sip-diversion-08"></xref> which both able to
        transport diversion information in SIP signaling. Because of this
        double possibility, it is necessary to map one into the other.
        <vspace />This document provides a standard mechanism of translation
        between the History-Info header and the Diversion header.</t>
      </section>

      <section title="Background">
        <t>To transport diversion information, the History-Info header <xref
        target="RFC4244"></xref> and an URI extension <xref
        target="RFC4458"></xref> are advocated in the standardized
        Communication Diversion (CDIV) service Protocol Specifications <xref
        target="TS_183004"></xref> and <xref target="TS_24.604"></xref>.
        <vspace />Because of the implementation of the Diversion header in
        some SIP networks/terminals and the History-Info header in others, it
        is necessary to map one to the other. <vspace blankLines="1" />At
        first, the Diversion header was described in <xref
        target="draft-levy-sip-diversion-08"></xref>, which is today
        discarded. This header contains the list of the diverting user(s) with
        associated information. The top-most diversion entry (first in the
        list) corresponds to the last diverting user and the bottom-most entry
        to the first diverting user (see syntax below). <vspace
        blankLines="1" />At the same time, the History-Info header was
        proposed for the transport of "request history" information which
        allows the receiving application to determine hints about how and why
        the session arrived at the application/user. As history information is
        larger than diversion information, diversion information MUST be
        located and extracted from the History-Info header. This is not the
        case with the Diversion header. In addition, for diverting information
        the History-Info header MUST be completed by <xref
        target="RFC4458"></xref> for the transport of the diversion reason.
        <vspace blankLines="1" />Those headers have different syntaxes
        described below. Note that the main difference is that the
        History-Info header is a chronological writing header whereas the
        Diversion header is the opposite (i.e. the first diversion entry read
        correspond to the last diverting user).</t>
      </section>
    </section>

    <section title="Problem Statement">
      <section title="Interworking need">
        <t>The Diversion header is used for recording communication diversion
        information which could be useful to network entities downstream.
        Today, this SIP header is implemented by several manufacturers and
        deployed in several networks. <vspace blankLines="1" />In addition,
        the History-Info header is standardized, among other needs, for the
        transportation of diversion information. <vspace blankLines="1" />As
        both are answering to call forwarding needs, according to the one
        created or completed in one side and the one interpreted in the other
        side, diverting information could be mixed-up if they are both present
        in the INVITE request. So, Diversion and History-Info headers MUST NOT
        independently coexist for the session signalling. <vspace
        blankLines="1" />For the transportation of consistent diversion
        information downstream, it is necessary to make the two headers
        interwork. Mapping between the Diversion header and the History-Info
        header is presented in sections 5 and 6.</t>
      </section>

      <section title="Interworking recommendations">
        <t>To avoid the two headers coexisting it would be better to replace
        one by the other during the interworking, but this may not be possible
        due to the information that History-Info header may
        carry.<vspace />Indeed, the History-Info header is larger than
        Diversion header and is used for other services than call diversion:
        in addition to trace call forwarding information, it is acting as a
        session history and could store all successive R-URI values. So,
        sometimes, it will not be possible to suppress the History-Info header
        after the Diversion header has been created.<vspace
        blankLines="1" />SIP network/terminal using Diversion to SIP
        network/terminal using History-Info header: <vspace
        blankLines="1" />When the Diversion header is mapped into a
        History-Info header, the Diversion header MUST be suppressed in the
        outgoing INVITE. It is considered that all information present in the
        Diversion header is transferred in the History-Info header.<vspace
        blankLines="1" />If a History-Info header is present in the incoming
        INVITE (in addition to Diversion header), the Diversion header and
        History-Info header present MUST be mixed and only the diversion
        information not yet present in the History-Info header MUST be
        inserted as a last entry (more recent) in the existing History-Info
        header as recommended in <xref target="RFC4244"></xref>. <vspace />As
        an example, this could be the case of an INVITE coming from a
        network_2 using Diversion header but before passed through a network_1
        using History-Info header (or the network_2 uses History-Info header
        to transport successive URI information) and going to a network_3
        using History-Info header. In that case, the incoming INVITE contains
        a Diversion header and a History-info header. So that, it is necessary
        to create, for network_3, a single History-Info header gathering
        existing information in the History-Info header received and those
        present in the Diversion header. Then network_3 could use call
        forwarding information that are present in a single header and add its
        own diversion information if necessary. <vspace blankLines="1" />Note
        that the chronological order could not be certified. If previous
        policy recommendations are applied, the chronological order is
        respected as Diversion entries are inserted at the end of the
        History-Info header taking into account the Diversion internal
        chronology. <vspace blankLines="1" />SIP network/terminal using
        History-Info header to SIP network/terminal using Diversion header:
        <vspace blankLines="1" />When the History-Info header is mapped into a
        Diversion header, some precautions MUST be taken. <vspace />If the
        History-Info header contains only communication diversion information,
        then it MUST be suppressed after the mapping. <vspace />If the
        History-Info header contains other information, then only the
        information of concern to the diverting user MUST be used to create
        entries in the Diversion header and the History-Info header MUST be
        kept as received in the INVITE forwarded downstream. <vspace
        blankLines="1" />Note: The History-Info header could be used for other
        reasons than CDIV services, for example by a service which need to
        know if a specific AS had yet been invoked in the signalling path. If
        the call is after forwarded to a network using History-Info header, it
        would be better to not loose history information due to passing though
        the network which only support Diversion header. A recommended
        solution MUST NOT disrupt the standard behaviour and networks which
        not implement History-Info header MUST be transparent to an incoming
        History-Info header. <vspace blankLines="1" />If a Diversion header is
        already presents in the incoming INVITE (in addition to History-Info
        header), only diversion information present in the History-Info header
        but not in the Diversion header MUST be inserted from the last entry
        (more recent) into the existing Diversion header as recommended in the
        Diversion draft <xref target="draft-levy-sip-diversion-08"></xref>.
        Note that the chronological order could not be certified. If previous
        policy recommendations are respected, this case SHOULD NOT
        happen.<vspace blankLines="2" />Forking case:<vspace />The
        History-Info header enables the recording of sequential forking for
        the same served-user. During a mapping from the History-Info header to
        Diversion header, the History-Info entries contaning a forking
        situation (with an incremented "index" parameter) could be either
        mapped for each entry with a call forwarding "cause" parameter, the
        interworking entity could choose to create only one Diversion entry or
        to not apply the mapping. The choice could be done according a local
        policy.</t>
      </section>
    </section>

    <section title="Headers syntaxes reminder">
      <section title="History-Info header syntax">
        <t>History-Info = "History-Info" HCOLON hi-entry *(COMMA hi-entry)
        <vspace />hi-entry = hi-targeted-to-uri *( SEMI hi-param ) <vspace />
        hi-targeted-to-uri= name-addr <vspace /> hi-param = hi-index /
        hi-extension <vspace /> hi-index = "index" EQUAL 1*DIGIT *(DOT
        1*DIGIT) <vspace /> hi-extension = generic-param <vspace
        blankLines="2" />The History-Info header is specified in <xref
        target="RFC4244"></xref>. Amongst the information contained in the
        header list is the diversion information with a specific cause code
        mentioning the diversion reason. These optional cause codes are
        defined in <xref target="RFC4458"></xref>. It is also possible to
        introduce the Privacy header defined in <xref target="RFC3323"></xref>
        for diversion information. The top-most History-Info entry (first in
        the list) corresponds to the oldest history information. <vspace />A
        diverting user information is identifiable by the History-Info entry
        containing a cause-param with cause value as listed in <xref
        target="RFC4458"></xref> and by the entry just before. The last
        diversion target is identifiable by the last History-Info entries
        containing a cause-param with cause value as listed in RFC 4458.
        <vspace />The cause-param is inserted in the hi-targeted-to-uri of the
        address were the communication is diverted to. The index parameter is
        a string of digits, separated by dots to indicate the number of
        forward hops and retargets. <vspace blankLines="2" />Example: <vspace
        blankLines="1" />History-Info:<vspace />&lt;sip: diverting_user1_addr;
        Privacy=none &gt;;index=1, <vspace /> &lt;sip: diverting_user2_addr;
        Privacy=history; Reason=SIP;cause=302&gt;index=1.1, <vspace />
        &lt;sip:last_diversion_target;Reason=SIP;cause=486&gt;; index=1.1.1,
        <vspace blankLines="2" />Policy concerning "histinfo" option tag in
        Supported header:<vspace />According to <xref
        target="RFC4244"></xref>, a proxy that receives a Request with the
        "histinfo" option tag in the Supported header should return captured
        History-Info in subsequent, provisional and final responses to the
        Request. The behaviour depend whether the local policy support the
        capture of History-Info or not.<vspace blankLines="2" /></t>
      </section>

      <section title="Diversion header syntax">
        <t>It seems that there is some few mistakes in the Diversion syntax,
        so it would be better to use the following syntax:</t>

        <t>Diversion = "Diversion" HCOLON diversion-params *(COMMA
        diversion-params)<vspace />diversion-params = name-addr *(SEMI
        (diversion-reason / diversion-counter / diversion-limit /
        diversion-privacy / diversion-screen /
        diversion-extension))<vspace />diversion-reason = "reason" EQUAL
        ("unknown" / "user-busy" / "no-answer" / "unavailable" /
        "unconditional" / "time-of-day" / "do-not-disturb" / "deflection" /
        "follow-me" / "out-of-service" / "away" / token /
        quoted-string)<vspace />diversion-counter = "counter" EQUAL 1*2DIGIT
        <vspace />diversion-limit = "limit" EQUAL 1*2DIGIT
        <vspace />diversion-privacy = "privacy" EQUAL ("full" / "name" / "uri"
        / "off" / token / quoted-string)<vspace />diversion-screen = "screen"
        EQUAL ("yes" / "no" / token /
        quoted-string)<vspace />diversion-extension = token [EQUAL (token /
        quoted-string)] <vspace blankLines="2" />Note: The Diversion header
        could be used in the comma-separated format as described below and in
        a header-separated format. Both formats could be combined a received
        INVITE as RECOMMENDED in <xref target="RFC3261"></xref>.<vspace
        blankLines="2" />Example: <vspace blankLines="1" />Diversion:
        <vspace />diverting_user2_addr; reason="user-busy"; counter=1;
        privacy=full, <vspace />diverting_user1_addr; reason="unconditional";
        counter=1; privacy=off<vspace blankLines="2" /></t>
      </section>
    </section>

    <section title="Headers in SIP METHOD">
      <t>You can find here a reminder of History-Info header field and
      Diversion header field in relation to methods. As those headers does not
      have the same capabilities, it is necessary to clarify the
      interworking.<vspace /></t>

      <figure>
        <artwork>Use of History-Info header field:

Header field where proxy ACK BYE CAN INV OPT REG MSG 
------------ ----- ----- --- --- --- --- --- --- --- 
History-Info        amdr   -   -   -  o   o   o   o 
                         SUB NOT REF INF UPD PRA PUB 
                         --- --- --- --- --- --- --- 
History-Info        amdr o    o   o   -   -   -   o 


Use of Diversion header field:

Header field where  enc. e-e ACK BYE CAN INV OPT REG
------------ ----- ----- --- --- --- --- --- --- ---   
Diversion      R          h   -   -   -   o   -   -
Diversion     3xx         h   -   -   -   o   -   -
</artwork>
      </figure>

      <t>The recommended interworking presented in this document SHOULD apply
      only for INVITE requests.<vspace blankLines="1" />In 3xx responses, both
      headers could be present. <vspace />When a proxy wants to interwork with
      a network supporting the other header field, it SHOULD apply the mapping
      between Diversion header and History-Info header in the 3xx response.
      <vspace />When a recursing proxy redirects an initial INVITE after
      receving a 3xx response, it SHOULD add as a last entry either a
      Diversion header or History-Info header (according its capabilities) in
      the forwarded INVITE. Local policies could apply to send the received
      header in the next INVITE or not.<vspace blankLines="1" />Other messages
      where History-Info could be present are not used for the Call Forwarding
      service and SHOULD NOT be changed into Diversion header. The destination
      network MUST be transparent the received History-Info
      header.<vspace /></t>
    </section>

    <section title="Diversion header to History-Info header">
      <t>For N Diversion entries N+1 History-Info entries MUST be created. To
      create the History-Info entries in the same order than during a session
      establishment, the Diversion entries MUST be mapped from the bottom-most
      until the top-most. <vspace blankLines="1" />The first entry created in
      the History-Info header contains: <list>
          <t>- a hi-target-to-uri with the name-addr parameter of the
          bottom-most Diversion header</t>

          <t>- the privacy entry mapping the privacy parameter of the
          bottom-most Diversion header,</t>

          <t>- an index set to 1.</t>
        </list><vspace blankLines="1" /></t>

      <t>For the each Diversion header, the next History-info entries are
      mapped as following:<vspace /></t>

      <figure>
        <artwork>Source                                         Destination
Diversion header component:                    History-Info header component:
=============================================================================
Name-addr of the previous                      Hi-target-to-uri
(on top) Diversion header. 
If there is no previous(top-most),
it is the Request-URI address. 

=============================================================================
Reason                                         Cause
“unknown”--------------------------------------404
"unconditional"--------------------------------302
"user-busy"------------------------------------486
"No-answer"------------------------------------408
"deflection "----------------------------------480
"Unavailable"----------------------------------503
"time-of-day"----------------------------------404 (default) or 302
"do-not-disturb"-------------------------------404 (default) or 302
"follow-me"------------------------------------404 (default) or 302
"out-of-service"-------------------------------404 (default)
"away"-----------------------------------------404 (default) or 302

=============================================================================
Counter                                         Hi-index
"1" or parameter ------------------------------The previous created index
no present                                     is incremented with ".1"
Superior to "1" -------------------------------1+[(N-1)*".1"]
(i.e. N)

=============================================================================
Privacy of the previous                        Privacy escaped in the 
(on top) Diversion header.                     hi-targeted-to-uri
If there is no previous(top-most),
no privacy parameter is created.
"full"-----------------------------------------"history"
"Off"------------------------------------------Privacy header field
                                               absent or "none"
"name"-----------------------------------------"history"
"uri"------------------------------------------"history"
=============================================================================</artwork>
      </figure>

      <t>Note: For other optional Diversion parameters, there is no
      recommendation.<vspace />Note: For values of the "reason" parameter
      which are mapped with a recommended default value, it could also be
      possible to choose an other value or to omit the parameter.<vspace
      blankLines="1" />Concerning local policies recommendations about headers
      coexistence in the INVITE request, see section 2.2.</t>
    </section>

    <section title="History-Info header to Diversion header">
      <t>As each previous diverting user MUST be present in the received
      History-Info header, one Diversion header entry per diverting user MUST
      be created in order to not to loose any diverting information. <vspace
      blankLines="1" />For each History-Info header containing a cause-param
      with cause value as listed in the <xref target="RFC4458"></xref>; a
      Diversion header entry MUST be created. The first History-Info header
      entry selected will be mapped into the last Diversion header entry and
      so on. <vspace blankLines="1" />In this case, the History-Info header
      MUST be mapped into the Diversion header as following:</t>

      <figure>
        <artwork>
Source                                         Destination
History-Info header component:                 Diversion header component:
============================================================================
Hi-target-to-uri of the                        Name-addr
History-Info which precedes the one
containing a diverting cause-param 

============================================================================
Cause                                          Reason
404--------------------------------------------"unknown"
302--------------------------------------------"unconditional"
486--------------------------------------------"user-busy"
408--------------------------------------------"No-answer"
480 or 487-------------------------------------"deflection "
503--------------------------------------------"Unavailable"

============================================================================
Hi-index                                        Counter
Mandatory parameter for-------------------------The counter is set to "1".
History-Info reflecting 
the chronological order 
of the information.
============================================================================
Privacy escaped in the                          Privacy
hi-targeted-to-uri of the 
History-Info which precedes the one
containing a diverting cause-param.
Optional parameter for History-Info, 
this Privacy indicates that this 
specific History-Info header SHOULD
not be forwarded.
"history"---------------------------------------"full"
Privacy header field ---------------------------"Off"
Absent or "none"

============================================================================
Privacy header [RFC3323]                        Privacy
The Privacy indicates that all
History-Info headers SHOULD NOT
be forwarded.
"history"---------------------------------------"full"
============================================================================</artwork>
      </figure>

      <t>Concerning local policies recommendations about headers coexistence
      in the INVITE request, see section 2.2.<vspace blankLines="2" />Editor's
      note: Iinterworking with Voicemail URI, defined in <xref
      target="RFC4458"></xref>, will be added in the next release of the
      document.</t>
    </section>

    <section title="Examples">
      <section title="Example with Diversion header changed into History-Info header">
        <t>INVITE last_diverting_target <vspace />Diversion:
        <vspace />diverting_user3_address;reason="unconditional";counter=1;privacy=off,<vspace />diverting_user2_address;reason="user-busy";counter=1;privacy=full,
        <vspace />diverting_user1_address;reason="no-answer";counter=1;privacy=off
        <vspace blankLines="1" />Mapped into: <vspace
        blankLines="1" />History-Info: <vspace />&lt;sip:
        diverting_user1_address; privacy=none &gt;; index=1,
        <vspace />&lt;sip: diverting_user2_address; privacy=history,
        reason=SIP; cause=408&gt;index=1.1, <vspace />&lt;sip:
        diverting_user3_address; privacy=none, reason=SIP;
        cause=486&gt;index=1.1.1, <vspace />&lt;sip: last_diverting_target;
        Reason=SIP; cause=302&gt;index=1.1.1.1,</t>
      </section>

      <section title="Example with History-Info header changed into Diversion header">
        <t>History-Info: <vspace />&lt;sip: diverting_user1_address
        ;Privacy=history &gt;; index=1, <vspace />&lt;sip:
        diverting_user2_address; Privacy=none; Reason=SIP;
        cause=302&gt;index=1.1, <vspace />&lt;sip: last_diverting_target;
        Reason=SIP; cause=486&gt;index=1.1.1 <vspace blankLines="1" />Mapped
        into: <vspace blankLines="1" />Diversion:
        <vspace />diverting_user2_address; reason="user-busy"; counter=1;
        privacy=off, <vspace />diverting_user1_address;
        reason="unconditional"; counter=1; privacy=full</t>
      </section>

      <section title="Example with two SIP networks using History-Info header interworking with a SIP network using Diversion header">
        <t>A -&gt; P1 -&gt; B -&gt; C -&gt; P2 -&gt; D-&gt; E <vspace />A, B,
        C, D and E are users. <vspace />B, C and D have Call Forwarding
        service invoked. <vspace />P1 and P2 are proxies. <vspace />Only
        relevant information is shown on the following call flow. <vspace
        blankLines="3" /></t>

        <figure>
          <artwork align="center">                       IWF*                                    IWF* 
  SIP network using     |            SIP network using          |SIP network 
    History-Info        |                 Diversion             |using 
                        |                                       |History-Info
                        |                                       | 
UA A    P1     AS B     |       P2     AS C    UE C   AS D      |      UE E
|       |       |       |       |       |       |       |       |         |
|INVITE |       |       |       |       |       |       |       |         |
|------&gt;|       |       |       |       |       |       |       |         |
|       |       |       |       |       |       |       |       |         |
|       |INVITE |       |       |       |       |       |       |         |
|       |------&gt;|       |       |       |       |       |       |         |
|       |Supported: histinfo    |       |       |       |       |         | 
|       | History-Info:         |       |       |       |       |         |
|       | &lt;sip:proxyP1&gt;; index=1,       |       |       |       |         |
|       | &lt;sip:userB &gt;; index=1.1       |       |       |       |         |
|       |       |       |       |       |       |       |       |         |
|       |       |INVITE |       |       |       |       |       |         |
|       |       |------&gt;|       |       |       |       |       |         |
|       |       |History-Info:  |       |       |       |       |         |
|       |       |&lt;sip:proxyP1&gt;; index=1,|       |       |       |         |
|       |       |&lt;sip:userB&gt;; index=1.1 |       |       |       |         |
|       |       |&lt;sip:userC&gt;; cause=302; index=1.1.1    |       |         |
|       |       |       |       |       |       |       |       |         |
|       |       |       |INVITE |       |       |       |       |         |
|       |       |       |------&gt;|       |       |       |       |         |
|       |       |       |Diversion:     |       |       |       |         |
|       |       |       |B reason= unconditional counter=1      |         |
|       |       |       |History-Info:  |       |       |       |         | 
|       |       |       |&lt;sip:proxyP1&gt;; index=1,|       |       |         | 
|       |       |       |&lt;sip:userB&gt;; index=1.1 |       |       |         | 
|       |       |       |&lt;sip:proxyP2&gt;; cause=302; index=1.1.1  |         |
|       |       |       |       |       |       |       |       |         |
|       |       |       |       |INVITE |       |       |       |         |
|       |       |       |       |------&gt;|       |       |       |         |
|       |       |       |       |No modification of Diversion due to P2   |
|       |       |       |       |       |       |       |       |         |
|       |       |       |       |       |INVITE |       |       |         |
|       |       |       |       |       |------&gt;|       |       |         |
|       |       |       |       |       |       |       |       |         |
|       |       |       |       |       |&lt;--180-|       |       |         |
|       |       |       |       |       |       |       |       |         |
|       |       |       |       |  No response timer expire     |         |
|       |       |       |       |       |---INVITE-----&gt;|       |         |
|       |       |       Diversion:                      |       |         |
|       |       |       userC; reason=no-answer; counter=1; privacy=full,
|       |       |       userB; reason=unconditional; counter=1; privacy=off, 
|       |       |       History-Info:                   |       |         |
|       |       |       &lt;sip:proxyP1&gt;; index=1,         |       |         |
|       |       |       &lt;sip:userB&gt;; index=1.1          |       |         |
|       |       |       &lt;sip:proxyP2&gt;; cause=302; index=1.1.1   |         |   
|       |       |       |       |       |       |       |       |         |
|       |       |       |       |       |       |       |INVITE |         |
|       |       |       |       |       |       |       |------&gt;|         |
|       |       |       Diversion:                              |         |
|       |       |       userD; reason=time-of-day; counter=1; privacy=off |
|       |       |       userC; reason=no-answer; counter=1; privacy=full, |
|       |       |       userB; reason=unconditional; counter=1; privacy=off, 
|       |       |       History-Info:                           |         |
|       |       |       &lt;sip:proxyP1&gt;; index=1,                 |         |
|       |       |       &lt;sip:userB&gt;; index=1.1                  |         |
|       |       |       &lt;sip:proxyP2&gt;; cause=302; index=1.1.1   |         |
|       |       |       |       |       |       |       |       |         |
|       |       |       |       |       |       |       |       | INVITE  |
|       |       |       |       |       |       |       |       |--------&gt;|
|       |       |       History-Info:                                     |
|       |       |       &lt;sip:proxyP1&gt;; index=1,                           |
|       |       |       &lt;sip:userB&gt;; index=1.1; privacy=none,             |
|       |       |       &lt;sip:proxyP2&gt;; cause=302; index=1.1.1,            |
|       |       |       &lt;sip:userC&gt;; privacy=history; index=1.1.1.1,      |
|       |       |      &lt;sip:userD&gt;; cause=408; privacy=none; index=1.1.1.1.1,
|       |       |       &lt;sip:userE&gt;; cause=404; index=1.1.1.1.1.1         |
|       |       |       |       |       |       |       |        |        |
|       |       |       |       |       |       |       |        |        |

* Note: The IWF is an interworking function which could be a stand-alone equipment not defined in this draft.</artwork>
        </figure>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document makes no request of IANA.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The use of Diversion header or History-Info header require to apply
      the requested privacy and integrity asked by each diverting user or
      entity. Without integrity, the requested privacy functions could be
      downgraded or eliminated, potentially exposing identity information.
      Without confidentiality, eavesdroppers on the network (or any
      intermediaries between the user and the privacy service) could see the
      very personal information that the user has asked the privacy service to
      obscure. Unauthorised insertion, deletion of modification of those
      headers can provide misleading information to users and applications. A
      SIP entity that can provide a redirection reason in a History-Info
      header or Diversion header SHOULD be able to suppress this in accordance
      with privacy requirements of the user concerned. <vspace /></t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <reference anchor="RFC3261" target="">
        <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></organization>
          </author>

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

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

      <reference anchor="RFC3969">
        <front>
          <title>The Internet Assigned Number Authority (IANA) Uniform
          Resource Identifier (URI) Parameter Registry for the Session
          Initiation Protocol (SIP), BCP 99</title>

          <author fullname="Camarillo, G.">
            <organization></organization>
          </author>

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

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

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

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

          <date month="October" year="2005" />
        </front>

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

      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement
          Levels</title>

          <author fullname="S. Bradner ">
            <organization></organization>
          </author>

          <date month="March" year="1997" />
        </front>

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

      <?rfc ?>
    </references>

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

          <author fullname=" Barnes, M.">
            <organization></organization>
          </author>

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

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

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

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

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

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

      <reference anchor="draft-levy-sip-diversion-08">
        <front>
          <title>Diversion Indication in SIP,
          draft-levy-sip-diversion-08</title>

          <author fullname="Levy, S., Yang, J.R., Byerly, B.">
            <organization></organization>
          </author>

          <date month="August" year="2004" />
        </front>
      </reference>

      <reference anchor="TS_183004">
        <front>
          <title>PSTN/ISDN simulation services: Communication Diversion
          (CDIV); Protocol specification, Release 2, ETSI TS 183004</title>

          <author>
            <organization>Telecommunications and Internet converged Services
            and Protocols for Advanced Networking (TISPAN)</organization>
          </author>

          <date month="November" year="2007" />
        </front>
      </reference>

      <reference anchor="TS_24.604">
        <front>
          <title>Technical Specification Group Core Network and Terminals ;
          Communication Diversion (CDIV) using IP Multimedia (IM)Core Network
          (CN) subsystem ; Protocol specification (Release 8), 3GPP TS
          24.604</title>

          <author>
            <organization>3rd Generation Partnership Project</organization>
          </author>

          <date month="April" year="2008" />
        </front>
      </reference>

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

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

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

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