#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass report \begin_preamble \input{preamble} \end_preamble \language english \inputencoding auto \fontscheme times \graphics default \paperfontsize 11 \spacing double \papersize letterpaper \paperpackage a4 \use_geometry 1 \use_amsmath 1 \use_natbib 1 \use_numerical_citations 1 \paperorientation portrait \leftmargin 1.5in \topmargin 0.9in \rightmargin 1in \bottommargin 1in \headsep 0.17in \footskip 0in \secnumdepth 4 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle fancy \layout Chapter Instruction manual \begin_inset LatexCommand \label{cha:Instruction-manual} \end_inset \layout Standard \begin_inset ERT status Collapsed \layout Standard \backslash thispagestyle{empty} \end_inset \begin_inset ERT status Collapsed \layout Standard \backslash renewcommand \backslash figurename{Fig.} \end_inset The last section described the procedures needed to run User Mode Linux. This section will give command by command instructions on how to setup a network enabled User Mode Linux with skas debugging capabilities. Appendix A is a great resource if more details are needed. There are three major installations which need to be done: creation of the UML kernel, rebuild the host machine's kernel, installation of the UML tools. The configuration consists: setting up the tun/tap driver. \layout Standard Currently, Fedora Core Two has issues with detaching from threaded processes under a debugger. Fedora Core One which is currently in Fedora Legacy support at the time of this writing is recommended for installing this UML kernel setup. \layout Section Building User Mode Linux \layout Standard There are three major files that are needed. The root_fs, a kernel source with the correct version of the UML patch, and the UML tools. The kernel patch and the latter two can be downloaded entirely from the sourceforge website \begin_inset LatexCommand \citep{Dike} \end_inset . \layout Subsection UML Building a UML Kernel \layout Standard Building the UML kernel is a tricky process, because the initial build may not compile. When this happen, choose another kernel version with matching UML kernel patch and try again. The steps are fairly basic. \layout Enumerate Go to the User Mode Linux website and see the patches available for download. On the download website for User Mode Linux (http://user-mode-linux-sourceforge. net/dl-sf.html) \begin_inset LatexCommand \citep{Dike} \end_inset and under the label \begin_inset Quotes eld \end_inset Build From Source, \begin_inset Quotes erd \end_inset there is a listing for both 2.4 and 2.6 kernels. The latest 2.4 UML kernel patch is recommended. \layout Enumerate Go to the Linux Kernel Repository located at http://www.kernel.org \begin_inset LatexCommand \citep{Torvalds} \end_inset or one of the associated mirrors (for faster downloads) \begin_inset Foot collapsed false \layout Standard The 2.4 kernel is also located at and the 2.6 kernel at \end_inset and download the correct kernel version. There should be two different compressions and patch files. Avoid the patch files and download a kernel compressed with either bzip2 or gzip (ending with extension bz2 or gz). The file should like: linux-2.4.27.tar.bz2. \layout Enumerate Uncompress the kernel and apply the patch. If kernel file is *.bz2, type âtar xvjf kernelFileâ. If the kernel file is *.gz, type âtar xvzf kernelFileâ. Where kernelFile is the name of the kernel downloaded in step 2. \layout Enumerate Change directory into the top level of the kernel source and clean out the kernel source by typing \begin_inset Quotes erd \end_inset make mrproper. \begin_inset Quotes erd \end_inset \layout Enumerate Uncompress and copy the UML patch to the top level of the kernel source tree . Type \begin_inset Quotes eld \end_inset bunzip2 UMLPatchFile \begin_inset Quotes erd \end_inset to uncompress the patch file. Where UMLPatchFile is the name of the UML patch file downloaded in step one. \layout Enumerate With the patch file at the top of the kernel source tree, apply the patch by typing, \begin_inset Quotes eld \end_inset patch -p1 < UMLPatchFile \begin_inset Quotes erd \end_inset . \layout Enumerate Run make configuration menu and save the default settings. Type \begin_inset Quotes eld \end_inset make xconfig ARCH=um \begin_inset Quotes erd \end_inset (case sensitive), and hit \begin_inset Quotes eld \end_inset save and exit \begin_inset Quotes erd \end_inset button located on the top right of the window. The default settings for the make file will work fine. \layout Enumerate Build the kernel by type \begin_inset Quotes eld \end_inset make linux ARCH=um. \begin_inset Quotes erd \end_inset A \begin_inset Quotes eld \end_inset linux \begin_inset Quotes erd \end_inset executable file should be in the top of the Linux code source tree. \layout Subsection Root file system \layout Standard Go back to the UML download page and under the header âThe root filesystem,â choose one of the root file systems. root_fs_slack8.1.bz2 is recommended and was used for the real servers. The client and servers used an expanded and updated version Slackware as a root file system1. Fans of RedHat are warned that RedHat root filesystems are custom to specific hardware (i386 hardware) and do not work as well with a virtual devices. \layout Standard Rename the root_fs file, downloaded above, to \begin_inset Quotes eld \end_inset root_fs \begin_inset Quotes erd \end_inset which is the default root file system file. \layout Subsection Installing UML tools \layout Standard This next step will set up monitoring and networking software on the host machine so the UML session can communicate with the host and other UML sessions. \layout Enumerate On the UML download page and under the header âUML Utilities,â download the latest UML Utilities. \layout Enumerate Uncompress the compressed tar package by typing. \begin_inset Quotes eld \end_inset tar xvjf UMLUtilityFile. \begin_inset Quotes erd \end_inset Where UMLUtilityFile is the file downloaded in step one. A directory called, \begin_inset Quotes eld \end_inset tools \begin_inset Quotes erd \end_inset should be created. \layout Enumerate Go into the newly created \begin_inset Quotes eld \end_inset tools \begin_inset Quotes erd \end_inset directory and install the utility by typing, \begin_inset Quotes eld \end_inset make all; make install. \begin_inset Quotes erd \end_inset This need to be done with root privileges. \layout Section Running UML \layout Standard To run an UML session with networking capabilities, two IP addresses are needed for each virtual network device. Choose two IP addresses in the network. Execute the Linux kernel with the command in Fig.\SpecialChar ~ \begin_inset LatexCommand \ref{Fig: InstRunningUML} \end_inset . \layout Standard \begin_inset Float figure placement H wide false collapsed false \layout Standard \align center \begin_inset Tabular \begin_inset Text \layout Standard \paragraph_spacing single \align left linux mem=128M udb=root_fs_slackware_7.0_big udb2=swap debug=go // \newline eth0=tuntap,,, \newline \SpecialChar ~ \newline \end_inset \end_inset \layout Caption \begin_inset LatexCommand \label{Fig: InstRunningUML} \end_inset Running user mode linux \end_inset \layout Standard An x terminal should come up as shown below. For most Slackware root file systems, just typing in root should automatically login without a password. \layout Standard Once inside the UML session has started type the following in Fig.\SpecialChar ~ \begin_inset LatexCommand \ref{Fig: InstrIfconfig} \end_inset to setup network the network connection. \layout Standard \begin_inset Float figure placement H wide false collapsed false \layout Standard \align center \begin_inset Tabular \begin_inset Text \layout Standard \paragraph_spacing single \align left ifconfig eth0 \newline route del -net dev eth0 netmask 255.255.0.0 \newline route add -host dev eth0 \newline route add default gw \newline \SpecialChar ~ \newline \end_inset \end_inset \layout Caption \begin_inset LatexCommand \label{Fig: InstrIfconfig} \end_inset Ifconfig commands for inside the virtual file system \end_inset \layout Section Running the perl test files \layout Standard Running the test files (located on the media) are straight forward. Create an input file with command simiilar to those in Fig.\SpecialChar ~ \begin_inset LatexCommand \ref{Fig: Example input.txt} \end_inset and listed in the perl scripts. Setup the intermediate proxies with an IP Tunnel from the host machine and the server (Section\SpecialChar ~ \begin_inset LatexCommand \ref{sec:Iproute2-to-create} \end_inset ). Also setup the host machine and server with tunnels to the intermediate proxies. \layout Standard \begin_inset Float figure placement H wide false collapsed false \layout Standard \align center \begin_inset Tabular \begin_inset Text \layout Standard \paragraph_spacing single \align left # no buffer 5 nodes first node limited by 250kB/s rest 100kB/s \layout Standard \paragraph_spacing single \align left numOfNode=5 multipath=1 destAddr=663cc680 srcAddr=653cc680 bufferOn=1 bufferSize =1 file="indexc2.html" numOfReq=5 label="5 node 1:5 250/100" rateLimitFirstNode=2 50 rateLimit=100 \layout Standard \paragraph_spacing single \align left numOfNode=5 multipath=1 destAddr=663cc680 srcAddr=653cc680 bufferOn=1 bufferSize =5 file="indexc2.html" numOfReq=5 label="5 node 1:10 250/100" rateLimitFirstNode= 250 rateLimit=100 \newline numOfNode=5 multipath=1 destAddr=663cc680 srcAddr=653cc680 bufferOn=1 bufferSize =10 file="indexc2.html" numOfReq=5 label="5 node 1:15 250/100" rateLimitFirstNode =250 rateLimit=100 \newline numOfNode=5 multipath=1 destAddr=663cc680 srcAddr=653cc680 bufferOn=1 bufferSize =15 file="indexc2.html" numOfReq=5 label="5 node 1:20 250/100" rateLimitFirstNode =250 rateLimit=100 \newline numOfNode=5 multipath=1 destAddr=663cc680 srcAddr=653cc680 bufferOn=1 bufferSize =20 file="indexc2.html" numOfReq=5 label="5 node 1:25 250/100" rateLimitFirstNode =250 rateLimit=100 \newline numOfNode=5 multipath=1 destAddr=663cc680 srcAddr=653cc680 bufferOn=1 bufferSize =25 file="indexc2.html" numOfReq=5 label="5 node 1:50 250/100" rateLimitFirstNode =250 rateLimit=100 \newline \SpecialChar ~ \newline \end_inset \end_inset \layout Caption \begin_inset LatexCommand \label{Fig: Example input.txt} \end_inset Example input.txt file \end_inset \layout Standard Put the server.pl on the server and the client.pl on the client machine. Start the server.pl first. Make sure all ip_forward's are turned on for all the machines (/proc/sys/net/ip v4/ip_forward). Start the client.pl and debug output should start flying on the screen. The debug output is processed before and after the testing so there is no performance hit on the tests. \the_end