RFC 1324 INFORMATIONAL CONFERENCING · REAL-TIME COMMUNICATION · PROTOCOLS

A Discussion on Computer Network Conferencing

Defining standards for online real-time chat and conferencing

On rfc-editor.org ↗
PUBLISHED
May 1992
AUTHORS
D. Reed
STREAM
Legacy
KNOWN CONFERENCING SYSTEMS
IRC, ICB, BRC
IRC NETWORK EXAMPLE (CITED)
800 users on 140 servers in 200 channels
MEMORY USAGE EXAMPLE
Over 1MB for medium-scale IRC network
RECOMMENDED COMMAND SYNTAX
ASCII text, numeric replies
DOI
10.17487/RFC1324

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                         D. Reed
Request for Comments: 1324                                   May 1992


             A Discussion on Computer Network Conferencing

Status of this Memo

   This memo provides information for the Internet community.  It does
   not specify an Internet standard.  Distribution of this memo is
   unlimited.

Abstract

   This memo is intended to make more people aware of the present
   developments in the Computer Conferencing field as well as put
   forward ideas on what should be done to formalize this work so that
   there is a common standard for programmers and others who are
   involved in this field to work with.  It is also the intention of
   this memo to stimulate the computer community and generate some
   useful discussion about the merits of this field.

Introduction

   Computer network conferencing is just now starting to grow and take
   advantage of the modern technology that is available.  Although there
   are some systems which have been around for some time (BRC - Bitnet
   Relay Chat and IRC - Internet Relay Chat), there has not been any
   real move to bring them together under a single protocol. This has
   led to various protocols and different systems coming to life. As
   these different systems continue to pop up, it is becoming more
   obvious that there is need of a standard in this area for developers
   to follow without the need of worrying about protocol clashes.

   In any implementation of a conferencing program, there are likely to
   be two main components: (1) a client program or interface which users
   enter commands into (hereafter referred to as a "client") and 2) a
   server program which acts as a multiplexor for various clients which
   connect to it. There are other expectations and requirements for both
   servers and clients which are mentioned in more detail later.

Table of Contents

   1.0     Network Conferencing Today........................... 2
   1.1     Conferencing in general today........................ 2
   1.2     Talk/phone vs. conferencing.......................... 3
   1.3     Advantages of realtime network conferencing.......... 3
   2.0     Goals for what a protocol should provide............. 4
   2.1     State Information problems........................... 4
   2.2     Network barriers..................................... 4
   2.3     User needs........................................... 4
   2.3.1   User privacy......................................... 4
   2.3.2   Realtime Expectations................................ 5
   2.4     Message Delivery..................................... 5
   2.4.1   Deficiencies in using IP only........................ 5
   2.4.2   Flexibility.......................................... 5
   2.4.3   Building a flexible transport protocol............... 5
   2.5     Network Structure.................................... 5
   2.5.1   Size................................................. 5
   3.0     Usage................................................ 6
   4.0     Setting it up........................................ 6
   4.1     Installation......................................... 6
   4.2     Controlling growth................................... 7
   5.0     Finding the *right* protocol......................... 7
   5.1     Name for protocol.................................... 7
   5.2     Responsibilities of conference servers............... 7
   5.2.1   Message passing...................................... 7
   5.2.2   Who is on?........................................... 7
   5.2.3   Who is who?.......................................... 8
   5.2.4   Conference security.................................. 8
   5.2.5   Error reporting...................................... 8
   5.2.6   Network Friendliness................................. 8
   5.2.7   To ASCII or not to ASCII............................. 8
   5.2.8   Queries or messages to a server and replies.......... 9
   5.3     Responsibilities of clients.......................... 9
   5.3.1   Providing accurate information....................... 9
   5.3.2   Client as servers.................................... 9
   5.4     How complex should the protocol be?................. 10
   5.4.1   User identification................................. 10
   5.4.2   Trees and cycles.................................... 10
   5.5     Protocol summary.................................... 10
   6.0     Security Considerations............................. 10
   7.0     Author's Address.................................... 11

1.0  NETWORK CONFERENCING TODAY

