<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes" ?>
<?rfc compact="yes" ?>
<?rfc sortrefs="no" ?>
<rfc ipr="full2026" docName="draft-jennings-sipping-connected-00.txt">
<front>
    <title abbrev="SIP Connected Party">
	Updating the Connected Party in SIP
    </title>
    <author initials="C." surname="Jennings" fullname="Cullen Jennings">
      <organization>Cisco Systems, Inc.</organization>
      <address>
	<postal>
	  <street>170 West Tasman Dr.</street>
	  <street>MS: SJC-21/2</street>
          <city>San Jose</city> 
          <region>CA</region> <code>95134</code>
	  <country>USA</country>
 	</postal>
	<phone>+1 408 902 3341</phone>
	<email>fluffy@cisco.com</email>
      </address>
    </author>
    <date month="January" day="31" year="2004" />
    <area>Transport</area>
    <workgroup>SIPPING WG</workgroup>
    <keyword>I-D</keyword>
    <keyword>Internet-Draft</keyword>
    <keyword>SIP Device Instance Identifier</keyword>
    <abstract>
      <t>
Communication systems often have situations in which the party at the far end of
the call changes, making it necessary to have a way to notify the near end of
the new identity at the far end. This draft discusses ways to update this
"connected party" information in SIP. </t>
    </abstract>
  </front>
  <middle>
    <section title="Conventions and Definitions">
      <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">RFC-2119</xref>. </t>
</section>

<section title="Introduction and Use Cases">
<t>
SIP<xref target="RFC3261"/> initiates sessions but it also provides information
on the identities of the parties at both ends of a session. This is necessary as
users find it very desirable for knowing how to deal with the communications
that SIP is initiating. As a call proceeds, these identities may change. This
can happen for many reasons: calls are forwarded, calls are parked and picked
up, calls are transferred, calls are queued to be picked up by a pool of agents,
and so on. The use cases here are split into two categories: where the identity
change happens in an early dialog or a connected call, or where the callee's or
the caller's identity changes. </t>

<section title="Connected UAS or UAC Updated">
<t>
These cases do not involve early dialogs. Since the call has been established,
the use cases are symmetrical. Either the UAS or UAC could need to be updated in
any of these cases.  </t>
<t>
The classic case is a call that is transferred.  </t>
<t>
The UAS has originally answered the call with the identity Help Desk but wishes
to change it, mid-call, to Alice. </t>


</section>
<section title="Early UAC Updated">
<t>
In a typical example, phone A rings but user B remotely picks up the ringing
phone from a different one.  </t>
<t>
Call queuing in an ACD is another example. The call may initially by queued for
the "Help Desk" but later moved to ring Bob's phone.  </t>
<t>
It should be noted that the history requirements<xref
target="I-D.ietf-sipping-req-history"/> cover this case. </t>

</section>
<section title="Early UAS Updated">
<t>
First, Alan dials Charlie on behalf of another user, Bob in this case. While
Charlie's phone is ringing, Alan steps out of the call and lets Bob talk to
Charlie.  </t>

</section>
<section title="B2BUA">
<t>
All of these use cases seem to come up because there is a B2BUA involved. This
B2BUA may be acting as a call control system or it may be a PSTN inter-working
GW which is effectively a B2BUA with the PSTN connecting the two UAs that form
the B2BUA. It's fine to have a B2BUA connected to a P2P system; however, the
whole design of the B2BUA concept in SIP is to make B2BUA just look like a valid
peer to the P2P system.  </t>

</section>
</section>

<section title="Solutions using existing mechanisms">
<t>
These solutions are derived by looking at what would happen doing approximately
the same functionality in a P2P system and looking at the signalling the point
of view of the UA that is receiving the updated identity.  </t>


<section title="Connected UAS or UAC Updated ">
<t>
When A is in a connected call with B and B wishes to update the identity that A
sees to C, this is the same from A's point of view as B transferring the call to
C. In this case the identity can be updated by sending a new INVITE to A with
the From set to C and including a replaces header to indicate it replaces the
original call.  </t>

