#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