1.1  Conferencing in general today

   Conferences today are an integral part of the business world in many
   ways. A conference may be held to reassure staff about company
   problems (boost moral) or may be held by a few directors in an
   emergency situation where a carefully considered solution is needed.
   Conferences also form the cornerstone of workshops held where various
   groups of people, who attend, are to be briefed on new developments.
   In nearly all of these situations, there will be a group of 2 or
   more, where each speaks and listens to others.  There exist PABXs and
   other features of the telephone system which provide for conferencing
   between people around the globe at a cost effective rate. The only
   place which really lacks any formal form of conferencing is the
   internet, although many unofficial conferencing systems already
   exist, spanning the globe or providing local forums.

1.2  Talk/phone vs. conferencing

   To provide instantaneous communication between two users on unix and
   other multiuser systems, interprocess communication is commonly used
   either over a network or other local methods.  The diversity of unix
   platforms has introduced as many problems as the presence of various
   operating systems on the net.  Commonly, those on Unix based machines
   are unable to talk to those on VMS or VM machines. The occasion even
   arises where two Unix hosts are unable to talk to each other due to
   different talk protocols.

1.3  Advantages of realtime computer conferencing

   By providing a standard for computer conferencing, it should
   eliminate the problem of who is using what computer. This will mean
   that someone from a VMS or VM machine can talk with one or more
   people without having to worry whether their counterpart has an
   account on a compatible machine for their choice of communication.
   Electronic mail (email) has already reached this position with most
   modern mailers on the internet being compliant with RFC822. It is
   therefore not unreasonable to expect this of realtime conferencing
   which is to talk as USENet is to email; although of those four (4),
   only email and news have been covered by RFCs.

   USENet is a vast resource and immensely useful for many people around
   the globe. It does, however suffer from a high noise to signal ratio.
   It would be unwise to expect much difference in performance from
   conferencing.

   By providing the means for realtime computer conferencing, it opens
   up a whole new area of usefulness to computers. For both students and
   staff alike, it opens up new possibilities.  In educational
   institutions where there is a high level of project work with groups
   of more than 2, it means that students can work from home or other
   remote places and discuss their project with their fellow students in
   a manner which would be similar to all students having a conventional
   meeting or conference. This same situation also applies to staff
   members.  For those who have previously relied on email between
   fellow researchers in many remote institutions, computer conferencing
   brings the world together, onto the researchers screen where they can
   trade ideas and code in real time. Traditionally to achieve these
   goals, the phone would have been used and a teleconference setup and
   it will probably remain so for many years to come with video phones
   too. However, with phone conferencing, when people talk over each
   other, the quality of the discussion is degraded.

2.0  Goals for what a protocol should provide

   In producing a protocol for conferencing over computer networks, the
   following problems must be considered:

2.1  State Information problems

   The number of users who are a part of the conference may fluctuate
   continuously by a large amount over any given period of time.  The
   protocol should endevour to make disruptions such as these as smooth
   as possible but at the same time, keep the realtime feel in the
   conference. It is not acceptable to buffer a user who quits for any
   given time but at the same time, if a server has network problems
   with connecting to another one, it may be wise to find some way
   around the continual stream of state messages that are passed - or -
   at least a way to reduce the number.

2.2  Network barriers

   Members of a conference may be on physical networks which cannot
   directly communicate with each other, such as those used from a host
   on a commercial network talking via a bridge to someone from a
   network directly connected to a network directly accessible from
   theirs. So in this case, the users involved have no need to directly
   use the bridge (as required by unix talk) since the server on the
   gateway host provides a way for messages to be passed in and out of
   the unreachable sections.  In this case also, there is a minimum
   security risk to the network which is otherwise unreachable.

2.3  User needs

2.3.1  User privacy

   Members of a conference may wish to exchange ideas privately without
   fear of others eavesdropping or interrupting the current conference.
   To facilitate this, there should be some support by the protocol to
   pass messages from one user/client directly to another.

   It is also reasonable for a user to want to be able to hide in one
   way or another from other users, effectively making themself
   invisible to other users.

2.3.2  Realtime Expectations

   Users will expect conferencing to be real time, giving the thereby
   demanding that the protocol supply a quick, efficient, reliable and
   accurate delivery of a message. Only when these requirements are met
   can a conference system hope to be of any use to its users.

2.4  Message Delivery

