Subject: [SIP] sip chat (group messaging)

From: "farhan" <[email-masked]>
Date: Sun, 3 Sep 2000 10:31:51 +0530

while sip is not really meant for an irc like service, we cannot deny that :
1. text chat is a real time session.
2. it needs initiation as much as video conference does.
3. it sip's holy duty to provide for group messaging. (it is the most
primitive of real time conferences on the Net).

MESSAGE does a good job of two-party chat. How does it evolve into a
multiway chat? where in a group of users, every message of a user goes to
every other user?

Dr. Schulzrinne has recommended the use of sip:[email-masked] as a
way out. the userid here, is ofcourse, a moniker for the group. much like a
mailing list. This has two deployments alternatives:
1. a group is hosted (much like a mailing list) by a separate host computer.
this means that it is impossible to create groups dynamically. If I am
chatting with A and I get a message from B and I want to chat together with
A and B such that when I type a message both A and B get it and vice versa
(or is it multi-versa?). I will not be able to dynamically create and
cleardown chat groups.
2. The groupchat can also be hosted by one of the participants of the chat
by colocating a group messaging server along with the UA (the group
messaging server is not a very complicated thing once you already have a
MESSAGE capabilty on your basic sip stack). If the users who hosts the group
logs out, the group tumbles.

An ideal solution would be that all the chatters in the group should be
sending separate MESSAGEs to each of the participants of the group.
Therefore the group is completely peer-to-peer (wow! we are with it now!).
As the text messages are typically small (less than 64 bytes on an average)
and the groups are typically about 4-5 people rarely going to 10 (I only
once saw a group of about 500 when roger waters of the group pink floyd came
onto MSN chat). This means that bandwidth is not really an issue and it is
quite normal to expect a user to have enough bandwidth to send 100 byte
messages to 5 people every 15-20 seconds (if you are a very chatty person).

We have an experimental system under test wherein this is what we are doing:
1. All the users chatting in a group share a common Call-ID. The call-Id
helps in differentiating between a message meant for the group (so that the
receiving user knows that others in the group have also read/seen the
message) and a private message from the same sender meant only for the
receiver's eyes.
2. When a new user is added to the group, it is done by sending a message to
the new user with the call-id of the group, thus the reply messages from the
new group member use the same callid.
3. Until here, everything is exactly as per the rosenberg-im draft document.
this where things start getting murky.
4. How does a new user know who else are in the group? we need a way to pass
the group member's list to the new user.
5. When a new member sends a message to the each of the group members, the
group members add the sip url of the new member to the group list.

Right now a new member is being JOINed by a flagrant voilation of sip
protocol: we are using INVITE method to signal to a new user that she should
join the group. sdp describes the session as "m=application 5060 SIP/2.0
MESSAGE" and lists the participants as a number of "a=participant:" fields.

are there any suggestions for a better alternative? I would like to preserve
being independent of a group chat servers for the simple reason that there
are no resource constraints that require anything beyond what any user on
the internet has and the rest is engineering.

- farhan.

_______________________________________________
SIP mailing list
[email-masked]
http://lists.bell-labs.com/mailman/listinfo/sip