Conference Control Channel Protocol (CCCP)

A Scalable Base for Building Conference Control Applications

Mark Handley

Ian Wakeman

Conference Control Platforms - Generic Requirements

Conference Control Channel Protocol - Requirements

Conference Control Tasks

Conference Control - "State of the Art"

Two schools:


Any proposed conference control scheme should not restrict the applicability of the applications it controls.

The mechanism of application control should be separate from the policy of conference control.

The mechanism of conference control should scale at least as well as the applications it is controlling.

It should also cope with tightly coupled "closed" conferences as we may wish to use the same media applications.

Conference control should not assume homogeneity of either media or control applications.


A modular approach to conference control applications.

Media applications should not provide conference control facilities themselves -- they should provide the handles for external conference control.

Media applications should only provide a media specific user interface when under external control.

How To Achieve This?

If it is going to scale, message passing is a good solution.

But we don't really know who to address a particular message to?

Address messages to a group. Allow scoping based on application type and location.

Allow dynamic type-groups.

Shield the application writer from the implementation.

Can provide enhancements for reliability and ordering.

Conceptualisation of CCCP

Figure (GIF - 41219 bytes)

CCCP Tuples

CCCP Messages

(source tuple){list of (destination tuple)s} FUNCTION [parameter list] CCCP messages will also gain a sequence number and timestamp from the CCC library. These are passed to the receiving application.

Using CCCP to Unify Interfaces

Figure (GIF - 13576 bytes)

   From               To               Message
the following will be sent periodically:
   (1,audio.recv,x)   (*,sm.local,x)   KEEPALIVE
   (1,video.recv,x)   (*,sm.local,x)   KEEPALIVE
   (1,wb,x)           (*,sm.local,x)   KEEPALIVE

the following will be sent periodically with interval:

   (1,sm,x)           (*,sm.remote,*)             
   ... I_HAVE_MEDIA user_name audio.recv video.recv wb

audio data arrives at the audio application from y:

   (1,audio.recv,x)   (*,sm.local,x)   
   ... MEDIA_STARTED audio y
session manager highlights the speaker

speech burst finishes:

   (1,audio.recv,x)   (*,sm.local,x)   
   ... MEDIA_STOPPED audio y
session manager de-highlights the speaker

video starts from z:

   (1,video.recv,x)   (*,sm.local,x)   
   ... MEDIA_STARTED video z


   (1,video.recv,x)   (*,sm.local,x)   
   ... MEDIA_ACTIVE video z

Using CCCP For Simple Floor Control

Figure (GIF - 14314 bytes)

   From                To                                 Message
a user at y starts sending audio and video data.
The local audio and video tools report this to the session manager:
   (1,audio.recv,x)    (*,sm.local,x)                     MEDIA_STARTED audio y
   (1,video.recv,x)    (*,sm.local,x)                     MEDIA_STARTED video y in previous example, sm highlights sender's name

Also y's floor manager reports what's happening:

   (1,floor.master,y)  (*,floor.master,*)                 MEDIA_STARTED audio y
   (1,floor.master,y)  (*,floor.master,*)                 MEDIA_STARTED video y
the local floor manager tells the local video tool to stop sending:
   (1,floor.master,x)  (*,video.send,x)                   STOP_SENDING video 
...this causes the video at x to stop sending:
   (1,audio.send,x)    (*,sm.local,x),(*,floor.master,x)  MEDIA_STOPPED video x

   From                To                                 Message
the user at x starts speaking. Silence suppression cuts out, and the audio tool starts sending:
   (1,audio.send,x)    (*,sm.local,x),(*,floor.master,x)  MEDIA_STARTED audio x
...this causes the sm to highlight the "you are sending audio" icon

It also causes the floor manager to report to the other floor managers:

   (1,floor.master,x)  (*,floor.master,*)                 MEDIA_STARTED audio x
and also it requests the local video to send video:
   (1,floor.master,x)  (*,video.send,x)                   START_SENDING video
...this causes the video tool to start sending:
   (1,video.send,x)    (*,sm.local,x),(*,floor.master,x)  MEDIA_STARTED video x
...which, in turn, causes the sm to highlight the "you are sending video" icon

the user at x stops speaking. Silence suppression cuts in, and the audio tool stops sending:

   (1,audio.send,x)    (*,sm.local,x),(*,floor.master,x)  MEDIA_STOPPED audio x
...this causes the sm to de-highlight the "you are sending audio" icon
...the session manager starts a timeout procedure before it will stop sending video

Other Issues


Paper Available{_us}.ps{gz}{_us}.ps{gz}