2.4.1  Deficiencies in using IP only

   In routing between conference servers, the problem of routing
   messages is an important issue. If there was a server for the
   conference at each domain, this wouldn't be an issue, one could
   simply do some sort of lookup and find the server for it. This is not
   the case and unless such a server becomes a standard item for unix
   machines, it is not reasonable to expect it to ever be so. Thus the
   need for a layer on top of TCP/IP is needed to deliver messages
   between the servers for the conference.

2.4.2  Flexibility

   The routing protocol used should not be inflexible and should allow
   for routes to change over time in much the same way as RIP does now.
   However, there is no need for a special routing protocol such as RIP
   since this is already part of IP's functionality. Routing information
   should be updated automatically when the server receives information
   via that route whether it creates or destroys a route.

2.4.3  Building a flexible transport protocol on top of existing ones

   If such a conferencing service is built upon TCP/IP, it is therefore
   possible to build an abstract routing model which has no relation to
   the TCP/IP model. However, it is not wise to ignore the presence of
   either TCP or IP since by integrating them into the protocol, it is
   easier to use their strengths.  If the protocol relies too heavily on
   TCP/IP features, it will also inherit some of its weaknesses. These
   maybe taken for granted, but it is worth keeping them in mind when
   designing a protocol to be both reliable, efficient and useful.

2.5  Network Structure

2.5.1  Size

   The potential userbase of a conferencing system using the internet
   should not be underestimated. It is therefore desirable that the
   conferencing system should be as distributed as possible, and as
   little state information kept as possible. If the IRC network is
   taken as a guide, with 800 users on 140 servers in some 200 channels,
   the server was using over 1MB of memory. Due to the nature of
   conferencing and the server being run as a daemon, this memory was
   hardly ever swapped out. For this reason, servers should aim to only
   be authoritive about required users, channels and servers and keep up
   to date information on these.

   There is also no requirement that a global conferencing system be
   built, although it is an ideal arena to show the strengths of the
   network. It also goes without saying that it shows up a lot of its
   weaknesses too.

   Any protocol which is developed should operate equally well and
   efficiently on both a large scale network and on a small scale
   network.

3.0  Usage

   If past usage is any guide, then a network based conferencing system
   will be largely used by mostly students. This is not as unreasonable
   as it may sound since students and student accounts easily form the
   largest body on the internet. To encourage staff or other adults into
   this field, it might be prudent to reduce the amount of noise and
   interfearance a bored student (or staff member!) can generate.

   Realtime conferencing via computer networks is, however, a very
   attractive toy to many students. It puts them in touch with the world
   at no extra charge to them. They are able to construct their own
   character and mask or hide their real self. This is a field which has
   already been researched and is an interesting topic to pursue.

4.0  Setting it up

4.1  Installation

   The installation and setup of most network utilities/servers is not
   something that is commonly discussed. It is, however, a point worth
   considering here after observations made on the setup and
   installation of systems such as IRC. If the setup is too easy and
   requires little work, it is not unreasonable to expect students to
   "install" it in their own accounts to provide themselves and friends
   with this service. There is little that can really be done about this
   except to force servers to listen and connect only to a certain
   priveledged port(s). This need, however, requires root intervention
   or aid and it is doubtful whether a service such as this should
   require such steps.

   This problem is not often encountered with other network services
   since they either require large amounts of disk space to be done
   properly (news) or require the co-operation of other servers before
   they work in a full serving role (DNS and use of name servers is a
   good example of this). Of the two, the latter is a good solution if
   it can be implemented fairly and well.

4.2  Controlling growth

   Is it possible to reasonably control the growth and connectivity of a
   large realtime conferencing network? Should it be compared to other
   facilities such as USENet which is commonly available and very
   widespread with no real central control over who gets news?

5.0  Finding the *right* protocol

   This section deals with points which are central issues when deciding
   upon a protocol. There are many points to consider when developing a
   realtime protocol which is going to provide a service to many users
   simultaneously.

5.1  Name for protocol

   Although names such as IRC and ICB have been used in the past to
   describe the implementation provided, this document is aimed at
   stimulating a protocol which is much more general and useful than
   these. A better name would reflect this. Depending on what network it
   is implemented on, the Network Conferencing Protocol (NCP) or the
   Internet Conferencing Protocol (ICP) are two suitable names.

