$Header$ How to install the Linux "NIST Net Version version 2.0.5" emulation packages: -1. Prerequisites: Currently requires 2.0.27-2.0.38 level or 2.2.5-2.2.17 level kernel. This version should compile with either "linux" libc headers or "glibc" libc headers, with the proviso that the kernel files can't be compiled with glibc headers. Note that I've unified the previous 1.4alpha and 2.0alpha versions, so this one will work for both 2.0 and 2.2 kernels. 0. 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. 1. 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 2. Install the fast timer kernel patches: If you have installed previous versions of these, run: ./Update.Kernel to update the fast timer routines to the latest versions. If you haven't installed these before, run instead: ./Patch.Kernel to get the fast timer routines. 3. Now, configure and build the patched kernel: cd /usr/src/linux make config (or menuconfig/xconfig) -- say "y" to CONFIG_FAST_TIMER (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 4. Check the configuration and create the appropriate Makefiles: cd edit Config -- Decide whether or not you want support for explicit congestion notification processing. If not, remove the -DCONFIG_ECN from the Config file. If you do want it, you need do nothing. Also decide whether you want COS (class of service) selection support. If so, uncomment -DCONFIG_COS. cd /monitor edit Imakefile -- may want to use an alternative to the Xaw3d widget set. Tested with Athena Xaw and neXtaw xmkmf -a -- creates customized Makefiles. Note: you *must* run xmkmf, even if you don't change the Imakefile! That's because I'm using XFree86 4.0.1, and you almost certainly are not. So you'll have to regenerate the Makefiles. 5. Build and install the nistnet module, API library, and user interface cd make make install 6. Try things out: insmod nistnet -- loads "nistnet" emulator module into kernel xnistnet -- runs user interface cnistnet -- runs command-line interface insmod mungemod -- loads "mungebox," a sample emulator add-on mungebox -u -a -S -- view traffic between and insmod nistspy -- loads "nistspy" sample add-on (note: only one add-on can be installed at a time) nistspy -u -a -- duplicate traffic to newdest/port 7. To turn off: cnistnet -d or "on/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 8. 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 www.sunsite.unc.edu, 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. 9. For the new features found in 2.0.5, see the README.WhatsNew file in the top-level directory. Comments? Questions? Let us know at nistnet-dev@antd.nist.gov