Internet Draft H. Khartabil draft-khartabil-sip-conferencing-00.txt Hotsip Category: Informational September 2001 Conferencing using SIP STATUS OF THIS MEMO This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts a reference material or to cite them other than as work in progress. The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. Copyright Notice Copyright (C) The Internet Society (2001). All Rights Reserved. Abstract The Session Initiation Protocol [1] has been defined for the establishment, maintenance and termination of calls between one or more users. This document takes the Event Notification in SIP extension [4] further and identifies a method for Conferencing using SIP [1]. We 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 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. The Instant Messaging extension [2] has been defined for messaging between 2 peers, but did 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 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 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 or leaving the IM conference). This is achieved using the Event: header described in [4]. We also extend the concept of a SIP User Agent and calling it a Conference Participant 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 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 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: ;ref=; 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: ;ref=; 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 | | | | |---------------->| | | | | |UN-SUBSCRIBE | | | | 200 OK | | | | |<----------------| | | | | | | 8.0 Open issues - Stopping unwanted people from joining the IM conference. - Do I need a REFER to each of REGISTER and SUBSCRIBE? How do I indicate that its a refer to REGISTER and not INVITE - Contact-header and tags in to-header and from-header are missing 9.0 Acknowledgments Khartabil [Page 28] Internet Draft IM Conferencing Using SIP February 2000 I would like to thank Jorgen Bjorkner for his contributions to this memo. I would also like to thank Henrik Gustafsson, Johan Liseborn and Aymen Naim for their time and support in writing this. 10.0 References [1] M. Handley, H. Schulzrinne, E. Schooler, and J. Rosenberg, "SIP: session initiation protocol," Request for Comments 2543, Internet. [2] J Rosenberg, et al., "SIP Extensions for Instant Messaging", Internet Draft, IETF; July 2001. Work in progress. [3] J Rosenberg, et al., "SIP Extensions for Presence", Internet Draft, IETF, July 2001. Work in progress. [4] Adam Roach, "SIP-Specific Event Notification", Internet Draft, IETF; July 2001. Work in progress. [5] R. Sparks, ôThe REFER Methodö, Internet Draft, IETF; July 2001. Work in progress. [6] J. Rosenberg, R. Sparks, D. Willis, B. Campbell, H. Schulzrinne, J. Lennox, C. Huitema, B. Aboba, and D. Gurle, "A lightweight presence information data format (LPIDF)," Internet Draft, Internet Engineering Task Force, June 2000. Work in progress. Khartabil [Page 29]