5.2  Responsibilities of conference servers

5.2.1  Message passing

   A conferencing server should pass on all messages not destined for
   itself or its users to the destination as quickly and efficiently as
   possible. To this end, the server should not be required to do
   extensive parsing of the incoming message, but rather, look at the
   header and decide from there whether to send it on in the typical
   gateway/relay fashion or parse it and pass it to one or more of its
   users.

5.2.2  Who is on?

   Any conference server should be able to supply (on request) a list of
   attached user(s). The attached user(s) should have the option of
   being able to say whether they wish to show up in such lists.

5.2.3  Who is who?

   All servers should provide *some* method to identify any known user
   and supply details to the person making the query based on the search
   key given.

5.2.4  Conference security

   Conference servers should not run in such a manner that they
   deliberately record the private conversation(s) of users which are
   relying on the server in some way. It might seem that encrypting the
   message before transmission to other servers in some way would solve
   this, but this is better left as an option which is implemented in
   clients and thus leaves it to the users to decide how secure they
   want their conference to be.

5.2.5  Error reporting

   All errors that the server encounters in its running life should one
   way or another be reported to the operator(s) which are responsible
   for this. This may include sending messages if an operator is online
   or logging it to an error file.

5.2.6  Network Friendliness

   It is quite easy for any network based application to "abuse" the
   network it is running on. Also in a relay situation, it is quite
   possible that a server will become bogged down trying to keep up with
   just one connection and reduces the performance on an overall scale
   to all users relying on it. It is therefore recommended that user
   connections be subject to some sort of monitoring and flood control
   to stop them dumping large amounts of spurious data and causing the
   server to slow down.

   The server should also aim to maximise the packet size of all packets
   written out to the network. Not only does this make the packet/bytes
   statistics look nice, but also increases the efficiency of the server
   by reducing the time it spends in the system state waiting/doing IO
   operations such as read/write. The cost here is a fractional decrease
   in the real-time efficiency of the server.

5.2.7  To ASCII or not to ASCII

   Given that most of the widely used Internet protocols such as SMTP,
   NNTP and FTP are all based on commands which are given via ASCII
   strings, there seems no reason why a conferencing protocol should be
   any different. The gains from going to binary are marginal and
   debugging/testing is not as easy as with ASCII. However, it is not
   unreasonable for some part of the protocol to be done in binary.

