Internet Engineering Task Force Robert Sparks Internet Draft MCI WorldCom draft-sparks-sip-cc-transfer-00 March 2000 SIP Call Control : Transfer STATUS OF THIS MEMO This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026 [1]. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as work in progress. The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html Abstract This document defines a SIP extension within the new Call Control Framework to provide Call Transfer capabilities. Sparks [Page 1] Internet Draft CC Transfer March 2000 Table of Contents: 1 Overview ..........................................................3 2 Actors and Roles ..................................................4 3 Requirements ......................................................5 4 The TRANSFER Method ...............................................6 4.1 The Transfer-To Header...........................................6 4.2 Header Field Support for the TRANSFER Method.....................6 4.3 Message Body Inclusion...........................................7 4.4 Responses to the TRANSFER Method.................................8 4.5 Behavior of SIP User Agents......................................8 4.6 Behavior of SIP Registrars/Redirect Servers......................9 4.7 Behavior of SIP Proxies..........................................9 4.8 Security Considerations..........................................9 5 Example Uses ......................................................9 5.1 Unattended Transfer..............................................9 5.2 Unattended Transfer with Consultation Hold......................12 5.3 Attended Transfer...............................................13 5.4 Transfer with multiple parties..................................14 Author's Addresses...................................................16 6 Acknowledgments ..................................................16 7 References .......................................................16 MCI WorldCom [Page 2] Internet Draft CC Transfer March 2000 1 Overview This document defines a SIP [2] extension to provide Call Transfer capabilities. It is part of a family of Call Control extensions described in the Call Control Framework document [3]. The mechanisms discussed here are most closely related to traditional unattended and consultation hold transfers. Discussion of attended transfer (where all parties are briefly in a conference) is deferred until the conferencing features in this framework are addressed. This work has roots in draft-ietf-sip-cc-01 [4] but some basic semantics are different. In particular, transfers are achieved through a new method and does not terminate the original signaling relationship. By disassociating transfers from the processing of BYE, these changes facilitate recovery of failed transfers and clarify state management in the participating entities. Implementers that started with the sip-cc-01 BYE-ALSO technique for blind-transfer should find it straightforward to migrate to the mechanisms set forth here. MCI WorldCom [Page 3] Internet Draft CC Transfer March 2000 2 Actors and Roles There are three actors in a given transfer event, each playing one of the following roles: Transferee - the party being transferred to the Transfer Target. Transferor - the party initiating the transfer (and leaving the call). Transfer Target - the new party being introduced into a call with the Transferee. The following roles are used to describe transfer requirements and scenarios: Originator - wishes to place a call to the Recipient. This actor is the source of the first INVITE in a session, to either a Facilitator or a Screener. Facilitator - receives a call or out-of-band request from the Originator, establishes a call to the Recipient through the Screener, and connects the Originator to the Recipient. Screener - receives a call ultimately intended for the Recipient and transfers the calling party to the Recipient if appropriate. Recipient - the party the Originator is ultimately connected to. MCI WorldCom [Page 4] Internet Draft CC Transfer March 2000 3 Requirements 1. Any party in a SIP session MUST be able to transfer any other party in that session at any point in that session. 2. The Transferor and the Transferee MUST NOT be removed from a session as part of a transfer transaction (see comment 1). 3. The Transferor MUST know whether or not the transfer was successful (see comment 2). Explicit non-Requirements 1. There is no requirement for the Transfer Target to be notified that he is receiving an INVITE as the result of a TRANSFER request (see comment 2). 2. Pending results from the SIP security infrastructure taskforce, there is no requirement for the Transfer Target to receive secured assurance of the Transferor's identity through SIP (see comment 2). Comments on Requirements 1. At first glance, requirement 2 may seem to indicate that the user experience in a transfer must be significantly different from what a current PBX or Centrex user expects. As the call-flows in this document show, this is not the case. A client MAY preserve the current experience. In fact, without this requirement, some forms of the current experience (ringback on unattended transfer failure for instance) will be lost. 2. Those requirements and non-requirements referencing comment 2 are significantly different from those in draft-ietf-sip-cc-01. MCI WorldCom [Page 5] Internet Draft CC Transfer March 2000 4 The TRANSFER Method TRANSFER is a SIP method as defined by [2]. The TRANSFER method indicates that the recipient (the transferee) should contact a third party (the transfer target) using the contact information provided in the method. A success response indicates that the transferee was able to establish a session with the transfer target. The TRANSFER method follows the session's current signaling path. In particular, the Request-URI of the TRANSFER method identifies the transferee. Unless stated otherwise, the protocol for emitting and responding to a TRANSFER request are identical to those for a BYE request in [2]. The behavior of SIP entities not implementing the TRANSFER (or any other unknown) method is explicitly defined in [2] and is not discussed further here. A successful TRANSFER transaction does not terminate the session between the transferor and the transferee. If those parties wish to terminate their session, they must do so with a subsequent BYE request. 4.1 The Transfer-To Header Transfer-To is a request-header as defined by [2]. It may only appear in a TRANSFER request. It identifies the transfer target. Transfer-To = "Transfer-To" ":" ( name-addr | addr-spec ) A TRANSFER method MUST contain exactly one Transfer-To header. The Transfer-To header MAY be encrypted as part of end-end encryption. The Transfer-To header has no short form. The Contact header is an important part of the Route/Record-Route mechanism and is not available for this task. 4.2 Header Field Support for the TRANSFER Method This table adds a column to tables 4 and 5 in [2], describing header presence in a TRANSFER method. See [2] for a key for the symbols used. A row for the Transfer-To: request-header should be inferred, mandatory for TRANSFER, not applicable for all other methods. The enc and e-e columns in [2] apply to the TRANSFER method unmodified. MCI WorldCom [Page 6] Internet Draft CC Transfer March 2000 Header Where TRANSFER Accept R - Accept-Encoding R - Accept-Language R o Allow R - Allow 405 m Authorization R o Call-ID gc m Contact R o Contact 1xx - Contact 2-6xx o Content-Encoding e - Content-Length e o <-SHOULD be present and Content-Type e - have a value of zero CSeq gc m Date g o Encryption g o Expires R o From gc m Hide R o Max-Forwards R o Organization g o Priority R - Proxy-Authenticate 407 o Proxy-Authorization R o Proxy-Require R o Require R o Retry-After R - Retry-After 404,480,486 o Retry-After 503 o Retry-After 600,603 o Response-Key R o Record-Route R o Record-Route 2xx o Route R o Server r o Subject R - Timestamp g o To gc(1) m Unsupported 420 o User-Agent g o Via gc(2) m Warning r o WWW-Authenticate 401 o 4.3 Message Body Inclusion A TRANSFER method MUST NOT contain a body. MCI WorldCom [Page 7] Internet Draft CC Transfer March 2000 4.4 Extension Negotiation A TRANSFER request MUST contain the header Requires: cc.transfer 4.5 Responses to the TRANSFER Method An agent responding to a TRANSFER Method MUST return a 400 Bad Request if the request contained zero or more than one Transfer-To headers. An agent (including proxies generating local responses) MAY return a 100 Trying or any appropriate 400-600 class response as prescribed by [2]. If the transferee's agent decides to attempt the transfer, a 200 OK response MUST be returned by the if it was able to establish a session with the transferor, otherwise a 603 Decline MUST be returned. In particular, the transferee's agent MUST NOT mirror the transfer targets response to the transferee's invite. 4.6 Behavior of SIP User Agents UA receiving a well-formed TRANSFER request SHOULD request approval from the user to proceed. In the absence of that request, or upon receiving approval from the user, the UA MUST submit an INVITE to the resource identified by the Transfer-To: header using the Call-ID from the TRANSFER request. The remainder of that INVITE message is formed exactly as if the UA were placing a new call to that resource. In particular, media negotiation between the transferee and the transfer target is not affected by the media that had been negotiated between the transferor and the transferee. In accordance with [2], the UA SHOULD issue a provisional response to the TRANSFER method if it cannot issue a final response within 200ms of its receipt. The appropriate response to issue on receipt of a final response to the INVITE is discussed in "Responses to the TRANSFER Method". The TRANSFER transaction does not terminate the session between the transferor and the transferee. When the UAs for those parties should terminate that session, they must do so explicitly with a BYE request. A TRANSFER request is meaningful only in the context of an existing session. A UA receiving a TRANSFER request for an unknown call leg MUST return a 481 Call Leg/Transaction Does Not Exist and MUST NOT issue an INVITE to resource identified by that request's Transfer-To header as part of the TRANSFER transaction. MCI WorldCom [Page 8] Internet Draft CC Transfer March 2000 The disposition of the media streams between the transferor and the transferee is not altered by the TRANSFER method. Agents may alter a session's media through additional signaling. For example, they may make use of the SIP hold re-INVITE [2] or the conferencing extensions provided by this framework. 4.7 Behavior of SIP Registrars/Redirect Servers Since TRANSFER has meaning only in the context of an existing session, a Registrar/Redirect Server that is not also playing the role of a User Agent (never issues a 200 OK in response to an INVITE) MUST respond to a TRANSFER request with a 481 Call Leg/Transaction Does Not Exist. 4.8 Behavior of SIP Proxies SIP Proxies do not require modification to support the TRANSFER method. Specifically, as required by [2], a proxy should process a TRANSFER request the same way it processes an OPTIONS request. 4.9 Security Considerations The security requirements of [2] apply to the TRANSFER method. This draft does not provide a mechanism for the Transfer Target to be alerted that this is a transferred call or to be assured of the identity of the Transferor. This mechanism relies on providing contact information for the transfer target to the transferee. Care should be taken to provide a suitably restricted URI if the transfer target is a protected resource. 5 Example Uses 5.1 Unattended Transfer Unattended Transfer consists of the Transferor providing the Transfer Target's contact to the Transferee. The Transferee attempts to establish a session using that contact and reports the results of that attempt to the Transferor. The signaling relationship between the Transferor and Transferee is not terminated, so the call is recoverable if the Transfer Target cannot be reached. Note that the Transfer Target's contact information has been exposed to the MCI WorldCom [Page 9] Internet Draft CC Transfer March 2000 Transferee. The provided contact can be used to make new calls in the future. The diagrams below show indicate the first line of each message. All messages in a particular diagram share the same Call-ID. In these diagrams, media is managed through reINVITE holds, but using other mechanisms (mixing multiple media streams at the UA or using the conferencing extensions for example) are valid. 5.1.1 Successful Unattended Transfer Transferor Transferee Transfer | | Target | INVITE | | |<-------------------| | | 200 OK | | |------------------->| | | ACK | | |<-------------------| | | INVITE (hold) | | |------------------->| | | 200 OK | | |<-------------------| | | ACK | | |------------------->| | | TRANSFER | | |------------------->| | | 100 Trying | | |<-------------------| | | | INVITE | | |------------------->| | | 200 OK | | |<-------------------| | | ACK | | |------------------->| | 200 OK | | |<-------------------| | | BYE | | |------------------->| | | 200 OK | | |<-------------------| | | | BYE | | |<-------------------| | | 200 OK | | |------------------->| MCI WorldCom [Page 10] Internet Draft CC Transfer March 2000 5.1.2 Failed Unattended Transfer Transferor Transferee Transfer | | Target | | | | INVITE | | |<-------------------| | | 200 OK | | |------------------->| | | ACK | | |<-------------------| | | INVITE (hold) | | |------------------->| | | 200 OK | | |<-------------------| | | ACK | | |------------------->| | | TRANSFER | | |------------------->| | | 100 Trying | | |<-------------------| | | | INVITE | | |------------------->| | | 486 Busy Here | | |<-------------------| | | ACK | | |------------------->| | 603 Decline | | |<-------------------| | | INVITE (unhold) | | |------------------->| | | 200 OK | | |<-------------------| | | ACK | | |------------------->| | | BYE | | |------------------->| | | 200 OK | | |<-------------------| | MCI WorldCom [Page 11] Internet Draft CC Transfer March 2000 5.2 Unattended Transfer with Consultation Hold Transfer with Consultation Hold involves a session between the transferor and the transfer target before the transfer actually takes place. This is implemented with SIP Hold and Unattended Transfer as described above. 5.2.1 Variation 1 : Exposes transfer target The transferor places the transferee on hold, establishes a call with the transfer target to alert them to the impending transfer, terminates the connection with the transfer target, then proceeds with unattended transfer as above. This variation can be used to provide an experience similar to that expected by current PBX and Centrex users. To (hopefully) improve clarity, non-TRANSFER transactions have been collapsed into one indicator with the arrow showing the direction of the request. Transferor Transferee Transfer | | Target | | | Call-ID:1 | INVITE/200 OK/ACK | | |<-------------------| | Call-ID:1 | INVITE (hold)/200 OK/ACK | |------------------->| | Call-ID:2 | INVITE/200 OK/ACK | | |---------------------------------------->| Call-ID:2 | BYE/200 OK | | |---------------------------------------->| Call-ID:1 | TRANSFER | | |------------------->| | | 100 Trying | | |<-------------------| | Call-ID:1 | | INVITE/200 OK/ACK | | |------------------->| | 200 OK | | |<-------------------| | Call-ID:1 | BYE/200 OK | | |------------------->| | Call-ID:1 | | BYE/200 OK | | |<-------------------| MCI WorldCom [Page 12] Internet Draft CC Transfer March 2000 5.2.2 Variation 2 : Protects transfer target The transferor places the transferee on hold, establishes a call with the transfer target and then reverses their roles, transferring the original transfer target to the original transferee. This has the advantage of hiding information about the original transfer target from the original transferee. On the other hand, the Transferee's experience is different that in current systems. The Transferee is effectively "called back" by the Transfer Target. Transferor Transferee Transfer | | Target | | | Call-ID:1 | INVITE/200 OK/ACK | | |<-------------------| | Call-ID:1 | INVITE (hold)/200 OK/ACK | |------------------->| | Call-ID:2 | INVITE/200 OK/ACK | | |---------------------------------------->| Call-ID:2 | INVITE (hold)/200 OK/ACK | |---------------------------------------->| Call-ID:2 | TRANSFER | | |---------------------------------------->| | 100 Trying | | |<----------------------------------------| Call-ID:2 | | INVITE/200 OK/ACK | | |<-------------------| | 200 OK | | |<----------------------------------------| Call-ID:1 | BYE/200 OK | | |------------------->| | Call-ID:2 | BYE/200 OK | | |---------------------------------------->| Call-ID:2 | | BYE/200 OK | | |------------------->| 5.3 Attended Transfer In an attended transfer, the three actors participate in an ad-hoc conference as part of the event. Discussion of the implementation of attended transfer is thus deferred until the conferencing portion of the Call Control framework has been addressed. MCI WorldCom [Page 13] Internet Draft CC Transfer March 2000 5.4 Transfer with multiple parties In this example the Originator places call to the Facilitator who reaches the Recipient through the Screener. The Recipient's contact information is exposed to the Facilitator and the Originator. This example is provided for clarification of the semantics of the TRANSFER method only and should not be used as the design of an implementation. Originator Facilitator Screener Recipient Call-ID | | | | 1 |INVITE/200 OK/ACK | |"Get Fred for me!" |----------->| | | "Right away!" 1 |INVITE (hold)/200 OK/ACK | | |<-----------| | | 2 | |INVITE/200 OK/ACK |"I have a call | |----------->| |from Mary for Fred" 2 | |INVITE (hold)/200 OK/ACK "Hold please" | |<-----------| | 3 | | |INVITE/200 OK/ACK | | |--------->|"You have a call | | | |from Mary" | | | | "Put her through" 3 | | |INVITE (hold)/200 OK/ACK | | |--------->| 2 | |TRANSFER | | | |<-----------| | | |100 Trying | | | |----------->| | 2 | |INVITE/200 OK/ACK | | |---------------------->|"This is Fred" | |200 OK | | "Please hold for | |----------->| | Mary" 2 | |BYE/200 OK | | | |<-----------| | 3 | | |BYE/200 OK| | | |--------->| 2 | |INVITE (hold)/200 OK/ACK | |---------------------->| 1 |TRANSFER | | | |<-----------| | | |100 Trying | | | |----------->| | | 1 |INVITE/200 OK/ACK | | |----------------------------------->| "Hey Fred" |200 OK | | | "Hello Mary" |----------->| | | 1 |BYE/200 OK | | | |<-----------| | | MCI WorldCom [Page 14] Internet Draft CC Transfer March 2000 2 | |BYE/200 OK | | | |---------------------->| 1 |BYE/200 OK | | | |<-----------------------------------| "See you later" MCI WorldCom [Page 15] Internet Draft CC Transfer March 2000 Author's Addresses Robert Sparks MCI WorldCom 2400 N Glenville Drive Phone: +1-972-729-5241 Richardson, TX 75082 Email: Robert.Sparks@wcom.com 6 Acknowledgments The author thanks the following for their contribution to this work: Ben Campbell, Chris Cunningham, Steve Donovan, Alan Johnston, Kevin Summers and Dean Willis. 7 References [1] S. Bradner, "The Internet Standards Process -- Revision 3", BCP 9, RFC2026, October 1996. [2] M. Handley, H. Schulzrinne, E. Schooler, and J. Rosenberg, "SIP: Session Initiation Protocol", RFC 2543, March 1999. [3] B. Campbell, "Framework for SIP Call Control Extensions", Internet Draft draft-campbell-sip-cc-framework-00, Internet Engineering Task Force, March 2000. Work in Progress. [4] H. Schulzrinne, J. Rosenberg, "SIP Call Control Services", Internet Draft draft-ietf-sip-cc-01, Internet Engineering Task Force, June 17, 1999 Work in Progress (expired). MCI WorldCom [Page 16]