There are two executables, schedsvr and sched.  The former is the on-line
version of the scheduler, and the latter is the off-line version.

./schedsvr [-p port] [-h hostname] [-c config] [-f BRITE.config.file] [-u user db] [-e]
  -p port       HTTP port for config specs (def=7777)
  -h host       address to send reports to (def=localhost)
  -u db name of user database (def=users.db)
  -c config     network configuration number (def=3)
  -f BRITE network description file (def=)
  -e treat links as addresses and send to them

for example, ./schedsvr -f outbritefile for a BRITE topology or
             ./schedsvr -c 4 for the built-in diamond configuration

The -c option defines "built-in" configurations.  These are defined at the
top of mmsched/mmsched.c.  The struct definitions for the various
datastructures are in mmsched/mmsched.h.  For more information on BRITE and
its network configuration files, see http://www.cs.bu.edu/brite/.

The global scheduler is configured via a web browser.  Assuming you start
schedsvr on the local host on the default port (7777), just enter the URL
http://localhost:7777/ and you will get a display saying "Welcome to the
Cornell Video Platform."  Then you can choose various options to configure
the server.

TRYING OUT THE SCHEDULER

Start the global scheduler:

./schedsvr -c 9 &

Connect to it with a web browser (attach using port 7777, i.e. do
http://localhost:7777/ if your browser is on the same machine as the
scheduler).  Then click "Enter/Update your operation."  For username and
password do "rvr" for both (other legal ones include "user1", "user2" all
the way to "user9").  In the spec field, copy in one of the specifications
from the files

specs/MPEGtraceopt_user*.xml

(that is, there are files user1, user2, etc.).  Then click submit.

Click the back button twice, then click "Look at the current state" and it
will show the table of the current state. 

----

The offline version is run as follows:

./sched [-c config | -f BRITE-config-file] [-F xml | -F dot] userspec1 [userspec2] ... 
  -c config     network configuration number (def=3)
  -f BRITE network description file
  -F output format (either xml or dot, default=xml)

The idea is that you indicate to the scheduler what the network
configuration is (i.e. what hosts make up the network, what links connect
them, what bandwidth is available on those links, etc.), and what user
specifications you want to schedule.  Assuming a schedule is possible, it
will be output either as XML or as a "dot" graphics specification.  If you
choose "dot," you can use the program "dot" to generate a postscript file
from the specification which you can then view using ghostview.  The dot
package is available at http://www.research.att.com/sw/tools/graphviz/.

There are some example user specifications in the directory specs.  Here's
an example (run from mmsched/):

./sched -c 9 -Fdot specs/MPEGtraceopt_user1.xml specs/MPEGtraceopt_user2.xml specs/MPEGtraceopt_user3.xml specs/MPEGtraceopt_user4.xml specs/MPEGtraceopt_user5.xml > sched.dot

This indicates that network configuration 9 should be used, along with user
specifications specs/MPEGtraceopt_user1.xml, specs/MPEGtraceopt_user2.xml,
etc.  and that the output should be dot.  Network configuration 9 is the
"bowtie" configuration shown in the MediaNet OPENARCH paper.  You can view
the results of this by doing

dot -Tps sched.dot > sched.ps
ghostview sched.ps

The main bit of code that implements the scheduler is mmsched.c.  The main
structure definitions for modeling the network are in mmsched.h.   The entry
point of the program is sched.c; that's the first place to look to see how
things are called.