</section>
<section title="Early UAC Updated">
<t>
This can be handled in the same way as the Connected UAC. A new invite with a
replaces is sent.  </t>

</section>
<section title="Early UAS Updated">
<t>
Here the UAC wishes to change its identity and update it on all the UASs that it
has forked to while it had an outstanding INVITE. The transfer issues draft
<xref target="I-D.petrie-sipping-xfer-issues"/> clearly points out that the UAS
is a moving target due to forking with the "Consultative Turned Blind"
issues. Changing the identity of UAC complicates this even further because the
routing of the invite may have been dependent on identity of the UAS. For
example, calls from Private may go straight to voice mail while calls from Boss
get forked to office phone and cell phone.  </t>
<t>
It is highly likely that whatever solution is chosen to deal with the
"Consultative Turned Blind" problem in <xref
target="I-D.petrie-sipping-xfer-issues"/> can also be used to update identity in
this scenario. The recommendation here is to hold off on defining something
special for identity updates until the solution for the trasfer issues problem
is resolved.  </t>
<t>
In many cases, sending a new INVITE with replaces, waiting a little while, and
then sending a CANCEL to the original INVITE can work and will cause the correct
behavior.  </t>
</section>
</section>
<section title="Solutions based on UPDATE" anchor="update" >
<t>
User agents could send UPDATE requests that do not contain SDP, do change the To
and From headers, but do not change the tags in the to or from header.  Any
UPDATES received by a <xref target="RFC2543">RFC 2543</xref> system would fail
to match the transaction due to the changed to or from. This would not result in
the call failing but would only result in the identity failing to be displayed
correctly.  </t>
<t>
As an alternative to changing the To and From headers, a new Name header could
be created that represents the identity of the sender of the message.  </t>
<t>
The biggest problem with these approaches is that they make it very hard to
apply new policy to the call if the user's identity changes.  Consider the
example above. The identity of the caller determines where the call is forked;
with this approach, the system would not change where the call was being forked
if the identity of the caller changed.  </t>
</section>
<section title="Why PAI is useless">
<t>
PAI, described in <xref target="RFC3325">RFC 3325</xref>, was designed to work
in very limited trust domains. It is primarily useful when a UAC wishes its
identity to be anonymous to the UAS but the intermediate trust domain needs to
know the UAC's identity for legal call trace reasons. There are no legal call
trace requirements of this type from the UAS to the UAC. If the UAS wishes to
change its identity to Anonymous, there is no need to carry the real identity
along. It is important to understand this: the requirement solved by PAI is
asymmetrical and does not apply in the backwards direction.  </t>
<t>
The requirements driving the work in this document are about informing the party
at the far end of the call of a changed identity. PAI will never work for
this. The fundamental requirement for PAI is that as the PAI crosses from one
trust domain A to the next trust domain B, the next trust domain B must discard
it unless unless it can independently verify it. This is so because if B passes
it to any other element even inside its trust domain, those elements will assume
the PAI is true although B does not know that this is true. The end user device
that is capable of displaying the PAI information is never in the same trust
domain as the network elements, so it must discard this information as it comes
in.  RFC 3325 specifically says 
"However, if a User Agent Server receives a
message from a previous element that it does not trust, it MUST NOT use the
P-Asserted-Identity header field in any way."  
A UAS that sits in the user's
hand is not going to be trusted by the "network" trust domain. Trust domains are
symmetrical - you cannot have a trust domain in which the phone trusts the
network but the network does not trust the phone.  </t>
<t>
To summarize, given two trust domains A and B, even if you passed the PAI around
in responses in A, as soon as it got passed to B, it would be discarded or
unusable. If it got passed in a response to a proxy in B, 3325 says that "the
proxy MUST authenticate the originator of the message" which of course the proxy
cannot do for a response, so it would have to drop the PAI. There is no use case
in which the UA producing the PAI and the UA that could display a PAI to an end
user are in the same trust domain. A new header, like Name, could be defined as
described in <xref target="update"/> but PAI is not useful for this.  </t>

