1. Introduction
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.
|
|
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
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?