Based on a simulation methodlogy proposed by S.Y. Wang and H.T. Kung at INFOCOM'99, Harvard TCP/IP network simulator can be constructed on any operating system which supports tunnel network interfaces. Currently, in this release, Harvard TCP/IP network simulator is constructed based on FreeBSD 2.2.8. The same simulation methodology can be applied to Linux, NetBSD, OpenBSD, BSDI, etc., as well. To build and use Harvard TCP/IP network simulator, it is recommended that users read the paper "A Simple Methodology for Constructing Entensible and High-Fidelity TCP/IP Network Simulator" by S.Y. Wang and H.T. Kung, published in the IEEE INFOCOM'99 proceedings. A postscript copy of this paper is included in this release in the DOCUMENTS subdirectory for users' convenience. The following describes the installation steps. $DIR represents the root directory of this software package in the following discussions. 0. Enable the ip_forwarding option on your machine [Note that the simulation methodology which Harvard TCP/IP network simulator uses is that a single machine is used to "act" as many vritual machines and packets are forwarded between these virtual machines. As a result, if the machine's ip forwarding option is disabled (by default), packets will not be able to be forwarded between these virtual machines. You can enable the forwarding option on your machine by setting gateway_enable to YES in /etc/rc.conf, or using "sysctl -w net.inet.ip.forwarding=1" at the user level to enable it.] 1. Build the event scheduler and its associated two utilities 1.1 cd $DIR/EventScheduler 1.2 make // the event scheduler "HarvardTCPIP" will be built and ready to use 1.3 the utility "iftunAutoGen" is already built in $DIR/EventScheduler/iftunAutoGen 1.4 the utility "routeAutoGen" is already built in $DIR/EventScheduler/routeAutoGen 2. Application Modifications 2.1 some useful applications or tools are already built in $DIR/Applications and are ready to use 2.2 any other application not included can be modified in the same way to work with the Harvard TCP/IP network simulator 2.3 to ask inetd to automatically launch ftpd.htcpip server for ftp clients, follow the instructions in $DIR/Applications/FTP/README to add some lines to /etc/services and /etc/inetd.conf, and to copy $DIR/Applications/FTP/ftpd/ftpd.htcpip to /usr/libexec. 2.4 For more information, please read $DIR/Applications/README. 3. Get a complete unmodified FreeBSD 2.2.8 kernel source tree For exampe, you can execute "cp -r /usr/src/sys /usr/src/sys.HTCPIP" to make a copy of the system kernel source tree and place it at /usr/src/sys.HTCPIP. You can make modifications directly to the system kernel source tree at /usr/src/sys. However, to be safe, it is recommended that you make a copy of it and apply the modifications to the copy. 4. Make modifications to some kernel source files 4.1 cd $DIR/KernelModifications/2.2.8 4.2 [modify install.sh so that NEWKERNELPATH is set to /usr/src/sys.HTCPIP. Remember to take off the "#" in "#set NEWKERNELPATH=/usr/src/sys.HTCPIP" so that this line is enabled.] 4.3 ./install.sh 5. Add kernel compilation and configuration options 5.1 cd /usr/src/sys.HTCPIP/i386/conf 5.2 [follow the instructions in $DIR/CompileKernel/addFiles to add the file name "kern/htcpip_syscalls.c" into files.i386] 5.3 cp GENERIC HTCPIP // make a new kernel configuration file named HTCPIP 5.4 [follow the instructions in $DIR/CompileKernel/requiredOption to add "HTCPIP" and modify some options in HTCPIP] 5.5 config HTCPIP // configure the new kernel 5.6 cd ../../compile/HTCPIP 5.7 make depend; make // start compiling the kernel source files 5.8 make install // install the HTCPIP kernel as the system default kernel 5.9 reboot After the reboot, when the system is up again, the installation process is complete and the Harvard TCP/IP network simulator is ready to use. You can cd to $DIR/SimulationExample to try three simple simulation examples. S.Y. Wang Harvard University shieyuan@eecs.harvard.edu 07/01/99