REAL 5.0 Changes
S. Keshav
Cornell University
August 13th 1997 

        1. Introduction

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

  1. 2. New modules in the simulator
  • The table below summarizes all the modules being released as part of Real 5.0.
    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 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 !).


    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?