Abstract
The Session Initiation Protocol [1] has been defined for the
establishment, maintenance and termination of calls between one or
more users.
This-] {+are not an archival+} document [-takes the Event Notification in SIP extension [4]
further-] {+series,+} and [-identifies a method for Conferencing using SIP [1]. We-] {+expired
drafts, such as this one, are not available; please+} do not [-suggest any extensions to SIP in this document at all, but
rather make use of current extensions available.
1.0 Introduction
The Session Initiation Protocol [1] has been defined for the
establishment, maintenance and termination of calls between one or
more users. It has further been extended to support Event
Notification [4], Presence [3] and Instant Messaging [2].
Khartabil [Page 1]
Internet Draft IM Conferencing Using SIP February 2000
Conferencing seems to be a method of communication that is being
adopted heavily by small and large enterprises. Video and audio
have been the main focus, and many ways have been suggested for the
use of SIP-] {+ask+} for [-that purpose. This document suggests means of
registering to a conference and also uses an Event Package to enable
participants to get notified of participants joining or leaving the
conference.-]
{+copies... they are not available.+} The [-Instant Messaging extension [2] has been defined for messaging
between 2 peers, but did-] {+Secretariat does+} not [-identify a method for Instant Message
conferencing between more than 2 parties. This document suggests
means for doing so.
We seek to describe, in a consistent and complete fashion, a way for
conference signalling using SIP. This is achieved by extending the
Event Notification in SIP [4] and adding 2 new boxes, called
Conference Participants Server and Conference Participant, to the
SIP architecture.
Although this document presents IM conferencing, it also provides
means of how this concept can be used in a more general session type
conference using the INVITE method.
Referring users to join is done using the SIP REFER message [5].
2.0 Definitions
Conference Participants Server (CPS): a SIP server that handles
REGISTER, SUBSCRIBE for participants event and send NOTIFY.
Conference Participant (CP): a SIP client that can REGITER to a
conference and possibly SUBSCRIBE to a participants event.
IM Conference Participants Server (IMCPS): a CPS that handles IM
conferencing. It can also receive MESSAGE requests and distribute it
to participants.
IM Conference Participant (IMCP): a SIP client that can REGISTER to
an IM conference and possibly SUBSCRIBE-] {+have
information as+} to [-an IM participants event.
It can also send and receive MESSAGE requests from the IMCPS.
3.0 Overview of Operation
3.1 Architecture
We define a new type-] {+future plans+} of [-Application server, called a Conference
Particpants Server or CPS. A CPS is a logical function, and is
usually co-located with a proxy/registrar.
The CPS is capable of recognising a conference ID using-] the [-user-
name part of a Request-URI. It is also able to receive subscriptions
for participant events and send notifications for changes (for
Khartabil [Page 2]
Internet Draft IM Conferencing Using SIP February 2000
example: notify participants on a user joining-] {+authors+} or [-leaving the IM
conference). This is achieved using the Event: header described in
[4].
We also extend-] {+working groups WRT+} the [-concept of a SIP User Agent and calling it a
Conference Participant-]
{+deleted Internet-Draft.
For more information+} or [-CP. The CP is capable of sending
registrations to a conference, capable of subscribing to a CPS for
event notifications of-] a [-participant event, and is able to receive
notifications of those events. This is achieved using the Event-
header described in [4].
Typical communication scenario:
/---/ CP2
| |
| |
/-+-/
|
CP1 +---+----+ CP3
/---/ | | /---/
| | | CPS | | |
| +----+ +------+ |
/---/ | | /---/
+---+----+
|
|
/-+-/
| |CP4
| |
/---/
4.0 Presence Event Package
The SIP event framework [4] defines an abstract SIP extension for
subscribing to, and receiving notifications of, events. It leaves
the definition of many additional aspects of these events to
concrete extensions, also known as event packages. This qualifies
as an event package. This section fills in the information required
by [4].
4.1 Package Name
The name-] {+copy+} of [-this package is "participant". This name MUST appear
within the Event header in SUBSCRIBE request and NOTIFY request.
This section also serves as-] the [-IANA registration for-] {+document, contact+} the [-event
package "participant".
TODO: Define IANA template in sub-notify and fill it in here.
Example:
Khartabil [Page 3]
Internet Draft IM Conferencing Using SIP February 2000
Event: participant
4.2 SUBSCRIBE Bodies
A SUBSCRIBE request MAY contain a body. The purpose of the body
depends on its type but subscriptions will normally not contain
bodies. The To-header field, which identifies the conference,
combined with the event package name, are sufficient enough.
4.3 Subscription Duration
Conferences, as an estimate from experience, last for approximately
one hour. So an expiration period of one hour is suggested. The
subscriber MAY include an alternate expiration time. If the Expires-
header is not present, the default is one hour.
4.4 NOTIFY Bodies
Notifications are sent to the conference participants that have
subscribed. These notifications contain, in the request body, a list
of participants. Content-Type: text/lpidf is used.
4.5 Handling of forked requests
Forked requests are not allowed. Any NOTIFY messages not matching
the 200-class response to the initial SUBSCRIBE message are
responded to with a 481.
4.6 Rate of Notifications
It is almost impossible to predict the rate in this scenario. This
is because participants can join or leave the conference as they
please. But it is RECOMMENDED that notifications are not generated
at a rate faster than 5 seconds.
5.0 CP Behaviour
5.1 Users Joining
A user (or CP) wanting to join or initiate a conference sends a
REGISTER request to the CPS. The To header field will contain the
name (or ID) of the conference as the user-name in the URI.
REGISTER sip:cps.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:conference12@cps.hotsip.com
CSeq: 1 REGISTER
Call-ID: 3242434a34ff@hotsip.com
Expires: 3600
Contact: sip:userA@machineA.hotsip.com
Khartabil [Page 4]
Internet Draft IM Conferencing Using SIP February 2000
The CP, after receiving a 200 Ok for the REGISTER, SHOULD send a
SUBSCRIBE request subscribing for notifications of any changes to
the participant list of this particular conference. The 200 response
will contain a list of current participants, including the user that
just joined. This is represented in the body of the response.
Content-Type: text/lpidf is used [6]. Note that if the user in
initiating the conference, the list of participants in the 200 Ok
for the SUBSCRIBE will only contain that user.
A user not sending a subscription or a subscription refresh after
expiration will not receive any information about the list of
participants. Refer to [4] for subscription refresh details.
The Event: header defined in [X] is sent with the SUBSCRIBE. It
looks like
Event: participant
SUBSCRIBE sip:conference12@cps.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:conference12@cps.hotsip.com
CSeq: 1 SUBSCRIBE
Call-ID: 3242434a34ff@hotsip.com
Expires: 3600
Contact: sip:userA@machineA.hotsip.com
Event: participant
+---------+ UserB
/--/ REGISTER | CPS | /--/
| +-------->* | | |
/--/ +---------+ /--/
UserA
/--/
| | UserC
/--/
+---------+ UserB
/--/SUBSCRIBE | CPS | /--/
| +-------->* | | |
/--/ +---------+ /--/
UserA
/--/
| | UserC
/--/
Khartabil [Page 5]
Internet Draft IM Conferencing Using SIP February 2000
A 481 response to a SUBSCRIBE refresh informs the subscriber that
their subscription failed because it was a subscription refresh
against an unknown subscription. In this case, the subscriber SHOULD
generate a brand new SUBSCRIBE on a new call leg, and discard the
old subscription state.
5.5.1 Receiving Notifications
Notifications are sent to the conference participants that have
subscribed. These notifications contain, in the request body, a list
of participants. Content-Type: text/lpidf is used. The conference is
identified by the From: header and the list of participants are
identified by a list of contact headers. The CP uses this
information to inform the user (via GUI) with the current
participants.
NOTIFY sip:userA@machineA.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:conference12@cps.hotsip.com
To: sip:userA@hotsip.com
CSeq: 1 NOTIFY
Call-ID: 3242434a34ff@hotsip.com
Expires: 3600
Contact: sip:conference12@cps.hotsip.com
Upon the reception on the NOTIFY, and after checking that call-leg
exists, the CP responds with a 200 ok. If the call-leg does not
exist, a 481 response is sent.
5.2 Leaving a Conference
There are 2 different approaches for a user to leave a conference.
The first approach is as simple as not sending refreshes to the
REGISTER nor the SUBSCRIBE. The second method is by sending a
REGISTER with Expires: 0.
REGISTER sip:cps.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:conference12@cps.hotsip.com
CSeq: 2 REGISTER
Call-ID: 3242434a34ff@hotsip.com
Expires: 0
Contact: sip:userA@machineA.hotsip.com
This MUST be followed by a SUBSCRIBE with Expires: 0 if a
subscription for event updates has been sent earlier.
SUBSCRIBE sip:conference12@cps.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:conference12@imcs.hotsip.com
CSeq: 2 SUBSCRIBE
Khartabil [Page 6]
Internet Draft IM Conferencing Using SIP February 2000
Call-ID: 3242434a34ff@hotsip.com
Expires: 0
Contact: sip:userA@machineA.hotsip.com
Event: participant
This method should also be applied if CP is receiving unwanted
MESSAGEs, media or NOTIFYs.
5.3 Inviting Users to Join
2 ways a user A can invite another user B to join.
1. Informing user B on the conference ID and the conference server
by other means outside SIP. The user B can then send the required
REGISTER and SUBSCRIBE requests.
2. Sending a REFER request
REFER sip:userB@hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:userB@hotsip.com
CSeq: 1 REFER
Call-ID: 3242434a34ff@hotsip.com
Refer-To: conference12@imcps.hotsip.com
Referred-By:
<sip:userA@hotsip.com>;ref=<conference12@imcps.hotsip.com>;
scheme=pgp;pgp-version="5.0";signature="signature goes here"
Content-Lenght: 0
+---------+ UserB
/--/ | IMCS | /--/
| / | | | |
/--/ / +-----X---+ /--/
UserA / /|/
/ |
/ |
/ | (2) REGISTER & SUBSCRIBE
(1) REFER / |
/ |
/ |
/ |
/ |
// /-+/
/X | UserC
/ /--/
5.4 Sender and Instant Inbox
The Sender and Instant Inbox behave in the same way as described in
[2]. Call-legs will be between the IMCP and IMCPS, but never between
IMCP - IMCP.
Khartabil [Page 7]
Internet Draft IM Conferencing Using SIP February 2000
+---------+ UserB
/--/ MESSAGE | IMCPS | MESSAGE /--/
| +-------->* +---------->* |
/--/ +----+----+ /--/
UserA |
|
| MESSAGE
|
/|/
/-*/
| | UserC
/--/
MESSAGE sip:conference12@cps.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:conference12@cps.hotsip.com
CSeq: 1 MESSAGE
Call-ID: 3242434a34ff@hotsip.com
Contact: sip:userA@machineA.hotsip.com
Content-Type: text/plain
Content-Length: 14
Hello World!
The To: header field used in the MESSAGE request MUST be identical
to the one used in the REGISTER. The Sender will then awaits a
response from the IMCS.
5.5 UAC In Full Mesh Session Conference
After a user creates a conference call (using REGISTER) and
subscribes to participant event, s/he waits for a notification
informing them of new participants. When that occurs, an INVITE is
sent to that participant directly and to all the new participants in
the NOTIFY.
5.6 UAC Using Conference Bridge
In the case when the CPS is set up for use with a conference bridge
(or it can behave as a conference bridge), the CP only sends one
INVITE at the very start when joining the conference. All Invites
are forwarded to the conference bridge which is a matter of
configuration of the CS. Existing CPs participating need not send an
INVITE to every new participant, the CPS MUST do that. The NOTIFY
contains the actual set of participants of the conference. The
contact field points to the CPS where to send the INVITE.
The difference between this and the IMCPS is that the INVITE does
not get distributed by the CPS, but sent to the conferencing bridge
instead.
Khartabil [Page 8]
Internet Draft IM Conferencing Using SIP February 2000
6.0 CPS behaviour
6.1 Receiving Registrations to Join
Upon reception of a REGISTER request, the CPS searches in its
registrar database for the existence of the conference using the To:
header. If it exists, it adds the new contact to the To: header
entry along with the rest of the contacts. If no entry is found for
the To: header, the CPS assumes a new conference is initiated and
adds the new entry for the To along with the contact sent in the
REGISTER request. If no contact is present, no entry is created or
added. If successful, a 200 Ok is returned containing all the
current contacts. A 4xx class response is returned if registration
is not successful
Note: A policy for a CPS could be to limit the number of conferences
or only allow certain conference IDs to be used.
If a SUBSCRIBE is received, the CPS checks for the Event: header
containing the token participant. A 400 Bad Request is returned if
not present; else, CPS checks if this particular conference exists.
If not, a 404 Not Found is returned, else the contact is added to
the list of subscribers for event notifications.
The check for the existence of the conference is performed by
looking in the Registrar Database for the To: header present in the
SUBSCRIBE.
If no SUBSCRIBE is received, that particular user does not get
notified of who has joined to left the Conference. This user is
referred to as ôBlind Participantö.
The registration list and the subscription list for a particular
conference must be kept separate (a user might decide to leave a
conference but still would like to know who is participating).
6.2 Sending Notifications
A NOTIFY request is sent to subscribers when a participant joins or
leaves the conference. A NOTIFY MUST also be sent to a participant
who had just subscribed. I.e. immediately after a 200 Ok response
had been sent for a SUBSCRIBE request.
The header Event: MUST be present with the token participant
NOTIFY sip:userA@machineA.hotsip.com SIP/2.0
Via: SIP/2.0/UDP cps.hotsip.com
From: sip:conference12@cps.hotsip.com
To: sip:userA@hotsip.com
CSeq: 1 NOTIFY
Call-ID: 3242434a34ff@hotsip.com
Event: participant
Content-Type: text/lpidf
Khartabil [Page 9]
Internet Draft IM Conferencing Using SIP February 2000
Content-Length: 154
To: sip:conference12@cps.hotsip.com
Contact: sip:userA@machineA.hotsip.com
Contact: sip:userB@machineB.hotsip.com
Contact: sip:userC@machineC.hotsip.com
LPIDF [6] is the content-type used
If a subscription expires and no refresh has been sent by the CP,
that CP will be removed from the list of subscribers.
6.3 CP Leaving a Conference
There are 2 methods of leaving a conference as mentioned in section
4.2.
Not refreshing his/her registration - the CPS deletes the entry from
the list of participants.
Registering with Expires: 0 û the CPS, upon reception of the
REGISTER request, deletes the entry. Note that if a subscription for
events was sent earlier and SUBSCRIBE with Expires: 0 was not sent
after the de-registration, the CPS will continue sending
notifications to that particular IMCC.
If, after removing a contact, there are no more participants listed,
the conference entry is removed. Again, registration list and
subscription list must be kept separate.
6.4 Receiving an Instant Message from a Sender
MESSAGE communication is perceived as between IMCP and IMCPS. So,
when the IMCPS received a MESSAGE request from the IMCP, it
immediately responds with a 200 Ok if the IM conference exists,
otherwise 404 Not Found is sent.
The IM conference existence is checked using the To: header field in
the MESSAGE request.
If a 200 Ok is returned, the IMCPS then distributes the MESSAGE to
the rest of the participants using the registration list of
contacts. The IMCPS makes sure that the sender of the message does
not get a copy of the message back by checking each contact in the
list against the Contact: header sent in the MESSAGE request.
Each MESSAGE request sent to a participant has a distinguishable
call-leg. This is dissimilar to proxy forking in that each MESSAGE
request sent to a contact is treated as a separate transaction and
no CANCEL is sent upon reception of the first 200 Ok response form
any leg.
Khartabil [Page 10]
Internet Draft IM Conferencing Using SIP February 2000
UserA UserB
/---/ (1) MESSAGE +-------+(3) MESSAGE /---/
| |------------>* IMCPS |------------->* |
| *<------------| *<-------------| |
/---/ (2) 200 Ok +----*--+ (4) 200 Ok /---/
| |/
| |
| |
| |
(3) MESSAGE| | (4) 200 Ok
| |
| |
/| |
/*--/
| |
| | UserC
/---/
7.0 Examples
7.1 IM Flow Example
Please view in a fixed-width font such as Courier.
UserA IMCPS UserB UserC
| | | |
| (F1) REGISTER | | |
|------------------>| | |
| | | |
| (F2) 200 OK | | |
|<------------------| | |
| | | |
| (F3) SUBSCRIBE | | |
|------------------>| | |
| | | |
| (F4) 200 OK | | |
|<------------------| | |
| | | |
| (F5) NOTIFY | | |
|<------------------| | |
| | | |
| (F6) 200 OK | | |
|------------------>| | |
| | | |
| | (F7) REGISTER | |
| |<------------------| |
| | | |
| | (F8) 200 OK | |
Khartabil [Page 11]
Internet Draft IM Conferencing Using SIP February 2000
| |------------------>| |
| | | |
| (F9) NOTIFY | | |
|<------------------| | |
| | | |
|(F10) 200 OK | | |
|------------------>| | |
| | | |
| |(F11) SUBSCRIBE | |
| |<------------------| |
| | | |
| |(F12)200 OK | |
| |------------------>| |
| | | |
| |(F13) NOTIFY | |
| |------------------>| |
| | | |
| |(F14) 200 OK | |
| |<------------------| |
| | | |
|(F15) MESSAGE | | |
|------------------>| | |
| | | |
|(F16) 200 OK | | |
|<------------------| | |
| | | |
| |(F17) MESSAGE | |
| |------------------>| |
| | | |
| |(F18) 200 OK | |
| |<------------------| |
| | | |
|(F19) REFER | | |
|---------------------------------------------------------->|
| | | |
| | |(F20) 200 OK |
|<----------------------------------------------------------|
| | | |
| | |(F21) REGISTER |
| |<--------------------------------------|
| | | |
| |(F22) 200 OK | |
| |-------------------------------------->|
| | | |
|(F23) NOTIFY | | |
|<----------------------------------------------------------|
| | | |
| | |(F24) 200 OK |
|---------------------------------------------------------->|
| | | |
|(F25) NOTIFY | | |
|<------------------| | |
| | | |
| |(F26) NOTIFY | |
Khartabil [Page 12]
Internet Draft IM Conferencing Using SIP February 2000
| |------------------>| |
| | | |
|(F27) 200 OK | | |
|------------------>| | |
| | | |
| |(F28) 200 OK | |
| |<------------------| |
| | | |
| |(F29) MESSAGE | |
| |<------------------| |
| | | |
| |(F30) 200 OK | |
| |------------------>| |
| | | |
|(F31) MESSAGE | | |
|<------------------| | |
| | | |
| |(F32) MESSAGE | |
| |-------------------------------------->|
| | | |
|(F33) 200 OK | | |
|------------------>| | |
| | | |
| | |(F34) 200 OK |
| |<--------------------------------------|
| | | |
| | |(F35) REGISTER |
| |<--------------------------------------|
| | | |
| |(F36) 200 OK | |
| |-------------------------------------->|
| | | |
|(F37) NOTIFY | | |
|<------------------| | |
| | | |
| |(F38) NOTIFY | |
| |-------------------------------------->|
| | | |
|(F39) 200 OK | | |
|------------------>| | |
| | | |
| | |(F40) 200 OK |
| |<--------------------------------------|
| | | |
| | | |
| | | |
Khartabil [Page 13]
Internet Draft IM Conferencing Using SIP February 2000
(F1) UserA registers a new IM conference with the IMCPS
REGISTER sip:imcps.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 REGISTER
Call-ID: 3242434a34ff@hotsip.com
Expires: 3600
Contact: sip:userA@machineA.hotsip.com
(F2) IMCPS replies with a 200 Ok
SIP/2.0 200 Ok
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 REGISTER
Call-ID: 3242434a34ff@hotsip.com
Expires: 3600
Contact: sip:userA@machineA.hotsip.com
(F3) UserA subscribes to notifications of the event someone joining
or leaving the IM conference
SUBSCRIBE sip:conference12@imcps.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 SUBSCRIBE
Call-ID: 3242434a34ff@hotsip.com
Expires: 3600
Contact: sip:userA@machineA.hotsip.com
Event: im-conference
(F4) 200 Ok for the subscription
SIP/2.0 200 Ok
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 SUBSCRIBE
Call-ID: 3242434a34ff@hotsip.com
Expires: 3600
Contact: sip:conference12@imcps.hotsip.com
Event: im-conference
(F5) Notifications straight after a SUBSCRIBE
NOTIFY sip:userA@machineA.hotsip.com SIP/2.0
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
Khartabil [Page 14]
Internet Draft IM Conferencing Using SIP February 2000
To: sip:userA@hotsip.com
CSeq: 1 NOTIFY
Call-ID: 3242434a34ff@hotsip.com
Event: im-conference
Content-Type: text/lpidf
Content-Length: 78
To: sip:conference12@imcps.hotsip.com
Contact: sip:userA@machineA.hotsip.com
(F6) 200 Ok for NOTIFY
SIP/2.0 200 Ok
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userA@hotsip.com
CSeq: 1 NOTIFY
Call-ID: 3242434a34ff@hotsip.com
(F7) UserB now joins the IM Conference by sending a REGISTER
REGISTER sip:imcps.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineB.hotsip.com
From: sip:userB@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 REGISTER
Call-ID: 533456dda22fc@hotsip.com
Expires: 3600
Contact: sip:userB@machineB.hotsip.com
(F8) IMCPS replies with a 200 Ok
SIP/2.0 200 Ok
Via: SIP/2.0/UDP machineB.hotsip.com
From: sip:userB@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 REGISTER
Call-ID: 533456dda22fc@hotsip.com
Expires: 3600
Contact: sip:userA@machineA.hotsip.com
Contact: sip:userB@machineB.hotsip.com
(F9) Notifications to current participants (UserA) of new
participants, UserB, joining (as well as old participants)
NOTIFY sip:userA@machineA.hotsip.com SIP/2.0
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userA@hotsip.com
CSeq: 2 NOTIFY
Call-ID: 3242434a34ff@hotsip.com
Event: im-conference
Content-Type: text/lpidf
Content-Length: 118
Khartabil [Page 15]
Internet Draft IM Conferencing Using SIP February 2000
To: sip:conference12@imcps.hotsip.com
Contact: sip:userA@machineA.hotsip.com
Contact: sip:userB@machineB.hotsip.com
(F10) 200 Ok for NOTIFY
SIP/2.0 200 Ok
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userA@hotsip.com
CSeq: 2 NOTIFY
Call-ID: 3242434a34ff@hotsip.com
(F11) UserB subscribes to notifications of the event someone joining
or leaving the IM conference
SUBSCRIBE sip:conference12@imcps.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineB.hotsip.com
From: sip:userB@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 SUBSCRIBE
Call-ID: 533456dda22fc@hotsip.com
Expires: 3600
Contact: sip:userB@machineB.hotsip.com
Event: im-conference
(F12) 200 Ok for the subscription
SIP/2.0 200 Ok
Via: SIP/2.0/UDP machineB.hotsip.com
From: sip:userB@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 SUBSCRIBE
Call-ID: 533456dda22fc@hotsip.com
Expires: 3600
Contact: sip:conference12@imcps.hotsip.com
Event: im-conference
(F13) Notifications straight after a SUBSCRIBE
NOTIFY sip:userB@machineB.hotsip.com SIP/2.0
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userB@hotsip.com
CSeq: 1 NOTIFY
Call-ID: 533456dda22fc@hotsip.com
Event: im-conference
Content-Type: text/lpidf
Content-Length: 118
To: sip:conference12@imcps.hotsip.com
Contact: sip:userA@machineA.hotsip.com
Contact: sip:userB@machineB.hotsip.com
Khartabil [Page 16]
Internet Draft IM Conferencing Using SIP February 2000
(F14) 200 Ok for NOTIFY
SIP/2.0 200 Ok
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userB@hotsip.com
CSeq: 1 NOTIFY
Call-ID: 533456dda22fc@hotsip.com
(F15) a message sent from UserA
MESSAGE sip:conference12@imcps.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 MESSAGE
Call-ID: 3242434a34ff@hotsip.com
Contact: sip:userA@machineA.hotsip.com
Content-Type: text/plain
Content-Length: 14
Hello there!
(F16) 200 Ok for MESSAGE from the IMCPS
SIP/2.0 200 Ok
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 MESSAGE
Call-ID: 3242434a34ff@hotsip.com
(F17) The message gets distributed to the rest of the participants
(UserB only in this case)
MESSAGE sip:UserB@machineB.hotsip.com SIP/2.0
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userB@hotsip.com
CSeq: 1 MESSAGE
Call-ID: 533456dda22fc@hotsip.com
Content-Type: text/plain
Content-Length: 14
Hello there!
(F18) 200 Ok for MESSAGE
SIP/2.0 200 Ok
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userB@hotsip.com
CSeq: 1 MESSAGE
Khartabil [Page 17]
Internet Draft IM Conferencing Using SIP February 2000
Call-ID: 533456dda22fc@hotsip.com
(F19) UserA asks UserC to join the IM conference by sending a REFER
REFER sip:userC@hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:userC@hotsip.com
CSeq: 1 REFER
Call-ID: 3242434a34ff@hotsip.com
Refer-To: conference12@imcps.hotsip.com
Referred-By:
<sip:userA@hotsip.com>;ref=<conference12@imcps.hotsip.com>;
scheme=pgp;pgp-version="5.0";signature="signature goes here"
Content-Lenght: 0
(F20) 202 Accepted for REFER
SIP/2.0 202 Accepted
Via: SIP/2.0/UDP machineA.hotsip.com
From: sip:userA@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 REFER
Call-ID: 3242434a34ff@hotsip.com
(F21) UserC registers a to the IM conference with the IMCPS
REGISTER sip:imcps.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineC.hotsip.com
From: sip:userC@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 REGISTER
Call-ID: 121212abcd@hotsip.com
Expires: 3600
Contact: sip:userC@machineC.hotsip.com
(F22) IMCPS replies with a 200 Ok
SIP/2.0 200 Ok
Via: SIP/2.0/UDP machineC.hotsip.com
From: sip:userC@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 REGISTER
Call-ID: 121212abcd@hotsip.com
Expires: 3600
Contact: sip:userA@machineA.hotsip.com
Contact: sip:userB@machineB.hotsip.com
Contact: sip:userC@machineC.hotsip.com
(F23) NOTIFY for the refer
NOTIFY userA@hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineC.hotsip.com
Khartabil [Page 18]
Internet Draft IM Conferencing Using SIP February 2000
From: userC@hotsip.com
To: userA@hotsip.com
Call-ID: 3242434a34ff@hotsip.com
CSeq: 1993402 NOTIFY
Event: refer
Content-Type: application/sip
Content-Length: 16
SIP/2.0 200 OK
(F24) 200 Ok for notify
SIP/2.0 200 OK
Via: SIP/2.0/UDP machineC.hotsip.com
From: userC@hotsip.com
To: userA@hotsip.com
Call-ID: 3242434a34ff@hotsip.com
CSeq: 1993402 NOTIFY
Content-Length: 0
(F25) Notifications to UserA of new participant, UserC, joining (as
well as old participants)
NOTIFY sip:userA@machineA.hotsip.com SIP/2.0
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userA@hotsip.com
CSeq: 3 NOTIFY
Call-ID: 3242434a34ff@hotsip.com
Event: im-conference
Content-Type: text/lpidf
Content-Length: 158
To: sip:conference12@imcps.hotsip.com
Contact: sip:userA@machineA.hotsip.com
Contact: sip:userB@machineB.hotsip.com
Contact: sip:userC@machineC.hotsip.com
(F26) Notifications to UserB of new participant, UserC, joining (as
well as old participants)
NOTIFY sip:userB@machineB.hotsip.com SIP/2.0
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userB@hotsip.com
CSeq: 1 NOTIFY
Call-ID: 533456dda22fc@hotsip.com
Event: im-conference
Content-Type: text/lpidf
Content-Length: 158
To: sip:conference12@imcps.hotsip.com
Contact: sip:userA@machineA.hotsip.com
Khartabil [Page 19]
Internet Draft IM Conferencing Using SIP February 2000
Contact: sip:userB@machineB.hotsip.com
Contact: sip:userC@machineC.hotsip.com
(F27) 200 Ok for NOTIFY to UserA
SIP/2.0 200 Ok
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userA@hotsip.com
CSeq: 3 NOTIFY
Call-ID: 3242434a34ff@hotsip.com
(F28) 200 Ok for NOTIFY to UserB
SIP/2.0 200 Ok
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userB@hotsip.com
CSeq: 1 NOTIFY
Call-ID: 533456dda22fc@hotsip.com
(F29) UserB sends a message to the IM conference
MESSAGE sip:conference12@imcps.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineB.hotsip.com
From: sip:userB@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 MESSAGE
Call-ID: 533456dda22fc@hotsip.com
Content-Type: text/plain
Content-Length: 46
Look everybody, UserC just joined. Hi UserC!
(F30) 200 Ok for MESSAGE from the IMCPS to UserB
SIP/2.0 200 Ok
Via: SIP/2.0/UDP machineB.hotsip.com
From: sip:userB@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 1 MESSAGE
Call-ID: 533456dda22fc@hotsip.com
(F31) The message gets distributed to the rest of the participants
(UserA in this case)
MESSAGE sip:UserA@machineA.hotsip.com SIP/2.0
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userA@hotsip.com
CSeq: 1 MESSAGE
Call-ID: 3242434a34ff@hotsip.com
Content-Type: text/plain
Content-Length: 46
Khartabil [Page 20]
Internet Draft IM Conferencing Using SIP February 2000
Look everybody, UserC just joined. Hi UserC!
(F32) The message gets distributed to the rest of the participants
(UserC in this case)
MESSAGE sip:UserC@machineC.hotsip.com SIP/2.0
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userC@hotsip.com
CSeq: 1 MESSAGE
Call-ID: 121212abcd@hotsip.com
Content-Type: text/plain
Content-Length: 46
Look everybody, UserC just joined. Hi UserC!
(F33) 200 Ok for MESSAGE
SIP/2.0 200 Ok
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userA@hotsip.com
CSeq: 1 MESSAGE
Call-ID: 3242434a34ff@hotsip.com
(F34) 200 Ok for MESSAGE
SIP/2.0 200 Ok
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userC@hotsip.com
CSeq: 1 MESSAGE
Call-ID: 121212abcd@hotsip.com
(F35) UserC leaves the IM conference (note that UserC does not need
to send an un-SUBSCRIBE because s/he did not subscribe. If UserA or
UserB is to leave, a SUBSCRIBE with Expires: 0 must be sent to the
IMCPS)
REGISTER sip:imcps.hotsip.com SIP/2.0
Via: SIP/2.0/UDP machineC.hotsip.com
From: sip:userC@hotsip.com
To: sip:conference12@imcps.hotsip.com
CSeq: 2 REGISTER
Call-ID: 121212abcd@hotsip.com
Expires: 0
Contact: sip:userC@machineC.hotsip.com
(F36) IMCPS replies with a 200 Ok
SIP/2.0 200 Ok
Via: SIP/2.0/UDP machineC.hotsip.com
From: sip:userC@hotsip.com
Khartabil [Page 21]
Internet Draft IM Conferencing Using SIP February 2000
To: sip:conference12@imcps.hotsip.com
CSeq: 2 REGISTER
Call-ID: 121212abcd@hotsip.com
Expires: 3600
Contact: sip:userA@machineA.hotsip.com
Contact: sip:userB@machineB.hotsip.com
(F37) Notifications to UserA of UserC leaving (as well as
participants remaining)
NOTIFY sip:userA@machineA.hotsip.com SIP/2.0
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userA@hotsip.com
CSeq: 4 NOTIFY
Call-ID: 3242434a34ff@hotsip.com
Event: im-conference
Content-Type: text/lpidf
Content-Length: 118
To: sip:conference12@imcps.hotsip.com
Contact: sip:userA@machineA.hotsip.com
Contact: sip:userB@machineB.hotsip.com
(F38) Notifications to UserB of new UserC leaving (as well as
participants remaining)
NOTIFY sip:userB@machineB.hotsip.com SIP/2.0
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userB@hotsip.com
CSeq: 2 NOTIFY
Call-ID: 533456dda22fc@hotsip.com
Event: im-conference
Content-Type: text/lpidf
Content-Length: 118
To: sip:conference12@imcps.hotsip.com
Contact: sip:userA@machineA.hotsip.com
Contact: sip:userB@machineB.hotsip.com
(F39) 200 Ok for NOTIFY to UserA
SIP/2.0 200 Ok
Via: SIP/2.0/UDP imcps.hotsip.com
From: sip:conference12@imcps.hotsip.com
To: sip:userA@hotsip.com
CSeq: 4 NOTIFY
Call-ID: 3242434a34ff@hotsip.com
(F40) 200 Ok for NOTIFY to UserB
SIP/2.0 200 Ok
Via: SIP/2.0/UDP imcps.hotsip.com
Khartabil [Page 22]
Internet Draft IM Conferencing Using SIP February 2000
From: sip:conference12@imcps.hotsip.com
To: sip:userB@hotsip.com
CSeq: 2 NOTIFY
Call-ID: 533456dda22fc@hotsip.com
7.2 Full Mesh Conference Example
Please view in a fixed-width font such as Courier.
UserA UserB UserC CS
| | | |
| REGISTER | | |
|---------------------------------------------------------->|
| | | |
| 200 OK | | |
|<----------------------------------------------------------|
| | | |
| SUBSCRIBE | | |
|---------------------------------------------------------->|
| | | |
| 200 OK | | |
|<----------------------------------------------------------|
| | | |
| NOTIFY | | |
|---------------------------------------------------------->|
| | | |
| 200 OK | | |
|<----------------------------------------------------------|
| | | |
| | REGISTER | |
| |-------------------------------------->|
| | | |
| | 200 OK | |
| |<--------------------------------------|
| | | |
| NOTIFY | | |
|<----------------------------------------------------------|
| | | |
| 200 OK | | |
|---------------------------------------------------------->|
| | | |
| INVITE | | |
|------------------>| | |
| | | |
| 200 OK | | |
|<------------------| | |
| | | |
| ACK | | |
|------------------>| | |
| | | |
| | | |
| | | |
Khartabil [Page 23]
Internet Draft IM Conferencing Using SIP February 2000
| | | |
| | SUBSCRIBE | |
| |-------------------------------------->|
| | | |
| | 200 OK | |
| |<--------------------------------------|
| | | |
| | NOTIFY | |
| |<--------------------------------------|
| | | |
| | 200 OK | |
| |-------------------------------------->|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | REGISTER |
| | |------------------>|
| | | |
| | | 200 OK |
| | |<------------------|
| | | |
| | | NOTIFY |
|<----------------------------------------------------------|
| | | |
| | | 200 OK |
|---------------------------------------------------------->|
| | | |
| INVITE | | |
|-------------------------------------->| |
| | | |
| 200 OK | | |
|<--------------------------------------| |
| | | |
| ACK | | |
|-------------------------------------->| |
| | | |
| | NOTIFY | |
| |<--------------------------------------|
| | | |
| | 200 OK | |
| |-------------------------------------->|
| | | |
| | INVITE | |
| |------------------>| |
| | | |
| | 200 OK | |
| |<------------------| |
| | | |
| | ACK | |
| |------------------>| |
Khartabil [Page 24]
Internet Draft IM Conferencing Using SIP February 2000
| | | |
| | | SUBSCRIBE |
| | |------------------>|
| | | |
| | | 200 OK |
| | |<------------------|
| | | |
| | | NOTIFY |
| | |<------------------|
| | | |
| | | 200 OK |
| | |------------------>|
| | BYE | |
| |------------------>| |
| | | |
| | 200 OK | |
| |<------------------| |
| | | |
| BYE | | |
|<------------------| | |
| | | |
| 200 OK | | |
|------------------>| | |
| | | |
| | REGISTER | |
| |-------------------------------------->|
| | | |
| | 200 OK | |
| |<--------------------------------------|
| | | |
| | | NOTIFY |
|<----------------------------------------------------------|
| | | |
| | | 200 OK |
|---------------------------------------------------------->|
| | | |
| | | NOTIFY |
| |<--------------------------------------|
| | | |
| | | 200 OK |
| |-------------------------------------->|
| | | |
| | | NOTIFY |
| | |<------------------|
| | | |
| | | 200 OK |
| | |------------------>|
| | | |
| | | SUBSCRIBE |
| |-------------------------------------->|
| | | |
| | | 200 OK |
| |<--------------------------------------|
| | | |
Khartabil [Page 25]
Internet Draft IM Conferencing Using SIP February 2000
7.3 Conference Bridge Example
Please view in a fixed-width font such as Courier.
UserA UserB UserC CS CB
| | | | |
| REGISTER | | | |
|---------------------------------------------------->| |
| | | | |
| 200 OK | | | |
|<----------------------------------------------------| |
| | | | |
| SUBSCRIBE | | | |
|---------------------------------------------------->| |
| | | | |
| 200 OK | | | |
|<----------------------------------------------------| |
| | | | |
| NOTIFY | | | |
|<----------------------------------------------------| |
| | | | |
| 200 OK | | | |
|---------------------------------------------------->| |
| | | | |
| INVITE | | | |
|---------------------------------------------------->| |
| | | | |
| 100 TRYING | | | INVITE |
|<----------------------------------------------------|------------->|
| | | | 200 OK |
| 200 OK | | |<-------------|
|<----------------------------------------------------| |
| | | | |
| ACK | | | |
|---------------------------------------------------->| ACK |
| | | |------------->|
| | REGISTER | | |
| |---------------------------------->| |
| | | | |
| | 200 OK | | |
| |<----------------------------------| |
| | | | |
| | | NOTIFY | |
|<----------------------------------------------------| |
| | | | |
| | | 200 OK | |
|---------------------------------------------------->| |
| | | | |
| | SUBSCRIBE | | |
| |---------------------------------->| |
| | | | |
| | 200 OK | | |
Khartabil [Page 26]
Internet Draft IM Conferencing Using SIP February 2000
| |<----------------------------------| |
| | | | |
| | | NOTIFY | |
| |<----------------------------------| |
| | | | |
| | | 200 OK | |
| |---------------------------------->| |
| | | | |
| | INVITE | | |
| |---------------------------------->| |
| | | | |
| | 100 TRYING | | INVITE |
| |<----------------------------------|------------->|
| | | | 200 OK |
| | 200 OK | |<-------------|
| |<----------------------------------| |
| | | | |
| | ACK | | |
| |---------------------------------->| ACK |
| | | |------------->|
| | | REGISTER | |
| | |---------------->| |
| | | | |
| | | 200 OK | |
| | |<----------------| |
| | | | |
| | | NOTIFY | |
|<----------------------------------------------------| |
| | | | |
| | | 200 OK | |
|-----------------------------------------------------| |
| | | | |
| | | NOTIFY | |
| |<----------------------------------| |
| | | | |
| | | 200 OK | |
| |-----------------------------------| |
| | | | |
| | | NOTIFY | |
| | |<----------------| |
| | | | |
| | | 200 OK | |
| | |---------------->| |
| | | | |
| | | INVITE | |
| | |---------------->| |
| | | | |
| | | 100 TRYING | |
| | |<----------------| INVITE |
| | | |------------->|
| | | | 200 OK |
| | | 200 OK |<-------------|
| | |<----------------| |
| | | | |
Khartabil [Page 27]
Internet Draft IM Conferencing Using SIP February 2000
| | | ACK | |
| | |---------------->| ACK |
| | | |------------->|
| | | | |
| | | BYE | |
| |---------------------------------->| BYE |
| | | |------------->|
| | | | |
| | | | 200 OK |
| | | 200 OK |<-------------|
| |<----------------------------------| |
| | | | |
| | | REGISTER | |
| |-----------------|---------------->| |
| | | | UN-REGISTER |
| | | 200 OK | |
| |<----------------|-----------------| |
| | | | |
| | | NOTIFY | |
|<----------------------------------------------------| |
| | | | |
| | | 200 OK | |
|---------------------------------------------------->| |
| | | | |
| | | NOTIFY | |
| |<----------------------------------| |
| | | | |
| | | 200 OK | |
| |---------------------------------->| |
| | | | |
| | | NOTIFY | |
| | |<----------------| |
| | | | |
| | | 200 OK | |
| | |---------------->| |
| | | | |
| | | SUBSCRIBE | |
| | |---------------->| |
| | |