RMCC-5 README.TXT
-----------------

BRIEF DESCRIPTION

Rmcc-5 is an adaptation of the previous rmcc scripts.  It uses many
of the same functions and procedures as the earlier scripts.  The
main difference in this simulation is that it uses a snowflake
topology with more than one bottleneck.

-----------
HOW IT RUNS

The simulation runs by using the parameters set in the settings file.
Running the simulation in this manner allows for ease in setting
simulation options and using them in the rmcc-5.tcl script.  These
options are scanned into the rmcc-5.tcl script via the RunRMCC5
procedure at the end of the settings file.
    
----------
MODULARITY

The test options in the settings file makes this script extremely
modular.  It allows the user to set the nam animation option, which
can be set to either "true" or "false" allowing for faster
simulations. The settings file also contains options to set the
number of mdp flows along with the duration of the test in seconds. 
The next two options control starting, stopping, and maximum duration
of TCP flows.  This option may be set to either on or off.  When the
option is set to "on" flows start randomly throughout the test and
run a minimum of 10% of the max_time.  When the option is set to
"off" TCP flows start ramdomly from 0 to 10 seconds and continue for
the duration of the test.  The next group of options deal with the
bottleneck links.  Each bottleneck link starting with bottle0 has
four options--TCPCount, Rate, Delay, and Qsize. These options may be
changed to customize the test.  Each of the names of the bottlenecks
starting with bottle0 are stored in a list and in each list there is
an array containing the four options.  More bottlenecks can be added
to the list in the same fashion as the four that exist.  Likewise,
bottlenecks may also be taken out of the list.

--------------
TOPOLOGY SETUP 

The topology is mainly based on the options specified in the settings
file.  Rmcc-5 adds up the number of reliable multicast flows and all
the TCP flows in the settings file and assigns this value to
total_num.  This total_num value determines the number of source
nodes in the topology.  The source nodes are set up starting with
node 0 and continue through the number of flows in the test. 
Reliable multicast sources are set up on the lower numbered source
nodes and the TCP sources are set up on the rest of the source
nodes.  The next step in the topology layout creates the center of
the topology where the bottleneck branches and the source branch of
the topolgy come together.  The number of branches on the snowflake,
excluding the source branch, are specified by the number of
bottlenecks in the list.  For each bottleneck there is a branch added
to the topology.  At the end of each branch there is a minimum amount
of five reciever nodes.  The number of recievers can be greater if
the number of TCP flows in any given bottleneck exceeds five.  If
this happens, the max number of TCP flows in a bottleneck is the
number of recievers assigned to every bottleneck branch.  Every
reciever created is made a reliable multicast reciever, and some or
all receivers are made TCP recievers, depending on the number of TCP
flows in each branch.  

-------------------------------------------------------
CHANGES IN PREVIOUS RMCC CODE(traces, flow ids, etc.)
        
The main difference from previous scripts is the topology and
modularity of this simulation.  One of the major advantageous changes
is the way simulation parameters are specified.  Rmcc-5 uses a
settings file to set the options for running ns while the previous
scripts used command line options.  There have also been a few
changes in the rmcc.tcl source file that all rmcc script files
reference.  A new reliable multicast procedure has been added called
create_mcasmdp that sets up the reliable multicast agent called mdp. 
The create_tcp function has also been modified so that the user can
specify how he/she wants the tcp flows to behave.  There have also
been a few tracing procedures added to the rmcc.tcl file.  The
procedures allow for much smaller trace files by only tracing the
bottleneck links along with the source link.  The init procedure has
an added if statement to allow for this tracing change.  Another
change in the script involves flow id assignments.  All TCP flow ids
have been set to 2 and all mdp flow ids have been set to 1.  The last
change involves flow monitoring.  For this particular script flow
monitoring has been removed.

-------------
HOW TO RUN IT

To setup the simulation and run the program, simply open the
rmcc-5settings.tcl file and modify the settings to perform the
desired test.  Once this is done, just type ns rmcc-5settings.tcl at
the command line.

---------------------------------

THINGS I WOULD LIKED TO HAVE DONE
-   Explore flowmonitoring options and possibly add flowmonitoring to
    the script 

-   Modify the rmcc.tcl script so that it will run with
    rmmc-5 and all other rmcc-* files