5.2.8  Queries or messages to a server and replies

   For implementation of server queries, it is quite acceptable to use
   ASCII messages which are made up of words. (Any string of characters
   which doesn't start with a number). Replies should be some sort of
   numeric. This is a follow on from from 5.2.7 where all of FTP, NNTP
   and SMTP work in this manner. By reserving numerics *just* for server
   replies, there can be no confusion about whether the message is going
   to or from a server.

5.3  Responsibilities of clients

   This section discusses the obligations of clients which are connected
   to a conference server.

5.3.1  Providing accurate information

   Expecting accurate information is foolish, it matters not for most of
   the internet, but those that we do wish to trace wont give such
   information. A client is expected to provide accurate and valid
   information to the server it connects to so that confusion about who
   is who is not a problem. Optionally, the server may decide to not
   trust the information from the client and use some authentication
   scheme that is open to it for such.

5.3.2  Client as servers

   If a client is acting as a server and accepting direct connections
   from other clients, the client should provide information about users
   as discussed in 5.2.3. It is not necessary that a client be able to
   handle complex methods of communication such as channels and their
   advanced forms, but they should at least provide users with being
   able to send messages to other users.

   An example of this type of program might be Xtv where one or more
   users can connect to another Xtv client program using Xtv clients.

   In the case of X windows and perhaps in other areas, one it to ask
   the destination user to run a program in a similar manner to unix
   talk.

5.4  How complex should the protocol be?

5.4.1  User identification

   When a user signs onto a system that has an implementation of a
   conferencing protocol, they are usually asked or given some sort of
   unique key by which they are later able to be referenced by.  In a
   large system, it may be such that any key which has meaning to the
   user(s) will not be sufficient and that collisions will occur with
   such. It is therefore suggested that a server generate an identifier
   for each new user it has. This identifier must not only be unique in
   space, but also time. It is not reasonable for the user to ever have
   to be aware of what this identifier is, it should only be known by
   servers which *need* to know. A similar system to that used by
   NNTP/SMTP is a fair implementation of such a scheme.

5.4.2  Trees and cycles

   Due to the structure of the network being cyclic or forming loops, it
   is quite natural to want to emulate this within the protocol that is
   available for users. This has several advantages over trees, mainly
   the average path between any 2 nodes being shorter. A cyclic
   structure also poses many problems in getting messages delivered and
   keeping the connected users and servers up to date.  The main problem
   with using the tree model is that a break in one part of the tree
   needs to be communicated to all other parts of the tree to keep some
   sort of realism about it.  The problem here is that such
   communications happen quite often and a lot of bandwidth is
   needlessly generated. By implementing a protocol which supports a
   cyclic graph of its connectivity, breakages are less damaging except
   when it is a leaf or branch that breaks off.

5.5  Protocol summary

   It is not expected that any protocol that meets the above demands
   will be either easy to arrive at or easy to implement.  Some of the
   above requirements may seem to be exotic, unnecessary or not worth
   the effort. After viewing previous conferencing programs and how they
   work, many short comings can be seen in taking shortcuts.

6.0  Security Considerations

   Security issues are not discussed in this memo.

7.0  Author's Address

   Darren Reed
   4 Pateman Street
   Watsonia, Victoria 3087
   Australia

   Email: avalon@coombs.anu.edu.au

AI ELI5

On this page
PROBLEMIn the early 1990s, various incompatible conferencing systems (IRC, ICB, BRC) existed across the Internet. A student on one system could not talk with a student on another, and there was no standard way for developers to build conferencing software that would interoperate.
MECHANISMThe RFC discusses what a standard conferencing protocol should do: support real-time group communication, allow servers to relay messages to other servers, let users hide or communicate privately, prevent servers from recording private conversations, and handle thousands of users and channels efficiently.
FUTURE STANDARD PROPOSALThe RFC did not define a protocol itself, but laid out requirements and issues that a good conferencing protocol should address, influencing thinking about real-time Internet communication standards.

§1Why Conferencing Needs Standards

Computer network conferencing refers to real-time group communication over the Internet. By 1992, several systems already existed, including Internet Relay Chat (IRC), Bitnet Relay Chat (BRC), and ICB. The problem was that someone using one system could not communicate with someone on another, and the systems had different commands and behaviors. The RFC compares this to electronic mail, where RFC 822 unified different mail systems so anyone could send to anyone else, and notes that conferencing is to real-time chat as USENET is to email—both pairs should have common standards.

The RFC proposes that a standard protocol would let developers write conferencing applications without worrying about incompatibility, and would let people using different systems communicate with each other. The author, Darren Reed, notes that while the paper discusses specific systems like IRC, the goal is to stimulate thinking about what a common protocol should provide, not to specify it in detail.

People were already using Internet chat systems like IRC, but they were all different. If you used one system and your friend used another, you couldn't talk to them. The paper asks: what should a good chat system do, so that everyone could use the same one?

§2Real-time Conferencing vs. Other Communication

The RFC distinguishes conferencing from other forms of Internet communication. Email is asynchronous—you send a message and the recipient reads it later. USENET News is also asynchronous, but organized into newsgroups. Real-time conferencing is live, where multiple people can be in a conversation at the same time and respond immediately. The RFC cites advantages of real-time conferencing for education and research: students can collaborate on projects from different locations, researchers can share ideas and code in real-time, and the instant feedback is useful for problem-solving.

The RFC also acknowledges challenges. Telephone conferencing is more natural for voice, but text conferencing has advantages: students can work from home, research groups can span institutions without travel, and people can construct their online identity as they choose. The RFC notes that conferencing is expected to be popular, especially with students, and that users will expect it to be fast, reliable, and easy to use.

Real-time chat is different from email (which you check later) or news (which piles up). Chat is live and instant, so students can study together from different places and researchers can trade ideas immediately.

§3What a Conferencing Protocol Must Handle

The RFC identifies several hard problems that any conferencing protocol must solve. State information is difficult: users join and leave conferences constantly, and the number can fluctuate wildly. The protocol must handle this smoothly while keeping the feel of real-time communication. Network barriers exist: users may be on networks that cannot directly communicate, so conference servers must relay messages between unreachable parts of the network, similar to how email crosses firewall boundaries.

User privacy is important: some users want to exchange private messages with specific people within a conference, and some want to hide their presence from others (become invisible). Reliable message delivery is crucial: users expect messages to arrive quickly and without loss, which means the protocol must sit on top of TCP/IP to be reliable. Network efficiency matters: a conference with 800 users on 140 servers was using over 1 megabyte of memory, so the protocol should minimize state information and avoid excessive status updates.

Additional requirements include conference security (servers should not record private conversations), user identification (servers need to know who is talking), and network structure (the system should work for small local networks and large global networks alike).

A good chat system needs to: let people join and leave without breaking the chat, send messages across network barriers, let people be private, make sure messages arrive, use memory efficiently, not spy on conversations, and work whether it's a small group or thousands of people.

§4Design Decisions for Servers and Clients

The RFC outlines roles and responsibilities. Conference servers should pass messages not destined for them quickly, without parsing every field (they should look at the header and relay). Servers should provide a list of connected users on request, but users should be able to opt out of being listed. Servers should help users find information about each other (a directory function). Error reporting is important: servers should log or report all errors to the operator.

Network friendliness is critical: servers should limit how fast a single user can send messages (flood control) to prevent one user from overwhelming everyone. They should also batch messages to maximize packet size and minimize the time the CPU spends in I/O operations. The RFC recommends using ASCII text commands for messages (like FTP, NNTP, and SMTP), because ASCII is easy to debug. Server replies should be numeric codes (like FTP's numeric responses), so clients can distinguish commands from replies.

Client programs should provide accurate information when they connect (username, hostname). Clients should also be able to act as servers for peer-to-peer communication, allowing direct user-to-user messaging without going through a central server.

Servers should relay messages fast, show who is online (unless they hide), let people find each other, prevent spammers from flooding everyone, and use text-based commands like email systems do. Clients should be honest about who they are, and might also relay messages to other clients.

§5Difficult Issues to Resolve

The RFC acknowledges several thorny design choices. User identification is tricky: in a large system, user-chosen names (like alice) may collide. The RFC suggests that servers generate unique identifiers for each user, similar to how NNTP and SMTP do it, so users do not have to care about a long machine-generated ID—it should be invisible to them.

Network topology is complex: real networks have cycles (loops), but conferencing systems often use trees (hierarchies). Trees are simpler to implement but break completely if any link fails. Cycles are more robust but harder to manage because messages must be prevented from looping infinitely. The RFC notes that IRC networks had already chosen cycles, and that a cyclic graph offers advantages: the average path between two users is shorter, and a break at a leaf does not isolate an entire subtree.

Installation and control present policy challenges: if the protocol is simple to set up, students might run their own conference servers without permission, wasting resources. Protocol complexity is a trade-off: the protocol must be powerful enough to handle real-time group communication, but not so complex that it is hard to implement.

Hard choices include: how to give each person a unique name so nobody has collisions, whether to organize servers in a tree (simpler but fragile) or a web (safer but complex), how to prevent rogue servers from being set up, and how complex the protocol should be.

§6Toward a Conferencing Standard

The RFC does not propose a specific protocol, but rather establishes a framework for thinking about one. It argues that existing systems like IRC, though informal, demonstrate that real-time conferencing is valuable and that common issues arise across implementations. The author suggests that the name Network Conferencing Protocol (NCP) or Internet Conferencing Protocol (ICP) would be more descriptive than ad-hoc system names.

The RFC makes a case that no protocol meeting all the stated requirements will be easy to arrive at or implement, and that some requirements may seem exotic or unnecessary. However, shortcutting requirements leads to systems with real limitations: IRC's reliance on trees made it fragile, memory overhead was significant on large networks, and the lack of a standard meant every new system had to solve the same problems independently. A formal standard would let developers leverage previous work and focus on implementation quality.

The memo concludes that as the Internet grows, standardizing real-time conferencing should become a priority, much as email standardization had been essential to building a global communication infrastructure.

The paper doesn't write the standard itself, but explains what an Internet chat standard should be able to do. It says if everyone followed the same rules, people could chat across different systems, the same way email works across different mail programs.