NIST

How to install the NIST Net emulation package

  1. Prerequisites: Currently requires a Linux 2.0.27-2.0.33 level kernel! The new version (1.3) should compile with either "linux" libc headers or "glibc" libc headers (tested with glibc 2.0.6), with the proviso that the kernel files can't be compiled with glibc headers!
  2. Click here to get the source and/or binary package. The source comes in a gzipped tar file, nistnet.tar.gz. Current version is: 1.3.
  3. tar -xvzf nistnet.tar.gz - produces a directory nistnet and a bunch of files in it. That is the directory referred to as this dir below.
  4. Make sure you can build and install usable kernels:
    cd /usr/src/linux
    make config (or menuconfig/xconfig)
    - answer questions appropriately
    make install
    - make sure new kernel boots properly
  5. Install the fast timer and packet handling kernel patches:
    If you have installed previous versions of these, run
    ./Update.Kernel
    - to update timer patches to get the current versions
    If you haven't installed these before, run:
    ./Patch.Kernel
    - to install all the kernel patches
    These run from this dir, but do the following in /usr/src/linux:
    • patch -p0 < fast.patches (patches kernel)
    • tar -xvf fast.tar (adds fast timer code)
    Make sure the patches install correctly!
    When patching, you will be given the opportunity to install additional new timer code patches. These seem to make the system clock much more accurate, but have the downside of taking you out of the normal kernel stream. (The mainstream kernel patches, whenever they arrive, are likely to be a bit different.) So these changes have been made optional.
  6. Now, configure and build the patched kernel:
    cd /usr/src/linux
    make config (or menuconfig/xconfig)
    - say "y" to CONFIG_FAST_TIMER and CONFIG_REPACK (at end, under "kernel hacks")
    make dep
    make install
    - may want to save a previous kernel version for failsafe; then reboot and make sure things work
  7. Check the configuration and create the appropriate Makefile:
    cd this dir
    edit Imakefile
    - Decide whether or not you want support for explicit congestion notification processing. If not, remove the -DCONFIG_ECN from the Makefile. If you do want it, you need do nothing.
    cd this dir/monitor
    edit Imakefile
    - may want to use an alternative to the Xaw widget set.
    - Tested with Athena Xaw, Xaw3d, and neXtaw
    xmkmf
    - creates customized Makefile
  8. Build and install the nistnet module, API library, and user interface
    cd this dir
    make
    make install
  9. Try things out:
    insmod nistnet
    - loads "nistnet" emulator module into kernel
    nistnet
    - runs user 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
  10. To turn off:
    hitbox -d or "off" button in nistnet
    - turns off emulator
    nistspy -d
    - turn off duplicator
    (mungebox shuts itself off automatically)
    rmmod mungemod/nistspy
    - removes add-on module (must be done before removing nistnet)
    rmmod nistnet
    - removes module from kernel
  11. 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 (www.sunsite.unc.edu) Walnut Creek (www.cdrom.com) 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.

Comments? Questions? Let us know at nistnet-dev@mail.antd.nist.gov.
[ NIST Net Home Page] [Installing NISTNet] [Using NISTNet] [NISTNet FAQ] [Mark Carson's home page]