REAL 5.0 Changes
S. Keshav
Cornell University
skeshav@cs.cornell.edu
 
August 13th 1997 
        1. Introduction
    This document outlines the changes made in REAL 5.0 compared to REAL 4.0. I released 4.0 in October 1993, and in the last four years, have made many changes. These include
    1. many new simulation modules
    2. a Java-based GUI.
    3. faster, smaller, cleaner simulation engine
    4. ports to FreeBSD, Solaris, and Digital Unix (OSF/3)
    5. simulation exercises based on my book
    6. minor bug fixes
           I'm finally releasing all of these together in Real v5.0. Suggestions for changes are welcome. In the  rest of this document, I will describe these changes in more detail.
    2. New modules in the simulator
The table below summarizes all the modules being released as part of Real 5.0.
 
FILE  
 
DESCRIPTION
background.c  sends background traffic on-off  at a nominal rate
coder.c  MPEG coder that adapts its rate to the currently  
available rate (needs pp.c as transprt layer) 
controlled_rate.c  sends on-off traffic and also does call setup 
dec.c  obeys DECbit flow control 
ecn_error.c   template for error control assignment 
ecn_flow.c  template for flow control assignment
ecn_master.c  simulates shared channel for CSMA/CD (Ethernet) 
ecn_receiver.c  generic receiver for assignment 3 
ecn_router.c  really tiny router, but it works 
ecn_sender.c sources to test the router 
ecn_simple.c  template for simple source assignment 
ecn_slave.c  simulates Ethernet card for CSMA/CD 
ftp_vegas.c  untested code for FTP with TCP vegas flow control 
generic.c  generic transport layer with windowing, timeouts, acks 
jk_reno.c  implements flow control scheme of 4.3BSD-Reno 
jk_tahoe.c  implements flow control in 4.3BSD Tahoe 
mmpp.c something like a markov modulated poisson source 
mpeg.c uncontrolled mpeg coder (reads values from file) 
onoff.c  ON OFF source 
onoff_closed.c  ON OFF source, off time starts when all packets generated during on time have been acked 
onoff_closed_gbn.c  same as above, but does go-back-n retransmission 
playout.c    plays out MPEG video, complains if frame misses its  end-to-end delay bound 
poisson.c  poisson source 
pp.c packet pair flow control 
random_rate.c  sends data at random intervals, but conforms to peak/ave description 
send.c   implements packet transmission functions 
sink.c  universal receiver function 
telnet.c  flow controlled poisson source (with windowing) 
trace.c   reads a trace from a file and sends packets   according to that description
 
             
3. GUI

There is finally a GUI for REAL. It was written in Java by Hani Jamjoom at Cornell University. The GUI is meant to be used in conjunction with a simulator server, currently real.cs.cornell.edu. The idea is that users can create a simulation scenario using the GUI, then send it to the simulation server. The server connects to the GUI over a socket and sends simulation results in the form of plot files, that are displayed dynamically as the simulation proceeds. For more information, go the the RealEdit home page.

For users who do not want to use a GUI, the simulator continues to support an ASCII input file format. The only change is that the plot files are all lumped together into a single file called "plot". The file sim/kernel/demux demultiplexes this file into a bunch of plot files. This also makes the simulator much more efficient, since the number of disk writes is dramatically reduced. If you want to continue using the old style of simulation, then you should do

simulate foo.l
cd foo
../kernel/demux plot
You will then not be required to use the GUI. Incidentally, v5 will continue to parse NetLanguage files supported by older versions of Real.

4. Simulation Engine

The simulation engine in Real 4.0 was essentially the one I got from NEST 2.5 from Columbia. I have rewritten the code to make it less general, cleaner, and faster. I also added lots of comments, so that the code is finally somewhat understandable (I never fully understood it till now !).

5.Ports

I have ported the simulator to Solaris and Digital Unix (OSF). Elan Amir ported it to FreeBSD, and I have added his changes to my distribution, though I have not tested it. A Linux port was done by Cheryl Pope, and I have added the changes she made, though, again, this hasn't been tested. I am looking for volunteers to port to Windows NT/95.  The Installation Manual has a full list of supported architectures.

6. Things to add

I'm porting the FreeBSD2.2.2 TCP kernel code, and will release it when I'm done. I would like help in adding multicast to the simulator and in porting it to Windows NT. Any volunteers?