mmcc - X-based multimedia conference control program

     mmcc [ -autono | -autoyes ] [   - autosend  ]  [   - display
     xdisplay  ] [ -f setupfile ] [ -locttl ttl ] [ -mcast ] [ -n
     name ] [ -p port ] [ -play soundfile ] [ -rsvp [ rsvpfile  ]

     Mmcc is a session orchestration tool  that  provides  point-
     to-point  or multipoint teleconferences.  It allows a caller
     to explictly invite others to participate in  a  conference,
     and  alerts  them  to  accept  or decline.  It automatically
     spawns underlying audio, video and groupware programs  among
     members  of  a session, then tears them down at session com-
     pletion.  Mmcc will distribute a session key  for  confiden-
     tial sessions.  In this preliminary version, the key is sent
     in the clear, so it is not secure, but future versions  will
     use Kerberos or certificates for secure key distribution.

     By default, mmcc  brings  up  the  LBL  visual  audio  tool,
     vat(1),  and offers the option to start Xerox PARC's network
     video program, nv(1), and LBL's whiteboard, wb(1).

     Mmcc aims to supplement the large open-style  sessions  sup-
     ported  by  the  existing version of LBL's session directory
     tool, sd(1).  It complements the hailing-channel approach of
     public  sessions  with  a  more  private  session  style for
     smaller conferences.  Thus, session advertisement is  inter-
     nal to the group of participating conferees.

     Mmcc listens on the default port 5050 for communication from
     peer  mmcc's distributed throughout the Internet.  The model
     is that each mmcc is associated with a single user at a par-
     ticular  host  and port, and that the program is expected to
     be left running while a user is logged in.  The tool  imple-
     ments  distributed  coordination  among  multiple peers, and
     relies on the initiating user being responsible for  session

     The mmcc binary has been ported to Sparcs running SunOS  4.x
     or Solaris 2.x, SGIs running IRIX, HPs running HPUX, IBM PCs
     running Mach3.0, Dec 5000's running  Ultrix  V4.3,  and  Dec
     Alphas  running  OSF.   However,  it  has  been  tested more
     thoroughly on some configurations than others.

          Configure mmcc to automatically answer no to connection

          Configure mmcc to automatically answer yes  to  connec-
          tion requests.

          Automatically begin sending media at startup.

          The standard X switch to pass a display variable  other
          than $DISPLAY.

     -f    By default, mmcc establishes a database of remote user
          aliases  and  addresses  by  reading  the  file .mmccrc
          located in the home directory; the format of this  file
          is  described  below.   An alternate user configuration
          file, setupfile, may be given by using the  -f  option.
          If neither file is found, mmcc simply starts up with an
          empty user database.

          By default, the Local scope setting is mapped to a  ttl
          value of 2.  This mapping may be changed by specifiying
          a different value ttl to the -locttl option on the com-
          mand  line.   This  is useful for those cases where the
          local site is configured with multicast thresholds that
          need a larger or smaller value.

          Use multicast addressing for point-to-point  calls,  as
          well  as multipoint calls; otherwise unicast addressing
          will be used for point-to-point calls (but not for mul-
          tipoint calls).

     -n    Associate an alias, name, with the  local  user.   The
          alias is then inherited by any media agents (e.g., vat,
          nv, wb) spawned  by  the  mmcc  program.   The  use  of
          aliases,  in  combination  with  the user configuration
          file, also allows multiple mmccs to be associated  with
          and  run  simultaneously  from the same machine (though
          different ports are required).  If  the  -n  option  is
          used  and  mmcc  finds a line in the user configuration
          file that uses the same alias name, the port number  of
          that  entry  will  be adopted.  If the -n option is not
          used, but information  pertaining  to  the  local  user
          matches  an  entry in the configuration file, the alias
          of that entry will be adopted for the local  user.   If
          no alias is specified for the local user, either on the
          command line or in the user  configuration  file,  mmcc
          creates  an alias from the user login id, hostname, and
          port if the port is non-standard.

     -p    Use the port number, port, as the port on  which  mmcc
          listens  for  incoming requests, instead of the default
          port. The port may be given as a decimal or hexidecimal
          value (e.g., 0x13BA).

          By default, when a remote user requests your participa-
          tion  in  a  conference  mmcc  double beeps to get your
          attention.  However, you may configure  it  to  play  a
          sound  file  to  get  your attention instead, either by
          placing a sound  file  called  in  your  home
          directory, or by using the -play option followed by the
          name of an audio file, soundfile, on the command  line.
          Mmcc  spawns  the  program sfplay on the SGIs, aplay on
          the DECs, and play on the  Sparc  and  other  architec-
          tures;  the play programs effectively read the

          Make resource reservations via RSVP. By default,  qual-
          ity  of  service  options  and associated flowspecs are
          expected to be read from the  file  in  the
          home  directory,  but a substitute file rsvpfile may be
          specified after the -rsvp option  on  the  commandline.
          Quality  of  service choices appear both on the Connect
          panel and under the Modify button. [Only available with
          the experimental binary]

          Click on Connect in the main mmcc window to initiate  a
          session with remote users; a Connect panel will appear.
          A session name  may  be  assigned  by  selecting  (left
          click), then typing in the Session Alias field. If this
          field is  left  blank,  the  name  of  the  session  is
          automatically  generated  and  is  based on the session
          initiator's alias. Specify a session encryption key  by
          left  clicking, then typing in the Key field.  The text
          input fields support a small set of emacs key bindings;
          ^A (beginning of line), ^E (end of line), ^F (forward),
          ^B (back), ^D (delete forward), ^K (kill to EOL).

          Under the Participants list, use the left mouse  button
          to  click on the aliases of any remote users who should
          be included in the session. Repeated  clicking  on  the
          same  user's  name toggles the selection.  To include a
          user not in your user configuration file, type  in  the
          Add  field  at the bottom of the Participants list; the
          fields correspond to the fields of the user  configura-
          tion  file. Only the user and addr fields are required.
          If  unspecified,  alias  defaults  to   user@addr,   or
          user@addr:port   if   the  port  is  non-standard.   If
          unspecified, the port defaults to mmcc's default  port.
          A  port may be entered as decimal or hexidecimal (e.g.,
          0x13BA).   When  the  entry  is  complete,  simply  hit
          <Return> to enter it in the participant list and select
          it.  There currently is no automated way  to  save  new
          participant entries in the user configuration file, but
          we would like to add this in the near future.

          Under the Media list, click the left  mouse  button  to
          select  the  media  to  include  in  the  session.   By
          default, Audio is  included.   Currently,  the  choices
          Audio,  Video,  and  Groupware map to the programs vat,
          nv, and wb. Each media has its own QoS (quality of ser-
          vice)  setting,  as  well  as  a  Scope (ttl).  The QoS
          choice is experimental and is presently only in service
          for  audio  (e.g.,  "High",  "Medium", and "Low" map to
          audio encodings pcm2, idvi, and gsm  respectively)  and
          video (e.g., "High, "Medium", and "Low" map to 128kbps,
          92kbps, 56kbps). The default audio and  video  QoS  are
          set  to  "High",  pcm2 for audio and 128kbps for video.
          To change a setting, click on the QoS field  associated
          with  the  desired  media  and  select from the menu of
          choices. The Groupware  field  has  only  one  setting,
          which is "NA" for not applicable.

          Scope choices  exist  for  all  three  media;  "Local",
          "Site",  "Region",  "World" map to ttl values of 2, 31,
          63 and 127. The default setting for scope is "Local" or
          a  ttl  of 2.  A different mapping for "Local" (e.g., a
          ttl of 15) may be set on the  command  line  using  the
          -locttl  option.   Video  and Groupware include a scope
          setting of "Same", which means to use the same value as
          appears  for  Audio.   A  "manual"  option also exists,
          where a ttl value between 0-255  may  be  entered.   Be
          aware that a ttl value of 127 or greater constitutes an
          Internet-wide call, and that there are certain combina-
          tions  of  ttl  and media that mmcc considers legal but
          anti-social:  non-gsm Audio with a ttl above  191,  and
          Video  with  a  ttl  above  127. Mmcc produces a pop-up
          warning message that you will have to answer before the
          session  will  be initiated.  These warnings exist only
          when multicast is being used.

          Mmcc must be running on a remote user's workstation  in
          order to rendezvous with that user. The mmcc window may
          be closed to place it out of view when  it  is  not  in
          use.   Any incoming requests will automatically re-open
          the window.

          Using the left mouse button, click on the "CREATE" but-
          ton  to  initiate the session, or on "Cancel" to cancel
          the request.

          Disconnect from the session highlighted in the  Session
          scrolling  window.   If  only  one session exists, then
          mmcc deletes that  session  without  it  having  to  be
          highlighted.   When  a user disconnects, the associated
          vat, nv and wb also get disconnected.

          Invite additional conferees, Join an on-going  session,
          place  a session on Hold, Merge multiple sessions, con-
          duct a Sidechat with a subset of a  session's  partici-
          pants,  or  modify  the Quality of Service (QoS).  Only
          QoS is currently operational,  and  only  in  the  RSVP
          experimental binary.

          Show the  local  user's  default  settings  and  permit
          changes to these defaults.  Not operational just yet.

     Log  Display/undisplay the log of error and warning messages
          produced by mmcc during operation.

          Display/undisplay  membership  and  media   information
          associated  with the session highlighted in the Session
          scrolling window.  If only  one  session  exists,  then
          mmcc  displays/undisplays  the  status for that session
          without it having to be highlighted.   Status  includes
          the  list  of session participants, as well as the ses-
          sion alias, session key, media included,  their  multi-
          cast  or  unicast addresses and port numbers, ttl's and
          QoS choices.  The status information is updated dynami-
          cally, and disappears automatically when the session is

     A sample configuration file:

          #alias        login        hostname             [port]
          Alex          graham
          "Dr. J"       jirving
          Curly         cstooge       5754
          Moonbeam      zappa
          Daffy         dduck

     A "#" at the beginning of a line indicates a  comment.   The
     alias field refers to the nickname of the user, which may be
     multiple words if enclosed in double quotes.  The  login  is
     the  user's  login  id, the hostname is the internet name or
     address of the user's workstation, and the field port  indi-
     cates  the  port  at  which  mmcc resides and is an optional
     entry.  If port is omitted, mmcc's  default  port  value  is
     used.  Again, the port may be specified as a decimal or hex-
     idecimal value.  There is the potential for host name  reso-
     lution  complications  in  the  user  configuration file; in
     those cases, host addresses may be  used  instead.  However,
     mmcc will complain at startup time if it has trouble with an
     entry in the configuration file.  Eventually we hope to sup-
     port a multicast-based dynamic user registry.

     There is a public user configuration file that is maintained
     in  the  file,  and  that will
     allow you to  bootstrap  with  other  mmcc  users.   To  add
     (delete) yourself to the public registry send an e-mail mes-
     sage to <>  with  the  Subject  field
     "Add  to  .mmccrc"  ("Delete from .mmccrc").  The content of
     the message should be in .mmccrc format.

     Eventually we hope to support a multicast-based dynamic user

     Type "q", "Q" or "^C" anywhere over the main mmcc  panel  to
     exit  the  program.   Alternatively, if running OpenWindows,
     the "Quit" option in the frame menu may be used to exit.  If
     the  Connect panel is open, it will have to be closed before
     the program will exit.

          ~/.mmccrc     User configuration file
          ~/    Sound file used as "ring" tone
          ~/  RSVP flowspec descriptions

     nv(1), vat(1), wb(1), sd(1).  See also aplay(1) on  the  DEC
     machines, sfplay(1) on the SGIs, and play(6) on the Sparcs.

     Note that the mmcc windows are of Xresource type "Mmcc".

     Primary author: Eve M. Schooler <> of
     Caltech  and  USC/Information Sciences Institute, Marina del
     Rey, CA.

     Tk/Tcl GUI author  and  machine-specific  ports:  Joe  Touch
     <>   of   USC/Information  Sciences  Institute,
     Marina del Rey, CA.

     Steve Casner <> of USC/ISI has provided count-
     less  suggestions  for  improvements,  not  to  mention  bug

     The idea  for  a  Star  Trek  ring  sound  was  copied  from
     Bellcore's original Cruiser/Touring Machine software.

     For multiparty sessions, mmcc spawns programs that  rely  on
     the presence of an IP multicast kernel, and if communicating
     with remote users the presence  of  the  Multicast  Backbone
     (MBONE).   This  means situations may arise where ttl values
     are too small for all media to reach all participants.  How-
     ever,  this  is  not  an issue for two-party sessions, where
     unicast is used instead (unless overridden by -mcast).

     Mmcc performs multicast address  allocation  for  multiparty
     sessions;  it randomly chooses an address in the range above  In the current release, all media agents  (nv,
     vat,  wb)  share  the same multicast address, though this is
     being rethought to allow the delivery  trees  to  be  pruned
     separately, on the assumption that not everyone will receive
     the same media.   In  addition,  mmcc  currently  selects  a
     separate random port in the range above 7000 for each of the
     media programs; there may be motivation to  change  this  in
     subsequent  releases  to a single port to allow easier moni-
     toring, passage through firewalls, and possibly  classifica-
     tion for QoS.

     Even if mmcc is configured to always use multicast  for  the
     underlying programs that it spawns, mmcc itself uses unicast
     UDP packets to rendezvous with peers.

     Unicast  addressing  may  pose  problems  for   sites   with
     firewalls.  Multicast addressing may pose problems for sites
     with firewalls.

     Mmcc relies on the inclusion of vat, nv, wb  in  the  search
     path  of  your shell environment.  Similarly, if you use the
     option to play a sound file when  someone  calls  you,  then
     your search path must also include the play program specific
     to the machine on which  mmcc  is  running  (see  the  -play

     The user login id is not validated.

     If the audio device is locked by another audio-related  pro-
     gram, mmcc will be unable to play the designated sound file,
     but will double beep  instead.   In  either  case,  a  REPLY
     REQUESTED pop-up will appear.

     If you exit out of mmcc while still in conference or in some
     transitional  state,  mmcc will ask for confirmation. If you
     go ahead anyway, remote sites  may  end  up  with  incorrect
     state  information  about  the  local site.  Timeouts should
     eventually resolve the state mismatches.

     The -autosend option is experimental.   As  a  first  effort
     toward cross-application communication, mmcc sends nv Tk/Tcl
     ipc commands, whereas it resorts to command line options for

     The main mmcc panel cannot be resized yet.

     The -rsvpon option requires an RSVP-capable kernel.

     Known bug: when  multiple  users  at  same  <address,  port>
     included in same session.

     This is the alpha release of this software!  It is available
     via   anonymous   FTP  from
     {sparc,sgi,dec5k,decalpha,intel,hp}.tar.Z.  There  are  many
     things missing that we plan to support; all the items in the
     GUI for which there is an external button  or  menu  but  no
     underlying  function,  Modify scenarios (invites, joins, add
     media, change parameters), more dynamic  user  configuration
     files  (save,  restore,  modify),  group aliases, additional
     underlying media programs (pvp,  ivs,  nevot,  etc.),  user-
     tailored  Tk/Tcl extensions, better timeout configurability,
     offer command line options as Xresource variables.

     Please note that the Internet does not have sufficient capa-
     city  to  act as a replacement for the telephone network, so
     mmcc and the underlying media tools  should  be  used  judi-
     ciously.  The audio and video traffic will not slow down the
     way TCP traffic will, so if multiple calls are placed simul-
     taneously  over  the  same  link,  severe  congestion  could
     result.  In particular, please limit the  use  of  multicast
     (sessions  with more than two parties) with "World" scope on
     MBONE during major events as advertised in  sd  and  on  the  mailing list.  Two party unicast calls will
     have less impact, but still could overload  links  that  are
     used  in  the  MBONE.   For  more  information regarding the
     MBONE,   see   the   frequently   asked    questions    file

     There are probably many.  Any bug reports, suggestions,  and
     comments,   are   most   welcome   and  should  be  sent  to
     <> or <>.