How to install the NIST Net emulation package, version 2.0.12

Note: These install instructions are for version 2.0.12. If you choose instead an older version, follow the instructions included with it.

  1. Prerequisites: NIST Net version 2.0.12 should run on most versions of Linux available today. It has been tested on 2.0.xx (2.0.27 - 2.0.39), 2.2.xx (2.2.5 - 2.2.18), 2.4.xx (2.4.0 - 2.4.18) and 2.6.xx (up to around 2.6.11) level kernels. Some tweaking may be required for 2.1 or 2.3 kernels. It should compile with either "linux" libc headers or "glibc" libc headers, with the proviso that of course kernel files can't be compiled with glibc headers.
  2. Click here to get the NIST Net source package, version 2.0.12. The source comes in a gzipped tar file. Depending on your kernel version, get either nistnet.2.0.12b.tar.gz (for 2.0 - 2.4 kernels) or
  3. New! nistnet.2.0.12c.tar.gz (for 2.6 kernels). Actually, the 2.0.12c version might work on 2.4 kernels as well, but this hasn't been tested yet.
  4. tar -xvzf nistnet.2.0.12[b or c].tar.gz - produces a directory nistnet and a bunch of files in it. That is the directory referred to as nistnet below.
  5. This version does not require any kernel patching! If you have installed previous (very old) versions of NIST Net, and want to remove the old patches, you can either install a fresh kernel source tree, or run the ./Unpatch.Kernel script provided with the distribution.
  6. Optional: For the 2.0.12b version, there are patches for Alpha and Sparc processors which can be installed with the Arch.Kernel script. If you have one of these and want to experiment with them, be my guest. Note, however, that these patches are totally untested! Also, they haven't been updated for the last few releases and are probably a bit out of sync.
  7. New! Optional: On the other hand, for the 2.0.12c version, there is beta-level support for 64 bit processors of the x86_64 architecture. Again, if you have one of these and want to experiment with it, be my guest. Full support for the x86_64 (including support for both 32-bit and 64-bit clients) will be part of the 3.0 "Next Generation" release.
  8. New!Sigh. Even though you don't have to patch or compile a kernel, you may need to do some work to get the configuration set up. So if you haven't done something like this before, try the following:
    cd /usr/src/linux
    - or wherever the kernel source is
    make oldconfig
    - exit and save
    make dep
    For Red Hat users, there are some special instructions that come with the package. See README.RedHat for more information. This information may also be useful for users of other distributions.
  9. Check the NIST Net configuration and create the appropriate Makefile:
    cd nistnet
    - Decide whether or not you want support for explicit congestion notification processing. Also, decide whether you want COS (class of service) selection support.
    - may want to use an alternative to the
    - Tested with Athena Xaw, Xaw3d, and neXtaw
  10. Build and install the nistnet module, API library, and user interface
    make install
  11. Try things out:
    - loads "nistnet" emulator module into kernel
    - runs (X-based) user interface
    cnistnet -h
    - usage info for command-line interface
    insmod mungemod
    - loads "mungebox," a sample emulator add-on
    mungebox -u -a src dest -S
    - view traffic between src and dest
    insmod nistspy
    - loads "nistspy" sample add-on (note: only one add-on can be installed at a time)
    nistspy -u -a src port dest port newdest newport
    - duplicate traffic to newdest/port
  12. To turn off:
    cnistnet -d or "off" button in xnistnet
    - turns off emulator
    nistspy -d
    - turn off duplicator
    (mungebox shuts itself off automatically)
    rmmod mungemod (or nistspy)
    - removes add-on module (must be done before removing nistnet)
    rmmod nistnet
    - removes module from kernel
  13. If you want to try congestion notification, ping.tar has source for a modified version of ping which allows setting and checking the ECN bits. To build it, you need a copy of netkit-base-0.10, available from SunSite ( Walnut Creek ( and many other fine sites. Get it and configure it, then overlay the ping code in it with the source here.
    This level of testing just shows the bits being set, of course. Things are more interesting if you have an implementation of TCP with ECN to test with. (This is available in the latest versions of Linux, for example.)
  14. For more usage information, check the README.WhatsNew file found in the top-level nistnet directory.

Comments? Questions? Let us know at
[ NIST Net Home Page] [Installing NIST Net] [Using NIST Net] [NIST Net FAQ]