</section>

<section title="Recommendations">
<t>
</t>
</section>


<section title="Acknowledgments">
<t>
</t>
</section>
</middle>
<back>

 <references title="Normative References">

<reference anchor='I-D.ietf-sip-referredby'>
<front>
<title>The SIP Referred-By Mechanism</title>

<author initials='R' surname='Sparks' fullname='Robert Sparks'>
    <organization />
</author>

<date month='August' day='6' year='2003' />
</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-sip-referredby-03' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-sip-referredby-03.txt' />
</reference>

<reference anchor='I-D.ietf-sip-replaces'>
<front>
<title>The Session Inititation Protocol (SIP) 'Replaces' Header</title>

<author initials='B' surname='Biggs' fullname='Billy Biggs'>
    <organization />
</author>

<author initials='R' surname='Dean' fullname='Rick Dean'>
    <organization />
</author>

<author initials='R' surname='Mahy' fullname='Rohan Mahy'>
    <organization />
</author>

<date month='August' day='18' year='2003' />
</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-sip-replaces-04' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-sip-replaces-04.txt' />
</reference>


<reference anchor='I-D.petrie-sipping-xfer-issues'>
<front>
<title>SIP Transfer Issues</title>

<author initials='D' surname='Petrie' fullname='Dan Petrie'>
    <organization />
</author>

<date month='October' day='20' year='2003' />
</front>

<seriesInfo name='Internet-Draft' value='draft-petrie-sipping-xfer-issues-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-petrie-sipping-xfer-issues-00.txt' />
</reference>

<reference anchor='RFC3325'>

<front>
<title>Private Extensions to the Session Initiation Protocol (SIP) for Asserted Identity within Trusted Networks</title>
<author initials='C.' surname='Jennings' fullname='C. Jennings'>
<organization /></author>
<author initials='J.' surname='Peterson' fullname='J. Peterson'>
<organization /></author>
<author initials='M.' surname='Watson' fullname='M. Watson'>
<organization /></author>
<date month='November' year='2002' /></front>

<seriesInfo name='RFC' value='3325' />
</reference>

<reference anchor='RFC3261'>

<front>
<title>SIP: Session Initiation Protocol</title>
<author initials='J.' surname='Rosenberg' fullname='J. Rosenberg'>
<organization /></author>
<author initials='H.' surname='Schulzrinne' fullname='H. Schulzrinne'>
<organization /></author>
<author initials='G.' surname='Camarillo' fullname='G. Camarillo'>
<organization /></author>
<author initials='A.' surname='Johnston' fullname='A. Johnston'>
<organization /></author>
<author initials='J.' surname='Peterson' fullname='J. Peterson'>
<organization /></author>
<author initials='R.' surname='Sparks' fullname='R. Sparks'>
<organization /></author>
<author initials='M.' surname='Handley' fullname='M. Handley'>
<organization /></author>
<author initials='E.' surname='Schooler' fullname='E. Schooler'>
<organization /></author>
<date month='June' year='2002' /></front>

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


<reference anchor='RFC2119'>

<front>
<title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement
Levels</title>
<author initials='S.' surname='Bradner' fullname='Scott Bradner'>
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>sob@harvard.edu</email></address></author>
<date month='March' year='1997' />
<area>General</area>
<keyword>keyword</keyword>
<abstract>
<t>
   In many standards track documents several words are used to signify
   the requirements in the specification.  These words are often
   capitalized.  This document defines these words as they should be
   interpreted in IETF documents.  Authors who follow these guidelines
   should incorporate this phrase near the beginning of their document:

<list>
<t>
      The key words &quot;MUST&quot;, &quot;MUST NOT&quot;,
      &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;,
      &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;,
      &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be
      interpreted as described in RFC 2119.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement
   level of the document in which they are used.
</t></abstract></front>

