draft-ietf-sip-service-examples-00.txt   draft-ietf-sip-service-examples-01.txt 
Internet Engineering Task Force Alan Johnston Internet Engineering Task Force Alan Johnston
Internet Draft WorldCom Internet Draft WorldCom
Document: draft-ietf-sip-service-examples-00.txt Robert Sparks Document: draft-ietf-sip-service-examples-01.txt Robert Sparks
Category: Informational Chris Cunningham Category: Informational Chris Cunningham
November 2000 Steve Donovan March 2001 Steve Donovan
Expires: May 2001 dynamicsoft Expires: September 2001 dynamicsoft
Kevin Summers Kevin Summers
TTI Sonus
SIP Telephony Service Examples SIP Service Examples
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026[1]. all provisions of Section 10 of RFC2026[1].
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that other Task Force (IETF), its areas, and its working groups. Note that other
groups may also distribute working documents as Internet-Drafts. groups may also distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet- Drafts as reference time. It is inappropriate to use Internet- Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
Abstract Abstract
This document gives examples of SIP (Session Initiation Protocol) This informational document gives examples of SIP (Session Initiation
telephony services. This covers most features offered in so-called Protocol) services. This covers most features offered in so-called
Centrex offerings from local exchange carriers and PBX (Private Centrex offerings from local exchange carriers and PBX (Private
Branch Exchange) features. Most of the services shown in this Branch Exchange) features. Most of the services shown in this
document are implemented in the SIP User Agents, although some document are implemented in the SIP User Agents, although some
require the assistance of a SIP Proxy. Some require some extensions require the assistance of a SIP Proxy. Some require some extensions
to SIP including third party call control (3pcc) extensions such as to SIP including third party call control (3pcc) extensions such as
the REFER method. These features are not intented to be an exhaustive the REFER method. These features are not intented to be an exhaustive
set, but rather show implementations of common features likely to be set, but rather show implementations of common features likely to be
implemented on SIP IP Telephones in a business environment. implemented on SIP IP Telephones in a business environment.
Table of Contents Table of Contents
1 Overview...................................................3 1 Overview...................................................3
1.1 Legend for Message Flows...................................3 1.1Legend for Message Flows ......................................4
1.2 Document History...........................................4 1.2Document History ..............................................4
2 IP Telephony Services Features Call Flows..................5 2 IP Telephony Services Features Call Flows..................5
2.1 Call Hold..................................................5 2.1Call Hold .....................................................5
2.2 Music on Hold.............................................15 2.2Music on Hold/Call Park ......................................15
2.3 Consultation Hold.........................................24 2.3Consultation Hold ............................................22
2.4 Unattended Transfer.......................................38 2.4Unattended Transfer ..........................................36
2.5 Attended Transfer.........................................44 2.5Attended Transfer ............................................42
2.6 Call Forwarding Unconditional.............................53 2.6Call Forwarding Unconditional ................................51
2.7 Call Forwarding - Busy....................................58 2.7Call Forwarding - Busy .......................................56
2.8 Call Forwarding - No Answer...............................64 2.8Call Forwarding - No Answer ..................................62
2.9 3-way Conference..........................................71 2.93-way Conference .............................................69
2.10 Single Line Extension.....................................71 2.10 Single Line Extension.....................................69
2.11 Find-Me...................................................72 2.11 Find-Me...................................................70
2.12 Call Management (Incoming Call Screening).................81 2.12 Call Management (Incoming Call Screening).................79
2.13 Call Management (Outgoing Call Screening).................84 2.13 Call Management (Outgoing Call Screening).................83
3 Acknowledgements..........................................88 2.14 Call Pickup...............................................86
4 References................................................89 3 References................................................95
5 Author's Addresses........................................90 4 Author's Addresses........................................96
1 Overview 1 Overview
This document provides call flows detailing a SIP implementation of This informational document provides call flows detailing a SIP
the following traditional telephony services: implementation of the following traditional telephony services:
Call Hold (with Music) Consultation Hold Call Hold Music on Hold/Call Park
Unattended Transfer Attended Transfer Unattended Transfer Consultation Hold
Unconditional Call Forwarding Busy Call Forwarding Unconditional Call Forwarding Attended Transfer
No Answer Call Forwarding 3-way Call No Answer Call Forwarding Busy Call Forwarding
Single-Line Extension Find-Me Single-Line Extension 3-way Call
Incoming Call Screening Outgoing Call Screening Incoming Call Screening Find-Me
Call Pickup Outgoing Call Screening
It is the hope of the authors that this document will be useful for It is the hope of the authors that this document will be useful for
SIP implementors, users, designers, and protocol researchers alike SIP implementors, users, designers, and protocol researchers alike
and will help further the goal of a standard SIP implementation for and will help further the goal of a standard SIP implementation for
IP Telephony. It is envisioned that as changes to the standard and IP Telephony. It is envisioned that as changes to the standard and
additional RFCs are added that this document will reflect those additional RFCs are added that this document will reflect those
changes and represent the current state of a standard SIP IP changes and represent the current state of a standard SIP IP
Telephony implementation. Telephony implementation.
These flows assume the functionality described in "SIP Telephony These flows assume the functionality described in the SIP Call Flow
Call Flow Examples" [2], which explores basic behavior and PSTN Examples document [2], which explores basic behavior and PSTN
internetworking. Some of the scenarios described herein make use of internetworking. Some of the scenarios described herein make use of
"SIP Call Control Transfer" [3]. "SIP Call Control Transfer" [3].
These flows were prepared assuming a network of proxies, registrars, These flows were prepared assuming a network of proxies, registrars,
PSTN gateways, and other SIP servers that have a pre-established PSTN gateways, and other SIP servers that have a pre-established
trust relationship with each other, secured through other means than trust relationship with each other, secured through other means than
SIP. User agents wishing to use the services in this network are SIP. User agents wishing to use the services in this network are
required to authenticate themselves with an edge proxy using SIP required to authenticate themselves with an edge proxy using SIP
Digest. To improve the clarity of this document, authentication of Digest. To improve the clarity of this document, authentication of
User Agents is not explicitly shown in all flows. User Agents is not explicitly shown in all flows, except where
authentication directly relates to the service example.
These flows use SIP as defined by RFC2543 [4]. These flows use SIP as defined by RFC 2543 [4] with some noted
updates for RFC 2543bis. Note that this document is informational,
and nothing stated here should be taken as normative. RFC 2543 and
the other referenced documents are definitive as far as protocol
issues are concerned. Also, these flows do not represent the only
way to implement these services - other approaches such as Back-to-
Back User Agents (B2BUA) may be more appropriate in some
circumstances.
Each call flow is presented with a textual description of the Each call flow is presented with a textual description of the
scenario, a message flow diagram showing the messages exchanged scenario, a message flow diagram showing the messages exchanged
between separate network elements, and the detailed contents of each between separate network elements, and the detailed contents of each
message shown in the diagram. message shown in the diagram.
1.1 Legend for Message Flows 1.1 Legend for Message Flows
Dashed lines (---) represent control messages that are mandatory to Dashed lines (---) represent control messages that are mandatory to
the call scenario. These control messages can be SIP or PSTN the call scenario. These control messages can be SIP or PSTN
skipping to change at page 5, line 5 skipping to change at page 4, line 34
The first version of this document was the Internet-Draft The first version of this document was the Internet-Draft
"draft-sparks-sip-service-examples.txt" October 1999. "draft-sparks-sip-service-examples.txt" October 1999.
The next version was combined with the SIP Telephony Call Flows The next version was combined with the SIP Telephony Call Flows
document into the "draft-ietf-sip-call-flows-00.txt" April 2000. document into the "draft-ietf-sip-call-flows-00.txt" April 2000.
This version is based on Section 7 of that document with many of the This version is based on Section 7 of that document with many of the
examples extensively rewritten using the REFER method. examples extensively rewritten using the REFER method.
1.3 Changes since 00
- Moddified all REFER flows to include 202 Accepted and NOTIFY
result message.
- Removed "Telephony" from title of document.
- Added note on 2.9 on use of REFER to exit 3-way conference.
- Modified Music on Hold/Call Park flow (2.2).
- Modified order of messages in transfers (2.4 and 2.5) to more
closely resemble PSTN experience.
- Added Call Pickup flow (2.13).
- Added editorial notes on usefulness of Replaces header.
2 IP Telephony Services Features Call Flows 2 IP Telephony Services Features Call Flows
These call flows show how a number of standard telephony features can These call flows show how a number of standard telephony features can
be implemented using SIP. They are not meant to represent a complete be implemented using SIP. They are not meant to represent a complete
set. Some calls make use of SIP Call Control Extensions[3]. set. Some calls make use of SIP Call Control Extensions[3].
2.1 Call Hold 2.1 Call Hold
User A Proxy User B User A Proxy User B
| | | | | |
skipping to change at page 6, line 9 skipping to change at page 6, line 9
|<=============================>| |<=============================>|
| BYE F22 | | | BYE F22 | |
|--------------->| BYE F23 | |--------------->| BYE F23 |
| |------------->| | |------------->|
| | 200 OK F24 | | | 200 OK F24 |
| 200 OK F25 |<-------------| | 200 OK F25 |<-------------|
|<---------------| | |<---------------| |
| | | | | |
User A calls User B, User B places call on hold. User B then takes User A calls User B, User B places call on hold. User B then takes
call off hold. User A hangs up call. call off hold. Note that either party can take the other party off
of hold. User A hangs up call.
Message Details Message Details
F1 INVITE A -> Proxy 1 F1 INVITE A -> Proxy 1
INVITE sip:UserB@there.com SIP/2.0 INVITE sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com> To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
skipping to change at page 15, line 5 skipping to change at page 15, line 5
F25 200 OK Proxy 1 -> A F25 200 OK Proxy 1 -> A
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>;tag=1234567 From: BigGuy <sip:UserA@here.com>;tag=1234567
To: LittleGuy <sip:UserB@there.com>;tag=314159 To: LittleGuy <sip:UserB@there.com>;tag=314159
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 2 BYE CSeq: 2 BYE
Content-Length: 0 Content-Length: 0
2.2 Music on Hold 2.2 Music on Hold/Call Park
User A User B Music Server User A User B Music/Park Server
| | | | | |
| INVITE F1 | | | INVITE F1 | |
|------------->| | |------------->| |
| 100 Trying F2| | |180 Ringing F2| |
|<-------------| |
|180 Ringing F3| |
|<-------------| | |<-------------| |
| 200 OK F4 | | | 200 OK F3 | |
|<-------------| | |<-------------| |
| ACK F5 | | | ACK F4 | |
|------------->| | |------------->| |
| RTP Media | | | RTP Media | |
|<============>| | |<============>| |
| | | | User B Parks Call |
|INVITE (c=0) F6 | | | REFER Refer-To: A F5
|<-------------| | | |------------->|
| 200 OK F7 | | | | 202 F6 |
|------------->| | | |------------->|
| ACK F8 | | | INVITE F7 Referred-By: B |
|<-------------| |
| | |
| No RTP Sent! | |
| | |
| REFER Refer-To: sip:music@server.com F9
|<-------------| |
| 100 F10 | |
|------------->| |
| INVITE F11 Referred-By: B |
|---------------------------->|
| 200 OK a=sendonly F12 |
|<----------------------------| |<----------------------------|
| ACK F13 | | 200 OK F8 |
|---------------------------->| |---------------------------->|
| ACK F9 |
|<----------------------------|
| RTP Music | | RTP Music |
|<============================| |<===========================>|
| 200 OK F14 | | | BYE F10 | |
|------------->| | |------------->| NOTIFY F12 |
| | | | 200 OK F11 |<-------------|
| User A is taken off Hold | |<-------------| 200 OK F13 |
| |------------->|
| User B picks up the call |
| | | | | |
| REFER Refer-To: music@server.com;method=BYE F15 | INVITE F14 | |
|<-------------| | |<-------------| |
| 100 F16 | | | 200 F15 | |
|------------->| | |------------->| |
| ACK F16 | |
|<-------------| |
| RTP Media | |
|<============>| |
| BYE F17 | | BYE F17 |
|---------------------------->| |---------------------------->|
| 200 OK F18 | | 200 OK F18 |
|<----------------------------| |<----------------------------|
| | |
| No more RTP Music | | No more RTP Music |
| | |
| 200 OK F19 | |
|------------->| |
| INVITE F20 | |
|<-------------| |
| 200 OK F21 | |
|------------->| |
| ACK F22 | |
|<-------------| |
| RTP | |
|<============>| |
| | |
In this example, User A calls User B. User B then places User A on In this example, User A calls User B. User B then parks the call at
hold, then REFERs User A to a Music Server for the music on hold the Music/Park Server by sending a REFER to the Music/Park Server.
service. User A agrees to the music on hold and sends an INVITE to
the Music Server to establish the one way media session. Before User The server sends an INVITE to A which replaces the session between A
B takes User A off hold, a REFER is sent to tell User A to send a BYE and B. The call is accepted by A and causes A to send a BYE to B.
to the Music Server to stop the music. Then User B takes User A off Note that the Replaces header is needed in this INVITE. User B
hold. receives notification of the successful park, and also receives the
Call-ID in the application/sip body of the NOTIFY response. When
User B wishes to retrieve the call, a new INVITE is sent to A which
replaces the session with the Music/Park Server. User A accepts the
call and sends a BYE to the Music/Park Server. Note that the
Replaces header is needed in this INVITE as well. If someone besides
User B retrieves the call, then this becomes Call Park and Pickup.
Message Details. Message Details.
F1 INVITE A -> B F1 INVITE A -> B
INVITE sip:UserB@there.com SIP/2.0 INVITE sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com> To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
skipping to change at page 16, line 50 skipping to change at page 16, line 38
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserA 2890844526 2890844526 IN IP4 client.here.com o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP s=Session SDP
c=IN IP4 100.101.102.103 c=IN IP4 100.101.102.103
t=3034423619 0 t=3034423619 0
m=audio 49170 RTP/AVP 0 m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F2 (100 Trying) B -> A F2 180 Ringing B -> A
SIP/2.0 100 Trying
Via: SIP/2.0/UDP there.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345601@here.com
CSeq: 1 INVITE
Content-Length: 0
F3 180 Ringing B -> A
SIP/2.0 180 Ringing SIP/2.0 180 Ringing
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=314159 To: LittleGuy <sip:UserB@there.com>;tag=314159
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 1 INVITE CSeq: 1 INVITE
Content-Length: 0 Content-Length: 0
F4 200 OK B -> A F3 200 OK B -> A
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=314159 To: LittleGuy <sip:UserB@there.com>;tag=314159
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 1 INVITE CSeq: 1 INVITE
Contact: LittleGuy <sip:UserB@there.com> Contact: LittleGuy <sip:UserB@there.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserB 2890844527 2890844527 IN IP4 client.there.com o=UserB 2890844527 2890844527 IN IP4 client.there.com
s=Session SDP s=Session SDP
c=IN IP4 110.111.112.113 c=IN IP4 110.111.112.113
t=3034423619 0 t=3034423619 0
m=audio 3456 RTP/AVP 0 m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F5 ACK A -> B F4 ACK A -> B
ACK sip:UserA@here.com SIP/2.0 ACK sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=314159 To: LittleGuy <sip:UserB@there.com>;tag=314159
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 1 ACK CSeq: 1 ACK
Content-Length: 0 Content-Length: 0
/* B places A on hold */
F6 INVITE B -> A
INVITE sip:UserA@here.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=314159
To: BigGuy <sip:UserA@here.com>
Call-ID: 12345601@here.com
CSeq: 1 INVITE
Contact: LittleGuy <sip:UserB@there.com>
Content-Type: application/sdp
Content-Length: ...
v=0
o=UserB 2890844527 2890844527 IN IP4 client.there.com
s=Session SDP
c=IN IP4 0.0.0.0
t=3034423619 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F7 200 OK A -> B
SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=314159
To: BigGuy <sip:UserA@here.com>
Call-ID: 12345601@here.com
CSeq: 1 INVITE
Contact: BigGuy <sip:UserA@here.com>
Content-Type: application/sdp
Content-Length: ...
v=0
o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP
c=IN IP4 0.0.0.0
t=3034423619 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F8 ACK B -> A
ACK sip:UserA@here.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=314159
To: BigGuy <sip:UserA@here.com>
Call-ID: 12345601@here.com
CSeq: 1 ACK
Content-Length: 0
/* User B REFERS User A to a Music On Hold Server */ /* User B REFERs Music Server to establish session with A which
replaces the established session between A and B */
F9 REFER B -> A F5 REFER B -> Music Server
REFER sip:UserA@here.com SIP/2.0 REFER sip:music@server.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=314159 From: LittleGuy <sip:UserB@there.com>
To: BigGuy <sip:UserA@here.com> To: Music Server <sip:music@server.com>
Call-ID: 12345601@here.com Call-ID: 4802029847@there.com
CSeq: 2 REFER CSeq: 1 REFER
Refer-To: <sip:music@server.com> Refer-To: <sip:UserA@here.com>
Referred-By: <sip:UserB@there.com>
Content-Length: 0 Content-Length: 0
F10 (100 Trying) A -> B F6 202 Accepted Music Server -> B
SIP/2.0 100 Trying SIP/2.0 202 Accepted
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=314159 From: LittleGuy <sip:UserB@there.com>;tag=56323
To: BigGuy <sip:UserA@here.com> To: Music Server <sip:music@server.com>
Call-ID: 12345601@here.com Call-ID: 4802029847@there.com
CSeq: 2 REFER CSeq: 1 REFER
Content-Length: 0 Content-Length: 0
/* User A connects to Music On Hold Server */ /* Music Server places call to User A to replace session between A
and B */
F11 INVITE A -> Music Server F7 INVITE Music Server -> A
INVITE sip:music@server.com SIP/2.0 INVITE sip:UserA@here.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP server.com:5060
From: BigGuy <sip:UserA@here.com> From: <sip:music@server.com>
To: <sip:music@server.com> To: BigGuy <sip:UserA@here.com>
Call-ID: 12345601@here.com Call-ID: a5-75-34-12-76@server.com
CSeq: 2 INVITE CSeq: 1 INVITE
Contact: BigGuy <sip:UserA@here.com>
Referred-By: <sip:UserB@there.com> Referred-By: <sip:UserB@there.com>
Contact: <sip:music@server.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserA 2890844526 2890844526 IN IP4 client.here.com o=MusicServer 2890844526 2890844526 IN IP4 music.server.com
s=Session SDP s=Session SDP
c=IN IP4 100.101.102.103 c=IN IP4 50.60.70.80
t=3034423619 0 t=3034423619 0
m=audio 49170 RTP/AVP 0 m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
a=recvonly
F12 200 OK Music Server -> A F8 200 OK A-> Music Server
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP server.com:5060
From: BigGuy <sip:UserA@here.com> From: <sip:music@server.com>
To: <sip:music@server.com>;tag=se83kw1 To: BigGuy <sip:UserA@here.com>;tag=098594
Call-ID: 12345601@here.com Call-ID: a5-75-34-12-76@server.com
CSeq: 2 INVITE CSeq: 1 INVITE
Contact: <sip:music@server.com> Contact: <sip:UserA@here.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=MusicServer 2890844526 2890844526 IN IP4 music.server.com o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP s=Session SDP
c=IN IP4 50.60.70.80 c=IN IP4 100.101.102.103
t=3034423619 0 t=3034423619 0
m=audio 49170 RTP/AVP 0 m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
a=sendonly a=recvonly
F9 ACK Music Server -> A
F13 ACK A -> Music Server
ACK sip:music@server.com SIP/2.0 ACK sip:UserA@here.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP server.com:5060
From: BigGuy <sip:UserA@here.com> From: <sip:music@server.com>
To: <sip:music@server.com>;takg=se83kw1 To: BigGuy <sip:UserA@here.com>;tag=098594
Call-ID: 12345601@here.com Call-ID: a5-75-34-12-76@server.com
CSeq: 2 ACK CSeq: 1 ACK
Content-Length: 0 Content-Length: 0
/* User A now has Music and reports success back to B */ F10 BYE A -> B
F14 200 OK A -> B
SIP/2.0 200 OK ACK sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=314159 From: BigGuy <sip:UserA@here.com>
To: BigGuy <sip:UserA@here.com>;tag=1234567 To: LittleGuy <sip:UserB@there.com>;tag=314159
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 2 REFER CSeq: 2 BYE
Content-Length: 0 Content-Length: 0
/* User B prepares to take A off hold by first stopping music */ F11 200 OK B -> A
F15 REFER B -> A
REFER sip:UserA@here.com SIP/2.0 SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=314159 From: BigGuy <sip:UserA@here.com>
To: BigGuy <sip:UserA@here.com>;tag=1234567 To: LittleGuy <sip:UserB@there.com>;tag=314159
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 3 REFER CSeq: 2 BYE
Refer-To: <sip:music@server.com?method=BYE>
Content-Length: 0 Content-Length: 0
F16 (100 Trying) A -> B /* Music Server reports success back to B by returning all the SIP
headers in 200 OK response */
SIP/2.0 100 Trying
Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=314159
To: BigGuy <sip:UserA@here.com>;tag=1234567
Call-ID: 12345601@here.com
CSeq: 3 REFER
Content-Length: 0
F17 BYE A -> Music Server F12 NOTIFY Music Server -> B
BYE sip:music@server.com SIP/2.0 NOTIFY sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> To: LittleGuy <sip:UserB@there.com>
To: <sip:music@server.com>;tag=se83kw1 From: Music Server <sip:music@server.com>;tag=56323
Call-ID: 12345601@here.com Call-ID: 4802029847@there.com
CSeq: 3 BYE CSeq: 1 NOTIFY
Contact: BigGuy <sip:UserA@here.com> Event: refer
Referred-By: <sip:UserB@there.com> Content-Type: application/sip
Content-Length: 0 Content-Length: ...
F18 200 OK Music Server -> A
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP server.com:5060
From: BigGuy <sip:UserA@here.com> From: <sip:music@server.com>
To: <sip:music@server.com>;tag=se83kw1 To: BigGuy <sip:UserA@here.com>
Call-ID: 12345601@here.com Call-ID: a5-75-34-12-76@server.com
CSeq: 3 BYE CSeq: 1 INVITE
Content-Length: 0 Contact: <sip:UserA@here.com>
Content-Type: application/sdp
Content-Length: ...
/* Music is stopped, User A reports to B success */ F13 200 OK B -> A
F19 200 OK A -> B
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP here.com:5060
Route: <sip:UserA@here.com> To: LittleGuy <sip:UserB@there.com>
From: LittleGuy <sip:UserB@there.com>;tag=314159 From: Music Server <sip:music@server.com>;tag=56323
To: BigGuy <sip:UserA@here.com>;tag=1234567 Call-ID: 4802029847@there.com
Call-ID: 12345601@here.com CSeq: 1 NOTIFY
CSeq: 3 REFER
Content-Length: 0 Content-Length: 0
/* B now takes A off hold and continues session */ /* User A is now parked at the Music Server */
F20 INVITE B -> A /* User B picks up the call by sending an INVITE to A which replaces
the existing session with the Music/Park Server. Note that B knows
the Call-ID of the existing session from the NOTIFY response. */
INVITE sip:UserA@here.com SIP/2.0 F14 INVITE B -> A
Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=314159 INVITE sip:UserA@there.com SIP/2.0
To: BigGuy <sip:UserA@here.com>;tag=1234567 Via: SIP/2.0/UDP here.com:5060
Call-ID: 12345601@here.com From: LittleGuy <sip:UserB@there.com>
CSeq: 4 INVITE To: BigGuy <sip:UserA@here.com>
Call-ID: 6485356@here.com
CSeq: 1 INVITE
Contact: LittleGuy <sip:UserB@there.com> Contact: LittleGuy <sip:UserB@there.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserB 2890844527 2890844527 IN IP4 client.there.com o=UserB 2890844527 2890844527 IN IP4 client.there.com
s=Session SDP s=Session SDP
c=IN IP4 110.111.112.113 c=IN IP4 110.111.112.113
t=3034423619 0 t=3034423619 0
m=audio 3456 RTP/AVP 0 m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F21 200 OK A -> B F15 200 OK A -> B
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP here.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=314159 From: LittleGuy <sip:UserB@there.com>
To: BigGuy <sip:UserA@here.com>;tag=1234567 To: BigGuy <sip:UserA@here.com>
Call-ID: 12345601@here.com Call-ID: 6485356@here.com
CSeq: 4 INVITE CSeq: 1 INVITE
Contact: BigGuy <sip:UserA@here.com> Contact: BigGuy <sip:UserA@here.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserA 2890844526 2890844526 IN IP4 client.here.com o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP s=Session SDP
c=IN IP4 100.101.102.103 c=IN IP4 100.101.102.103
t=3034423619 0 t=3034423619 0
m=audio 49170 RTP/AVP 0 m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F22 ACK B -> A F16 ACK B -> A
ACK sip:UserA@here.com SIP/2.0 ACK sip:UserA@there.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP here.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=314159 From: LittleGuy <sip:UserB@there.com>
To: BigGuy <sip:UserA@here.com>;tag=1234567 To: BigGuy <sip:UserA@here.com>
Call-ID: 12345601@here.com Call-ID: 6485356@here.com
CSeq: 4 ACK CSeq: 1 ACK
Content-Length: 0
/* A replaces the session to the Music Server with the new session
and generates a BYE to disconnect the Music Server */
F17 BYE A -> Music Server
BYE sip:music@server.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>;tag=098594
To: <sip:music@server.com>
Call-ID: a5-75-34-12-76@server.com
CSeq: 1 BYE
Content-Length: 0
F18 200 OK Music Server -> A
SIP/2.0 200 OK
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>;tag=098594
To: <sip:music@server.com>
Call-ID: a5-75-34-12-76@server.com
CSeq: 1 BYE
Content-Length: 0 Content-Length: 0
2.3 Consultation Hold 2.3 Consultation Hold
User A Proxy User B User C User A Proxy User B User C
| | | | | | | |
| INVITE F1 | | | | INVITE F1 | | |
|--------------->| INVITE F2 | | |--------------->| INVITE F2 | |
| |------------->| | | |------------->| |
|(100 Trying) F3 | | | |(100 Trying) F3 | | |
skipping to change at page 25, line 35 skipping to change at page 23, line 35
| BYE F35 | | | | BYE F35 | | |
|--------------->| BYE F36 | | |--------------->| BYE F36 | |
| |------------->| | | |------------->| |
| | 200 OK F37 | | | | 200 OK F37 | |
| |<-------------| | | |<-------------| |
| 200 OK F38 | | | | 200 OK F38 | | |
|<---------------| | | |<---------------| | |
| | | | | | | |
User A calls user B. User B places call on hold. User B calls User User A calls user B. User B places call on hold. User B calls User
C, after that call is finished User B take the call with User A off C. User B then disconnects with C, then takes the call with User A
hold. off hold. The call ends with B hangs up.
Message Details Message Details
F1 INVITE A -> Proxy 1 F1 INVITE A -> Proxy 1
INVITE sip:UserB@there.com SIP/2.0 INVITE sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com> To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
skipping to change at page 38, line 7 skipping to change at page 36, line 7
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>;tag=1234567 From: BigGuy <sip:UserA@here.com>;tag=1234567
To: LittleGuy <sip:UserB@there.com>;tag=314159 To: LittleGuy <sip:UserB@there.com>;tag=314159
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 2 BYE CSeq: 2 BYE
Content-Length: 0 Content-Length: 0
2.4 Unattended Transfer 2.4 Unattended Transfer
This example is taken directly from "SIP Call Control Transfer"[3]
section 4.4.1.
User A User B User C User A User B User C
| INVITE F1 | | | INVITE F1 | |
|<-------------------| | |<-------------------| |
| 200 OK F2 | | | 180 Ringing F2 | |
|------------------->| | |------------------->| |
| ACK F3 | | | 200 OK F3 | |
|------------------->| |
| ACK F4 | |
|<-------------------| | |<-------------------| |
| RTP | | | RTP | |
|<==================>| | |<==================>| |
| | | | | |
| INVITE (hold) F4 | | | A performs unattended transfer |
| | |
| REFER Refer-To:C F5| |
|------------------->| | |------------------->| |
| 200 OK F5 | | | 202 Accepted F6 | |
|<-------------------| | |<-------------------| |
| ACK F6 | | | BYE F7 | |
|------------------->| |
| | |
| No RTP Sent! | |
| | |
| REFER Refer-To: C F7 |
|------------------->| | |------------------->| |
| 100 Trying F8 | | | 200 OK F8 | |
|<-------------------| | |<-------------------| |
| | INVITE F9 | | No RTP Session | INVITE Referred-By: A F9
| |------------------->| | |------------------->|
| | 200 OK F10 | | | 180 Ringing F10 |
| |<-------------------| | |<-------------------|
| | ACK F11 | | | 200 OK F11 |
| |<-------------------|
| | ACK F12 |
| |------------------->| | |------------------->|
| | RTP | | | RTP |
| |<==================>| | |<==================>|
| 200 OK F12 | | | NOTIFY F13 | |
|<-------------------| | |<-------------------| |
| BYE F13 | |
|------------------->| |
| 200 OK F14 | | | 200 OK F14 | |
|<-------------------| | |------------------->| |
| | | | | |
User B call User A. User B then transfers User A to User C. User B User B call User A. User A then transfers User B to User C, then
hangs up the call. User A disconnects with User B. User B establishes the session to C
then reports the success back to A in the NOTIFY. If the transfer
fails, User B can send a new INVITE back to A to re-establish the
session.
Message Details Message Details
F1 INVITE B -> A F1 INVITE B -> A
INVITE sip:UserA@here.com SIP/2.0 INVITE sip:UserA@here.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: BigGuy <sip:UserA@here.com> To: BigGuy <sip:UserA@here.com>
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
skipping to change at page 39, line 27 skipping to change at page 37, line 27
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserB 2890844527 2890844527 IN IP4 client.there.com o=UserB 2890844527 2890844527 IN IP4 client.there.com
s=Session SDP s=Session SDP
c=IN IP4 110.111.112.113 c=IN IP4 110.111.112.113
t=3034423619 0 t=3034423619 0
m=audio 3456 RTP/AVP 0 m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F2 200 OK A -> B F2 180 Ringing A -> B
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>
To: BigGuy <sip:UserA@here.com>;tag=314159
Call-ID: 12345601@here.com
CSeq: 1 INVITE
Content-Length: 0
F3 200 OK A -> B
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: BigGuy <sip:UserA@here.com>;tag=314159 To: BigGuy <sip:UserA@here.com>;tag=314159
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 1 INVITE CSeq: 1 INVITE
Contact: BigGuy <sip:UserA@here.com> Contact: BigGuy <sip:UserA@here.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserA 2890844526 2890844526 IN IP4 client.here.com o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP s=Session SDP
c=IN IP4 100.101.102.103 c=IN IP4 100.101.102.103
t=3034423619 0 t=3034423619 0
m=audio 49170 RTP/AVP 0 m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F3 ACK B -> A F4 ACK B -> A
ACK sip:UserA@here.com SIP/2.0 ACK sip:UserA@here.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=314159 From: LittleGuy <sip:UserB@there.com>;tag=314159
To: BigGuy <sip:UserA@here.com> To: BigGuy <sip:UserA@here.com>
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 1 ACK CSeq: 1 ACK
Content-Length: 0 Content-Length: 0
/* Session is established between A and B. User B then places User A /* Session is established between A and B. */
on hold */
F4 INVITE A -> B
INVITE sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=314159
Call-ID: 12345601@here.com
CSeq: 1 INVITE
Contact: BigGuy <sip:UserA@here.com>
Content-Type: application/sdp
Content-Length: ...
v=0 /* A peforms unattended transfer of B to C */
o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP
c=IN IP4 0.0.0.0
t=3034423619
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 200 OK B -> A F5 REFER A -> B
SIP/2.0 200 OK REFER sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=314159 To: LittleGuy <sip:UserB@there.com>;tag=314159
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 1 INVITE CSeq: 2 REFER
Contact: LittleGuy <sip:UserB@there.com> Refer-To: <sip:UserC@anywhere.com>
Content-Type: application/sdp Referred-By: <UserA@here.com>
Content-Length: ... Content-Length: 0
v=0 F6 202 Accepted B -> A
o=UserB 2890844527 2890844527 IN IP4 client.there.com
s=Session SDP
c=IN IP4 0.0.0.0
t=3034423619 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F6 ACK A -> B
ACK sip:UserA@here.com SIP/2.0 SIP/2.0 202 Accepted
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=314159 To: LittleGuy <sip:UserB@there.com>;tag=314159
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 1 ACK CSeq: 2 REFER
Content-Length: 0 Content-Length: 0
/* B is now on hold. A transfers B to C */ /* A now disconnects with B */
F7 REFER A -> B F7 BYE A -> B
REFER sip:UserB@there.com SIP/2.0 BYE sip:UserA@here.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=314159 To: LittleGuy <sip:UserB@there.com>;tag=314159
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 2 REFER CSeq: 3 BYE
Refer-To: <sip:UserC@anywhere.com>
Content-Length: 0 Content-Length: 0
F8 (100 Trying) B -> A F8 200 OK B -> A
SIP/2.0 100 Trying SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=314159 To: LittleGuy <sip:UserB@there.com>;tag=314159
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 2 REFER CSeq: 3 BYE
Content-Length: 0 Content-Length: 0
/* B attempts the transfer to C */
F9 INVITE B -> C F9 INVITE B -> C
INVITE sip:UserC@anywhere.com SIP/2.0 INVITE sip:UserC@anywhere.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: OtherGuy <sip:UserC@anywhere.com> To: OtherGuy <sip:UserC@anywhere.com>
Call-ID: 12345601@here.com Call-ID: 7436222@here.com
CSeq: 2 INVITE CSeq: 1 INVITE
Contact: LittleGuy <sip:UserB@there.com> Contact: LittleGuy <sip:UserB@there.com>
Referred-By: <UserA@here.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserB 2890844539 2890844539 IN IP4 client.there.com o=UserB 2890844539 2890844539 IN IP4 client.there.com
s=Session SDP s=Session SDP
c=IN IP4 110.111.112.113 c=IN IP4 110.111.112.113
t=3034423821 0 t=3034423821 0
m=audio 3458 RTP/AVP 0 m=audio 3458 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F10 200 OK C -> B F10 180 Ringing C -> B
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>
To: OtherGuy <sip:UserC@anywhere.com>;tag=928287
Call-ID: 7436222@here.com
CSeq: 1 INVITE
F11 200 OK C -> B
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: OtherGuy <sip:UserC@anywhere.com>;tag=928287 To: OtherGuy <sip:UserC@anywhere.com>;tag=928287
Call-ID: 12345601@here.com Call-ID: 7436222@here.com
CSeq: 2 INVITE CSeq: 1 INVITE
Contact: OtherGuy <sip:UserC@anywhere.com> Contact: OtherGuy <sip:UserC@anywhere.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserC 2890844527 2890844527 IN IP4 client.anywhere.com o=UserC 2890844527 2890844527 IN IP4 client.anywhere.com
s=Session SDP s=Session SDP
c=IN IP4 120.121.122.123 c=IN IP4 120.121.122.123
t=3034423619 0 t=3034423619 0
m=audio 3456 RTP/AVP 0 m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F11 ACK B -> C F12 ACK B -> C
ACK sip:UserC@anywhere.com SIP/2.0 ACK sip:UserC@anywhere.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: OtherGuy <sip:UserC@anywhere.com>;tag=928287 To: OtherGuy <sip:UserC@anywhere.com>;tag=928287
Call-ID: 12345601@here.com Call-ID: 7436222@here.com
CSeq: 2 ACK CSeq: 1 ACK
Content-Length: 0 Content-Length: 0
/* B and C now have established a session. B reports success to A */ /* B and C now have established a session. B reports success to A
which A probably ignores. */
F12 200 OK B -> A F13 NOTIFY B -> A
SIP/2.0 200 OK NOTIFY sip:UserA@here.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: BigGuy <sip:UserA@here.com> From: LittleGuy <sip:UserB@there.com>;tag=314159
To: LittleGuy <sip:UserB@there.com>;tag=314159 To: BigGuy <sip:UserA@here.com>
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 2 REFER CSeq: 1 NOTIFY
Content-Length: 0 Event: refer
/* A now disconnects with B */ Content-Type: application/sip
Content-Length: ...
F13 BYE A -> B
BYE sip:UserA@here.com SIP/2.0 SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: BigGuy <sip:UserA@here.com> From: LittleGuy <sip:UserB@there.com>
To: LittleGuy <sip:UserB@there.com>;tag=314159 To: OtherGuy <sip:UserC@anywhere.com>;tag=928287
Call-ID: 12345601@here.com Call-ID: 7436222@here.com
CSeq: 3 BYE CSeq: 1 INVITE
Content-Length: 0 Contact: OtherGuy <sip:UserC@anywhere.com>
Content-Type: application/sdp
Content-Length: ...
F14 200 OK B -> A F14 200 OK A -> B
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: BigGuy <sip:UserA@here.com> From: LittleGuy <sip:UserB@there.com>;tag=314159
To: LittleGuy <sip:UserB@there.com>;tag=314159 To: BigGuy <sip:UserA@here.com>
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 3 BYE CSeq: 1 NOTIFY
Content-Length: 0 Content-Length: 0
2.5 Attended Transfer 2.5 Attended Transfer
User A User B User C User A User B User C
| | | | | |
| INVITE F1 | | | INVITE F1 | |
|--------------->| | |--------------->| |
|(100 Trying) F2 | | |(100 Trying) F2 | |
|<---------------| | |<---------------| |
skipping to change at page 44, line 40 skipping to change at page 42, line 40
| |(100 Trying) F10 | |(100 Trying) F10
| |<-------------| | |<-------------|
| | 180 Ringing F11 | | 180 Ringing F11
| |<-------------| | |<-------------|
| | 200 OK F12 | | | 200 OK F12 |
| |<-------------| | |<-------------|
| | ACK F13 | | | ACK F13 |
| |------------->| | |------------->|
| | RTP | | | RTP |
| |<============>| | |<============>|
| REFER to C F14 | | | | REFER Refer-To: A F14
|<---------------| | | |------------->|
|(100 Trying) F15| | | |202 Accepted F15
|--------------->| | | |<-------------|
| INVITE F16 | | INVITE Referred-By: B F16 |
|------------------------------>|
| 200 OK F17 |
|<------------------------------| |<------------------------------|
| ACK F18 | | 200 OK F17 |
|------------------------------>| |------------------------------>|
| ACK F18 |
|<------------------------------|
| RTP | | RTP |
|<=============================>| |<=============================>|
| 200 OK F19 | | | BYE F19 | |
|--------------->| | |--------------->| |
| BYE F20 | | | 200 OK F20 | |
|<---------------| | |<---------------| |
| 200 OK F21 | | | | NOTIFY F21 |
|--------------->| BYE F22 | | |<-------------|
| | 200 OK F22 |
| |------------->| | |------------->|
| | 200 OK F23 | | | BYE F23 |
| |------------->|
| | 200 OK F24 |
| |<-------------| | |<-------------|
User A calls User B. User B puts User A on hold, and Calls user C to User A calls User B. User B puts User A on hold then calls User C to
announce transfer. User B transfers User A to User C while announce transfer. User B transfers User C to User A which replaces
maintaining sessions with both A and C. Once the session between A the session between A and B. B then disconnects session with A. C
and C is successfully established, User B hangs up on both A and C. reports success of transfer to B who then disconnects with C.
Note: the Replaces header would be very useful in this example.
Message Details Message Details
F1 INVITE A -> B F1 INVITE A -> B
INVITE sip:UserB@there.com SIP/2.0 INVITE sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com> To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
skipping to change at page 47, line 47 skipping to change at page 46, line 4
ACK sip:UserA@here.com SIP/2.0 ACK sip:UserA@here.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=23431 From: LittleGuy <sip:UserB@there.com>;tag=23431
To: BigGuy <sip:UserA@here.com> To: BigGuy <sip:UserA@here.com>
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 1024 ACK CSeq: 1024 ACK
Content-Length: 0 Content-Length: 0
/* User B calls User C */ /* User B calls User C */
F9 INVITE B -> C
F9 INVITE B -> A INVITE sip:UserC@anywhere.com SIP/2.0
INVITE sip:UserA@here.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: OtherGuy <sip:UserC@anywhere.com> To: OtherGuy <sip:UserC@anywhere.com>
Call-ID: 12345600@here.com Call-ID: sdjfdjfskdf@there.com
CSeq: 1025 INVITE CSeq: 42 INVITE
Contact: BigGuy <sip:UserB@there.com> Contact: BigGuy <sip:UserB@there.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserB 2890844528 2890844528 IN IP4 client.there.com o=UserB 2890844528 2890844528 IN IP4 client.there.com
s=Session SDP s=Session SDP
c=IN IP4 110.111.112.113 c=IN IP4 110.111.112.113
t=3034423645 0 t=3034423645 0
m=audio 3458 RTP/AVP 0 m=audio 3458 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F10 (100 Trying C -> B) F10 (100 Trying C -> B)
SIP/2.0 100 Trying SIP/2.0 100 Trying
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: OtherGuy <sip:UserC@anywhere.com> To: OtherGuy <sip:UserC@anywhere.com>
Call-ID: 12345600@here.com Call-ID: sdjfdjfskdf@there.com
CSeq: 1025 INVITE CSeq: 42 INVITE
Content-Length: 0 Content-Length: 0
F11 180 Ringing C -> B F11 180 Ringing C -> B
SIP/2.0 180 Ringing SIP/2.0 180 Ringing
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3 To: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3
Call-ID: 12345600@here.com Call-ID: sdjfdjfskdf@there.com
CSeq: 1025 INVITE CSeq: 42 INVITE
Content-Length: 0 Content-Length: 0
F12 200 OK C -> B F12 200 OK C -> B
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3 To: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3
Call-ID: 12345600@here.com Call-ID: sdjfdjfskdf@there.com
CSeq: 1025 INVITE CSeq: 42 INVITE
Contact: OtherGuy <sip:UserC@anywhere.com> Contact: OtherGuy <sip:UserC@anywhere.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserC 2890844527 2890844527 IN IP4 client.anywhere.com o=UserC 2890844527 2890844527 IN IP4 client.anywhere.com
s=Session SDP s=Session SDP
c=IN IP4 120.121.122.123 c=IN IP4 120.121.122.123
t=3034423619 0 t=3034423619 0
m=audio 3456 RTP/AVP 0 m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F13 ACK B -> C F13 ACK B -> C
ACK sip:UserC@anywhere.com SIP/2.0 ACK sip:UserC@anywhere.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3 To: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3
Call-ID: 12345600@here.com Call-ID: sdjfdjfskdf@there.com
CSeq: 1025 ACK CSeq: 42 ACK
Content-Length: 0 Content-Length: 0
/* User B Transfers User A to User C */ /* User B Transfers User C to User A */
F14 REFER B -> A F14 REFER B -> C
REFER sip:UserA@here.com SIP/2.0 REFER sip:UserC@anywhere.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: BigGuy <sip:UserA@here.com>;tag=23431 To: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3
Call-ID: 12345600@here.com Call-ID: sdjfdjfskdf@there.com
CSeq: 1026 REFER CSeq: 43 REFER
Refer-To: <sip:UserC@anywhere.com> Refer-To: <sip:UserB@here.com?Accept-Contact=sip:UserB@here.com;
only=true>
Referred-By: <sip:UserB@there.com>
Content-Length: 0 Content-Length: 0
F15 (100 Trying) A -> B F15 202 Accepted A -> B
SIP/2.0 100 Trying SIP/2.0 202 Accepted
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: BigGuy <sip:UserA@here.com>;tag=23431 To: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3
Call-ID: 12345600@here.com Call-ID: sdjfdjfskdf@there.com
CSeq: 1026 REFER CSeq: 43 REFER
Content-Length: 0 Content-Length: 0
/* User C establishes session with User A which replaces the session
between User A and User B */
/* User A calls User C */ F16 INVITE C -> A
F16 INVITE A -> C
INVITE sip:UserC@anywhere.com SIP/2.0 INVITE sip:UserA@here.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP anywhere.com:5060
From: BigGuy <sip:UserA@here.com> From: OtherGuy <sip:UserC@anywhere.com>
To: OtherGuy <sip:UserC@anywhere.com> To: BigGuy <sip:UserA@here.com>
Call-ID: 12345600@here.com Call-ID: 9435674543@anywhere.com
CSeq: 2 INVITE CSeq: 1 INVITE
Referred-By: <sip:UserB@there.com> Referred-By: <sip:UserB@there.com>
Contact: BigGuy <sip:UserA@here.com> Accept-Contact: sip:UserB@here.com;only=true
Contact: OtherGuy <sip:UserC@anywhere.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserA 2890844538 2890844538 IN IP4 client.here.com o=UserC 2890844529 2890844529 IN IP4 client.anywhere.com
s=Session SDP s=Session SDP
c=IN IP4 100.101.102.103 c=IN IP4 120.121.122.123
t=3034423452 0 t=3034423643 0
m=audio 49172 RTP/AVP 0 m=audio 3458 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F17 200 OK C -> A F17 200 OK A -> C
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP anywhere.com:5060
From: BigGuy <sip:UserA@here.com> From: OtherGuy <sip:UserC@anywhere.com>
To: OtherGuy <sip:UserC@anywhere.com>;tag=ff3a To: BigGuy <sip:UserA@here.com>;tag=ff3a
Call-ID: 12345601@here.com Call-ID: 9435674543@anywhere.com
CSeq: 2 INVITE CSeq: 1 INVITE
Contact: OtherGuy <sip:UserC@anywhere.com> Contact: BigGuy <sip:UserA@here.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserC 2890844529 2890844529 IN IP4 client.anywhere.com o=UserA 2890844538 2890844538 IN IP4 client.here.com
s=Session SDP s=Session SDP
c=IN IP4 120.121.122.123 c=IN IP4 100.101.102.103
t=3034423643 0 t=3034423452 0
m=audio 3458 RTP/AVP 0 m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F18 ACK A -> C F18 ACK C -> A
ACK sip:UserC@anywhere.com SIP/2.0 ACK sip:UserC@anywhere.com SIP/2.0
Via: SIP/2.0/UDP anywhere.com:5060
From: OtherGuy <sip:UserC@anywhere.com>
To: BigGuy <sip:UserA@here.com>;tag=ff3a
Call-ID: 9435674543@anywhere.com
CSeq: 1 INVITE
Content-Length: 0
/* User A then disconnects from User B */
F19 BYE A -> B
BYE sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>;tag=23431
To: OtherGuy <sip:UserC@anywhere.com>;tag=ff3a To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345601@here.com Call-ID: 12345600@here.com
CSeq: 2 INVITE CSeq: 2 BYE
Content-Length: 0 Content-Length: 0
/* User A tells User B that the call has been successfully
transferred */
F19 200 OK A -> B F20 200 OK B -> A
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP here.com:5060
From: LittleGuy <sip:UserB@there.com> From: BigGuy <sip:UserA@here.com>;tag=23431
To: BigGuy <sip:UserA@here.com>;tag=23431 To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 1026 REFER CSeq: 2 BYE
Content-Length: 0 Content-Length: 0
/* User B then disconnects from both User A and User C */ /* User C tells User B that the call has been successfully
transferred */
F20 BYE B -> A F21 NOTIFY C -> B
BYE sip:UserA@here.com SIP/2.0 NOTIFY sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP here.com:5060
From: LittleGuy <sip:UserB@there.com> ToLittleGuy <sip:UserB@there.com>
To: BigGuy <sip:UserA@here.com>;tag=23431 From: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3
Call-ID: 12345600@here.com Call-ID: sdjfdjfskdf@there.com
CSeq: 1027 BYE CSeq: 1 NOTIFY
Content-Length: 0 Content-Type: application/sdp
Content-Length: ...
F21 200 OK A -> B SIP/2.0 200 OK
Via: SIP/2.0/UDP anywhere.com:5060
From: OtherGuy <sip:UserC@anywhere.com>
To: BigGuy <sip:UserA@here.com>;tag=ff3a
Call-ID: 9435674543@anywhere.com
CSeq: 1 INVITE
Contact: BigGuy <sip:UserA@here.com>
Content-Type: application/sdp
Content-Length: ...
F22 200 OK B -> C
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP here.com:5060
From: LittleGuy <sip:UserB@there.com> ToLittleGuy <sip:UserB@there.com>
To: BigGuy <sip:UserA@here.com>;tag=23431 From: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3
Call-ID: 12345600@here.com Call-ID: sdjfdjfskdf@there.com
CSeq: 1027 BYE CSeq: 1 NOTIFY
Content-Length: 0 Content-Length: 0
F22 BYE B -> C /* User B disconnects with User C */
F23 BYE B -> C
BYE sip:UserC@anywhere.com SIP/2.0 BYE sip:UserC@anywhere.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3 To: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 1028 BYE CSeq: 44 BYE
Content-Length: 0 Content-Length: 0
F23 200 OK C -> B F24 200 OK C -> B
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: LittleGuy <sip:UserB@there.com> From: LittleGuy <sip:UserB@there.com>
To: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3 To: OtherGuy <sip:UserC@anywhere.com>;tag=5f35a3
Call-ID: 12345601@here.com Call-ID: 12345601@here.com
CSeq: 1028 BYE CSeq: 44 BYE
Content-Length: 0 Content-Length: 0
2.6 Call Forwarding Unconditional 2.6 Call Forwarding Unconditional
User A Proxy Gateway User A Proxy Gateway
| | | | | |
| INVITE F1 | | | INVITE F1 | |
|--------------->| INVITE F2 | |--------------->| INVITE F2 |
|(100 Trying) F3 |------------->| |(100 Trying) F3 |------------->|
|<---------------|180 Ringing F4| |<---------------|180 Ringing F4|
skipping to change at page 54, line 7 skipping to change at page 52, line 7
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserA 2890844526 2890844526 IN IP4 client.here.com o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP s=Session SDP
c=IN IP4 100.101.102.103 c=IN IP4 100.101.102.103
t=3034423619 0 t=3034423619 0
m=audio 49170 RTP/AVP 0 m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
/* Proxy forwards call by rewriting Request-URI */
F2 INVITE Proxy -> Gateway F2 INVITE Proxy -> Gateway
INVITE sip:+19727293660@gw1.wcom.com;user=phone SIP/2.0 INVITE sip:+19727293660@gw1.wcom.com;user=phone SIP/2.0
Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.1
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
Record-Route: <sip:UserB@there.com;maddr=ss1.wcom.com> Record-Route: <sip:UserB@there.com;maddr=ss1.wcom.com>
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com> To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 1 INVITE CSeq: 1 INVITE
skipping to change at page 55, line 43 skipping to change at page 53, line 45
F7 200 OK Proxy -> A F7 200 OK Proxy -> A
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
Record-Route: <sip:UserB@there.com;maddr=ss1.wcom.com> Record-Route: <sip:UserB@there.com;maddr=ss1.wcom.com>
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=314159 To: LittleGuy <sip:UserB@there.com>;tag=314159
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 1 INVITE CSeq: 1 INVITE
Contact: LittleGuy <sip:7773660,phone- Contact: <sip:+19727293660@gw1.wcom.com;user=phone>
context=p1234@gw1.wcom.com;user=phone>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=GATEWAY1 2890844527 2890844527 IN IP4 gatewayone.wcom.com o=GATEWAY1 2890844527 2890844527 IN IP4 gatewayone.wcom.com
s=Session SDP s=Session SDP
c=IN IP4 gatewayone.wcom.com c=IN IP4 gatewayone.wcom.com
t=0 0 t=0 0
m=audio 3456 RTP/AVP 0 m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
skipping to change at page 71, line 20 skipping to change at page 69, line 20
a fully meshed conference, and does not make use of the concepts in a fully meshed conference, and does not make use of the concepts in
the call control draft. the call control draft.
The signaling for this scenario is as follows: User A calls User B, The signaling for this scenario is as follows: User A calls User B,
this establishes the call between A and B. User B calls User C, this this establishes the call between A and B. User B calls User C, this
establishes the call between B and C. User B will mix the audio establishes the call between B and C. User B will mix the audio
streams, sending media originating at A to C, and media originating streams, sending media originating at A to C, and media originating
at C to A. There is no SIP signaling relationship between User A and at C to A. There is no SIP signaling relationship between User A and
User C. User C.
The REFER method with the Replaces header could be used by User B to
drop out of the call without disconnecting A and C.
2.10 2.10
Single Line Extension Single Line Extension
Single Line Extension (Sequential, First Wins implementation), a call Single Line Extension (Sequential, First Wins implementation), a call
will ring several extensions in sequence. The extension to answer will ring several extensions in sequence. The extension to answer
the call becomes the active set, no other sets may join the call. the call becomes the active set, no other sets may join the call.
The signaling is described in Section 2.11 of this document. It is The signaling is described in Section 2.11 of this document. It is
anticipated that Single Line Extension will be associated with help anticipated that Single Line Extension will be associated with help
desk/call center applications rather then individual users. The desk/call center applications rather then individual users. The
skipping to change at page 80, line 40 skipping to change at page 78, line 41
CSeq: 1 BYE CSeq: 1 BYE
Content-Length: 0 Content-Length: 0
F26 200 OK Proxy -> B4 F26 200 OK Proxy -> B4
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP there.com:5060 Via: SIP/2.0/UDP there.com:5060
From: LittleGuy <sip:UserB@there.com>;tag=7137136 From: LittleGuy <sip:UserB@there.com>;tag=7137136
To: BigGuy <sip:UserA@here.com>;tag=1234567 To: BigGuy <sip:UserA@here.com>;tag=1234567
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 2 BYE CSeq: 1 BYE
Content-Length: 0 Content-Length: 0
2.12 2.12
Call Management (Incoming Call Screening) Call Management (Incoming Call Screening)
User A Proxy User B User A Proxy User B
| | | | | |
| INVITE F1 | | | INVITE F1 | |
|--------------->| | |------------------------------>|
| 407 Proxy Authorization F2 | | 305 Use Proxy F2 |
|<---------------| | |<------------------------------|
| ACK F3 | | | ACK F3 | |
|--------------->| | |------------------------------>|
| INVITE F4 | | | INVITE F4 | |
|--------------->| | |--------------->| |
| 403 Screening Failure (Terminating) F5 | 407 Proxy Authorization F5 |
|<---------------| | |<---------------| |
| ACK F6 | | | ACK F6 | |
|--------------->| | |--------------->| |
| INVITE F7 | |
|--------------->| |
| 403 Screening Failure (Terminating) F8
|<---------------| |
| ACK F9 | |
|--------------->| |
| | | | | |
User B has an incoming call screening list, User A is included on the User B has an incoming call screening list, User A is included on the
list of addresses User B will not accept calls from. User A attempts list of addresses User B will not accept calls from. User A attempts
to call user B. to call user B. Messages F1, F2, and F3 are included to show that
User B does not accept INVITEs that have not been screened by the
proxy.
Message Details Message Details
F1 INVITE A -> Proxy 1 F1 INVITE A -> B
INVITE sip:UserB@there.com SIP/2.0 INVITE sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com> To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 1 INVITE CSeq: 1 INVITE
Contact: BigGuy <sip:UserA@here.com> Contact: BigGuy <sip:UserA@here.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserA 2890844526 2890844526 IN IP4 client.here.com o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP s=Session SDP
c=IN IP4 100.101.102.103 c=IN IP4 100.101.102.103
t=3034423619 0 t=3034423619 0
m=audio 49170 RTP/AVP 0 m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
/* User B only accepts INVITEs that have been screened by the proxy
*/
F2 305 Use Proxy B -> A
SIP/2.0 305 Use Proxy
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=342123
Call-ID: 12345600@here.com
CSeq: 1 INVITE
Contact: <sip:ss1.wcom.com>
Content-Length: 0
F3 ACK A -> B
ACK sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=342123
Call-ID: 12345600@here.com
CSeq: 1 ACK
Content-Length: 0
/* A retries the call through the proxy */
F4 INVITE A -> Proxy 1
INVITE sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com
CSeq: 2 INVITE
Contact: BigGuy <sip:UserA@here.com>
Content-Type: application/sdp
Content-Length: ...
v=0
o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP
c=IN IP4 100.101.102.103
t=3034423619 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 1 challenges User A for authentication */ /* Proxy 1 challenges User A for authentication */
F2 407 Proxy Authorization Required Proxy 1 -> A F5 407 Proxy Authorization Required Proxy 1 -> A
SIP/2.0 407 Proxy Authorization Required SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com> To: LittleGuy <sip:UserB@there.com>;tag=7886765
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 1 INVITE CSeq: 2 INVITE
Proxy-Authenticate: Digest realm="MCI WorldCom SIP", Proxy-Authenticate: Digest realm="MCI WorldCom SIP",
domain="wcom.com", nonce="ea9c8e88df84f1cec4341ae6cbe5a359", domain="sip:ss1.wcom.com", nonce="ea9c8e88df84f1cec4341ae6cbe5a359",
opaque="", stale=FALSE, algorithm=MD5 opaque="", stale=FALSE, algorithm=MD5
Content-Length:0 Content-Length:0
F3 ACK A -> Proxy 1 F6 ACK A -> Proxy 1
ACK sip:UserB@there.com SIP/2.0 ACK sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com> To: LittleGuy <sip:UserB@there.com>;tag=7886765
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 1 ACK CSeq: 2 ACK
Content-Length:0 Content-Length:0
/* User A responds by sending an INVITE with authentication /* User A responds by sending an INVITE with authentication
credentials in it. */ credentials in it. */
F4 INVITE A -> Proxy 1 F7 INVITE A -> Proxy 1
INVITE sip:UserB@there.com SIP/2.0 INVITE sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com> To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 2 INVITE CSeq: 3 INVITE
Contact: BigGuy <sip:UserA@here.com> Contact: BigGuy <sip:UserA@here.com>
Proxy-Authorization: DIGEST username="UserA", realm="MCI WorldCom Proxy-Authorization: DIGEST username="UserA",
SIP", nonce="ae9137be1c87d175c2dd63302a0d6e0a", opaque="", realm="MCI WorldCom SIP", nonce="ae9137be1c87d175c2dd63302a0d6e0a",
uri="sip:ss1.wcom.com", response="bbaec39f943bdcb3620d90afc548a45c" opaque="", uri="sip:ss1.wcom.com",
response="bbaec39f943bdcb3620d90afc548a45c"
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserA 2890844526 2890844526 IN IP4 client.here.com o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP s=Session SDP
c=IN IP4 100.101.102.103 c=IN IP4 100.101.102.103
t=3034423619 0 t=3034423619 0
m=audio 49170 RTP/AVP 0 m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F5 403 Screening Failure (Terminating) Proxy 1 -> A F8 403 Screening Failure (Terminating) Proxy 1 -> A
SIP/2.0 403 Screening Failure (Terminating) SIP/2.0 403 Screening Failure (Terminating)
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=ffe254 To: LittleGuy <sip:UserB@there.com>;tag=ffe254
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 2 INVITE CSeq: 3 INVITE
Content-Length:0 Content-Length:0
F6 ACK A -> Proxy 1 F9 ACK A -> Proxy 1
ACK sip:UserB@there.com SIP/2.0 ACK sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=ffe254 To: LittleGuy <sip:UserB@there.com>;tag=ffe254
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 2 ACK CSeq: 3 ACK
Content-Length:0 Content-Length:0
2.13 2.13
Call Management (Outgoing Call Screening) Call Management (Outgoing Call Screening)
User A Proxy User B User A Proxy User B
| | | | | |
| INVITE F1 | | | INVITE F1 | |
|--------------->| | |--------------->| |
| 407 Proxy Authorization F2 | | 407 Proxy Authorization F2 |
skipping to change at page 85, line 11 skipping to change at page 84, line 11
/* Proxy 1 challenges User A for authentication */ /* Proxy 1 challenges User A for authentication */
F2 407 Proxy Authorization Required Proxy 1 -> A F2 407 Proxy Authorization Required Proxy 1 -> A
SIP/2.0 407 Proxy Authorization Required SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=90210 To: LittleGuy <sip:UserB@there.com>;tag=90210
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 1 INVITE CSeq: 1 INVITE
Proxy-Authenticate: Digest realm="MCI WorldCom SIP", Proxy-Authenticate: Digest realm="MCI WorldCom SIP",
domain="wcom.com", nonce="ea9c8e88df84f1cec4341ae6cbe5a359", domain="sip:ss1.wcom.com", nonce="ea9c8e88df84f1cec4341ae6cbe5a359",
opaque="", stale=FALSE, algorithm=MD5 opaque="", stale=FALSE, algorithm=MD5
Content-Length:0 Content-Length:0
F3 ACK A -> Proxy 1 F3 ACK A -> Proxy 1
ACK sip:UserB@there.com SIP/2.0 ACK sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=90210 To: LittleGuy <sip:UserB@there.com>;tag=90210
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
skipping to change at page 85, line 39 skipping to change at page 84, line 39
INVITE sip:UserB@there.com SIP/2.0 INVITE sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com> To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 2 INVITE CSeq: 2 INVITE
Contact: BigGuy <sip:UserA@here.com> Contact: BigGuy <sip:UserA@here.com>
Proxy-Authorization: DIGEST username="UserA", realm="MCI WorldCom Proxy-Authorization: DIGEST username="UserA", realm="MCI WorldCom
SIP", nonce="cb360afc54bbaec39f943bd820d9a45c", opaque="", SIP", nonce="cb360afc54bbaec39f943bd820d9a45c", opaque="",
uri="sip:UserB@there.com;maddr=ss1.wcom.com", uri="sip:ss1.wcom.com", response="b9d2e5bcdec9f69ab2a9b44f270285a6"
response="b9d2e5bcdec9f69ab2a9b44f270285a6"
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: ... Content-Length: ...
v=0 v=0
o=UserA 2890844526 2890844526 IN IP4 client.here.com o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP s=Session SDP
c=IN IP4 100.101.102.103 c=IN IP4 100.101.102.103
t=3034423619 0 t=3034423619 0
m=audio 49170 RTP/AVP 0 m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000 a=rtpmap:0 PCMU/8000
F5 403 Screening Failure (Originating) Proxy 1 -> A
F5 403 Screening Failure (Originating) Proxy 1 -> A
SIP/2.0 403 Screening Failure (Originating) SIP/2.0 403 Screening Failure (Originating)
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=18017 To: LittleGuy <sip:UserB@there.com>;tag=18017
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 2 INVITE CSeq: 2 INVITE
Content-Length:0 Content-Length:0
F6 ACK A -> Proxy 1 F6 ACK A -> Proxy 1
ACK sip:UserB@there.com SIP/2.0 ACK sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060 Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com> From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=18017 To: LittleGuy <sip:UserB@there.com>;tag=18017
Call-ID: 12345600@here.com Call-ID: 12345600@here.com
CSeq: 2 ACK CSeq: 2 ACK
Content-Length:0 Content-Length:0
3 Acknowledgements 2.14
Call Pickup
User A Proxy User B1 User B2
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
|(100 Trying) F3 |------------->| |
|<---------------|180 Ringing F4| |
| 180 Ringing F5 |<-------------| |
|<---------------| | |
| | | REGISTER F6 |
| |<---------------------------------|
| | | 200 OK F7 |
| |--------------------------------->|
| | | INVITE F8 |
| |--------------------------------->|
| | | 180 Ringing F9 |
| 180 Ringing F10|<---------------------------------|
|<---------------| | 200 OK F11 |
| |<---------------------------------|
| 200 OK F12 | CANCEL F13 | |
|<---------------|------------->| |
| ACK F15 | 200 OK F14 | |
|--------------->|<-------------| |
| | | ACK F16 |
| |--------------------------------->|
| | 487 F17 | |
| |<-------------| |
| | ACK F18 | |
| |------------->| |
| Both way RTP Established |
|<=================================================>|
| BYE F19 | | |
|--------------->| | BYE F20 |
| |--------------------------------->|
| | | 200 OK F21 |
| 200 OK F22 |<---------------------------------|
|<---------------| | |
| | | |
User B1 and B2 are part of a work group that can pick up each others
calls. User A calls B1 who does not answer. User B2 wishes to pick
up the call and sends a REGISTER with Expires:0 to the proxy which
recognizes this as a call pickup not a register based on the Request-
URI. The proxy server then forks the INVITE by sending it to B2 who
answers. The proxy then cancels the B1 fork of the INVITE.
Message Details
F1 INVITE A -> Proxy
INVITE sip:UserB@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com
CSeq: 1 INVITE
Contact: BigGuy <sip:UserA@here.com>
Content-Type: application/sdp
Content-Length: ...
v=0
o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP
c=IN IP4 100.101.102.103
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F2 INVITE Proxy -> B1
INVITE sip:UserB1@there.com SIP/2.0
Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.1
Via: SIP/2.0/UDP here.com:5060
Record-Route: <sip:UserB@there.com;maddr=ss1.wcom.com>
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com
CSeq: 1 INVITE
Contact: BigGuy <sip:UserA@here.com>
Content-Type: application/sdp
Content-Length: ...
v=0
o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP
c=IN IP4 100.101.102.103
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 (100 Trying) Proxy -> A
SIP/2.0 100 Trying
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com
CSeq: 1 INVITE
Content-Length: 0
F4 180 Ringing B1 -> Proxy
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.1
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=3145678
Call-ID: 12345600@here.com
CSeq: 1 INVITE
Content-Length: 0
F5 180 Ringing Proxy -> A
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=3145678
Call-ID: 12345600@here.com
CSeq: 1 INVITE
Content-Length: 0
/* User B2 decides to pick up the call */
F6 REGISTER B2 -> Proxy
REGISTER sip:pickupgroup37.ss1.wcom.com SIP/2.0
Via: SIP/2.0/UDP b2.there.com:5060
From: LittleGuy <sip:UserB2@there.com>
To: LittleGuy <sip:UserB2@there.com>
Call-ID: 563456212@b2.there.com
CSeq: 1 REGISTER
Contact: BigGuy <sip:UserB2@there.com>
Expires: 0
Content-Length: 0
F7 200 OK Proxy -> B2
SIP/2.0 200 OK
Via: SIP/2.0/UDP b2.there.com:5060
From: LittleGuy <sip:UserB2@there.com>
To: LittleGuy <sip:UserB2@there.com>
Call-ID: 563456212@b2.there.com
CSeq: 1 REGISTER
Contact: BigGuy <sip:UserB2@there.com>
Expires: 0
Content-Length: 0
/* Proxy recognizes the REGISTER directed at pickgroup37.ss1.wcom.com
as being a call pickup attempt for the pending INVITE to B1. The
proxy then forks the INVITE and sends it to B2. */
F8 INVITE Proxy -> B2
INVITE sip:UserB2@there.com SIP/2.0
Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.2
Via: SIP/2.0/UDP here.com:5060
Record-Route: <sip:UserB@there.com;maddr=ss1.wcom.com>
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com
CSeq: 1 INVITE
Contact: BigGuy <sip:UserA@here.com>
Content-Type: application/sdp
Content-Length: ...
v=0
o=UserA 2890844526 2890844526 IN IP4 client.here.com
s=Session SDP
c=IN IP4 100.101.102.103
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F9 180 Ringing B2 -> Proxy
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.2
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=123456
Call-ID: 12345600@here.com
CSeq: 1 INVITE
Content-Length: 0
F10 180 Proxy -> A
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=123456
Call-ID: 12345600@here.com
CSeq: 1 INVITE
Content-Length: 0
F11 200 OK B2 -> Proxy
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.2
Via: SIP/2.0/UDP here.com:5060
Record-Route: <sip:UserB@there.com;maddr=ss1.wcom.com>
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=123456
Call-ID: 12345600@here.com
CSeq: 1 INVITE
Contact: LittleGuy <sip:UserB2@there.com>
Content-Type: application/sdp
Content-Length: ...
v=0
o=UserB 2890844527 2890844527 IN IP4 client2.there.com
s=Session SDP
c=IN IP4 110.111.112.114
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F12 200 OK Proxy -> A
SIP/2.0 200 OK
Via: SIP/2.0/UDP here.com:5060
Record-Route: <sip:UserB@there.com;maddr=ss1.wcom.com>
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=123456
Call-ID: 12345600@here.com
CSeq: 1 INVITE
Contact: LittleGuy <sip:UserB2@there.com>
Content-Type: application/sdp
Content-Length: ...
v=0
o=UserB 2890844527 2890844527 IN IP4 client2.there.com
s=Session SDP
c=IN IP4 110.111.112.114
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* The Proxy detects the answer by B2 and cancels the B1 branch */
F13 CANCEL Proxy -> B1
CANCEL sip:UserB1@there.com SIP/2.0
Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.1
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com
CSeq: 1 CANCEL
Content-Length: 0
F14 200 OK B1 -> Proxy
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.1
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>
Call-ID: 12345600@here.com
CSeq: 1 CANCEL
Content-Length: 0
F15 ACK A -> Proxy
ACK sip:UserB2@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060
Route: <sip:UserB2@there.com>
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=123456
Call-ID: 12345600@here.com
CSeq: 1 ACK
Content-Length: 0
F16 ACK Proxy -> B2
ACK sip:UserB2@there.com SIP/2.0
Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.1
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=123456
Call-ID: 12345600@here.com
CSeq: 1 ACK
Content-Length: 0
F17 487 Request Cancelled B1 -> Proxy
SIP/2.0 487 Request Cancelled
Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.1
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=3145678
Call-ID: 12345600@here.com
CSeq: 1 INVITE
Content-Length: 0
F18 ACK Proxy -> B1
ACK sip:UserB1@there.com SIP/2.0
Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.1
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=3145678
Call-ID: 12345600@here.com
CSeq: 1 ACK
Content-Length: 0
/* RTP streams are established between A and B2. User A Hangs Up
with User B2. */
F19 BYE A -> Proxy
BYE sip:UserB2@there.com SIP/2.0
Via: SIP/2.0/UDP here.com:5060
Route: <sip:UserB2@there.com>
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=123456
Call-ID: 12345600@here.com
CSeq: 2 BYE
Content-Length: 0
F20 BYE Proxy -> B2
BYE sip:UserB2@there.com SIP/2.0
Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.1
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=123456
Call-ID: 12345600@here.com
CSeq: 2 BYE
Content-Length: 0
F21 200 OK B2 -> Proxy
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=83749.1
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=123456
Call-ID: 12345600@here.com
CSeq: 2 BYE
Content-Length: 0
F22 200 OK Proxy -> A
SIP/2.0 200 OK
Via: SIP/2.0/UDP here.com:5060
From: BigGuy <sip:UserA@here.com>
To: LittleGuy <sip:UserB@there.com>;tag=123456
Call-ID: 12345600@here.com
CSeq: 2 BYE
Content-Length: 0
Acknowledgements
The authors wish to thank the following individuals for their The authors wish to thank the following individuals for their
assistance and review of this call flows document: Rohan Mahey, assistance and review of this call flows document: Rohan Mahey,
Hemant Agrawal, Henry Sinnreich, Dean Willis, David Devanatham, Joe Jonathan Rosenberg, Hemant Agrawal, Henry Sinnreich, Dean Willis,
Pizzimenti, Matt Cannon, John Hearty, the whole MCI WorldCom IPOP David Devanatham, Joe Pizzimenti, Matt Cannon, John Hearty, the
Design team, Scott Orton, Greg Osterhout, Pat Sollee, Doug whole MCI WorldCom IPOP Design team, Scott Orton, Greg Osterhout, Pat
Weisenberg, Danny Mistry, Steve McKinnon, and Denise Ingram, Denise Sollee, Doug Weisenberg, Danny Mistry, Steve McKinnon, and Denise
Caballero, Tom Redman, Ilya Slain, Pat Sollee, John Truetken, and Ingram, Denise Caballero, Tom Redman, Ilya Slain, Pat Sollee, John
others from MCI WorldCom, 3Com, Cisco, Lucent and Nortel. Truetken, and others from MCI WorldCom, 3Com, Cisco, Lucent and
Nortel.
4 References 3 References
[1] S. Bradner, "The Internet Standards Process -- Revision 3", BCP [1] S. Bradner, "The Internet Standards Process -- Revision 3", BCP
9, RFC 2026, October 1996. 9, RFC 2026, October 1996.
[2] A. Johnston, S. Donovan, R. Sparks, C. Cunningham, D. Willis, J. [2] A. Johnston, S. Donovan, R. Sparks, C. Cunningham, D. Willis, J.
Rosenberg, and H. Schulzrinne, "SIP Telephony Call Flow Rosenberg, and H. Schulzrinne, "SIP Call Flow Examples", Internet
Examples", Internet Draft, Internet Engineering Task Force, Draft, Internet Engineering Task Force, March 2001, Work in
November 2000, Work in Progress. Progress.
[3] R. Sparks, "SIP Call Control Transfer", Internet Draft, [3] R. Sparks, "SIP Call Control Transfer", Internet Draft,
Internet Engineering Task Force, September 2000, Internet Engineering Task Force, February 2001,
Work in Progress. Work in Progress.
[4] M. Handley, H. Schulzrinne, E. Schooler, and J. Rosenberg, "SIP: [4] M. Handley, H. Schulzrinne, E. Schooler, and J. Rosenberg, "SIP:
Session Initiation Protocol", RFC 2543, March 1999. Session Initiation Protocol", RFC 2543, March 1999.
5 Author's Addresses 4 Author's Addresses
Alan Johnston Email: alan.johnston@wcom.com Alan Johnston Email: alan.johnston@wcom.com
sip:alan@digitalari.com
Robert Sparks Email: rsparks@dynamicsoft.com Robert Sparks Email: rsparks@dynamicsoft.com
Chris Cunningham Email: ccunningham@dynamicsoft.com Chris Cunningham Email: ccunningham@dynamicsoft.com
Steve Donovan Email: sdonovan@dynamicsoft.com Steve Donovan Email: sdonovan@dynamicsoft.com
Kevin Summers Email: kevin.summers@ttimail.com Kevin Summers Email: kevin.summers@sonusnet.com
Copyright Notice Copyright Notice
"Copyright (C) The Internet Society 2000. All Rights Reserved. "Copyright (C) The Internet Society 2001. All Rights Reserved.
This document and translations of it may be copied and furnished to This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of Internet organizations, except as needed for the purpose of
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/