<seriesInfo name='BCP' value='14' /> <seriesInfo name='RFC' value='2119' />
<format type='HTML' octets='14486'
target='http://xml.resource.org/public/rfc/html/rfc2119.html' /> <format
type='XML' octets='5661'
target='http://xml.resource.org/public/rfc/xml/rfc2119.xml' />
</reference>

    </references>
  <references title='Informative References'>

<reference anchor='I-D.ietf-sipping-qsig2sip'>
<front>
<title>Interworking between SIP and QSIG</title>

<author initials='J' surname='Elwell' fullname='John Elwell'>
    <organization />
</author>

<date month='August' day='13' year='2003' />
</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-sipping-qsig2sip-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-sipping-qsig2sip-02.txt' />
</reference>

<reference anchor='I-D.venkatar-sipping-called-name'>
<front>
<title>Enhancements to Asserted Identity to Enable Called Party Name Delivery  using SIP</title>

<author initials='V' surname='Venkataramanan' fullname='V Venkataramanan'>
    <organization />
</author>

<date month='June' day='4' year='2003' />
</front>

<seriesInfo name='Internet-Draft' value='draft-venkatar-sipping-called-name-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-venkatar-sipping-called-name-00.txt' />
</reference>

<reference anchor='I-D.ietf-sipping-req-history'>
<front>
<title>SIP Generic Request History Capability  Requirements</title>

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

<date month='June' day='24' year='2003' />
</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-sipping-req-history-04' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-sipping-req-history-04.txt' />
</reference>


<reference anchor='RFC2543'>

<front>
<title>SIP: Session Initiation Protocol</title>
<author initials='M.' surname='Handley' fullname='Mark Handley'>
<organization>AT&amp;T Center for Internet Research at ISCI (ACIRI)</organization>
<address>
<postal>
<street>1947 Center St.</street>
<street>Suite 600</street>
<city>Berkeley</city>
<region>CA</region>
<code>94704-119</code>
<country>US</country></postal>
<email>mjh@aciri.org</email></address></author>
<author initials='H.' surname='Schulzrinne' fullname='Henning Schulzrinne'>
<organization>Dept. of Computer Science, Columbia University</organization>
<address>
<postal>
<street>1214 Amsterdam Avenue</street>
<city>New York</city>
<region>NY</region>
<code>10027</code>
<country>US</country></postal>
<email>schulzrinne@cs.columbia.edu</email></address></author>
<author initials='E.' surname='Schooler' fullname='Eve Schooler'>
<organization>California Institute of Technology</organization>
<address>
<postal>
<street>Computer Science Department 256-80</street>
<city>Pasadena</city>
<region>CA</region>
<code>91125</code>
<country>US</country></postal>
<email>schooler@cs.caltech.edu</email></address></author>
<author initials='J.' surname='Rosenberg' fullname='Jonathan Rosenberg'>
<organization>Lucent Technologies, Bell Laboratories</organization>
<address>
<postal>
<street>101 Crawfords Corner Road</street>
<street>Rm. 4C-526</street>
<city>Holmdel</city>
<region>NJ</region>
<code>07733</code>
<country>US</country></postal>
<email>jdrosen@bell-labs.com</email></address></author>
<date month='March' year='1999' />
<abstract>
<t>The Session Initiation Protocol (SIP) is an application-layer control (signaling) protocol for creating, modifying and terminating sessions with one or more participants. These sessions include Internet multimedia conferences, Internet telephone calls and multimedia distribution. Members in a session can communicate via multicast or via a mesh of unicast relations, or a combination of these.</t>
<t>SIP invitations used to create sessions carry session descriptions which allow participants to agree on a set of compatible media types. SIP supports user mobility by proxying and redirecting requests to the user's current location. Users can register their current location.  SIP is not tied to any particular conference control protocol. SIP is designed to be independent of the lower-layer transport protocol and can be extended with additional capabilities.</t></abstract></front>

<seriesInfo name='RFC' value='2543' />
</reference>

	</references>
  </back>
</rfc>

