First draft preparation chapter
authorRichard Whitehouse <github@richardwhiuk.com>
Wed, 27 Apr 2011 00:43:47 +0000 (01:43 +0100)
committerRichard Whitehouse <github@richardwhiuk.com>
Wed, 27 Apr 2011 00:43:47 +0000 (01:43 +0100)
preparation.tex

index 17d843dfdae2bd8b310f0bae5dbdecc8ea18cce9..3f56def144116a81527f7f5293681d0d4cb973a0 100644 (file)
@@ -1,24 +1,30 @@
 \chapter{Preparation}
 
-\section{Research}
+In preparation for the implementation, there were a number of areas which I researched, and a number of decisions I made which affect the implementation of the project.
 
-\subsection{Ethernet and MOOSE}
+\section{Research}
 
 \subsection{Simulators}
 
-\section{Changes to Proposal}
+Some time was spent investigating the different network simulators available. The most common network simulators used in research are ns2 and ns3. ns2 is programmed in Tcl and C++, while ns3 is developed in C++ and Python.
 
-\subsection{Network Simulator}
+ns2 uses Tcl to setup simulations and run them. Tcl - Tool Command Language - is a scripting language specifically designed for customising and configuring the running of large projects by embedding a Tcl interpreter in the application.
 
-While the original proposal indicated that the project would be written for ns2, after research into the simulator, I decided that it would advantageous to utilise ns3 instead. ns2 is the current defacto standard for network simulation. Released in 1996, it consists of C++ and oTcl scripts to reduce the number of recompilation required to perform network simulations. ns3 however is primarily written in C++, with Python bindings. Written on a base of GTNetS \cite{gtnets}, it is a simulator with much better scalability characterisitics. \cite{ns-comparison} It also includes a advanced feature set, and a number of papers have been written using it is a base, which shows it's depth as a simulator, \cite{ns3-1} and \cite{ns3-2}. Also, based on my evaluation of the code, ns3 provides much better separation of concerns and much more active development base. For these reasons I have chosen to use ns3 instead of ns2.
+ns3 uses Python to do a similar job. However, with ns3, Python is desigined as a optional part of the interface to ns3, and it is perfectly possible to run large simulations written entirely in C++. By solely using C++, writing applications which link with libns3, the application can scale to far more hosts, and doesn't need a heavy binding which is required when using Python, or when using Tcl with ns2.
+
+\subsection{ns3 and Ethernet}
 
-\section{Learning}
+When I decided to settle on ns3, for the reasons outlined above, it was imperative to work out how much code existed in ns3, and how much I would need to write.
 
-%      C++
+ns3 ships a CSMA implementation, without collision detection, along with a network bridge implementation, which doesn't conform to the standard \ref{80211d}. In particular it lacked a RSTP implementation.
 
-%      Python
+As outlined in 1.4, MOOSE, the 802.11D specification, along with Ethernet implementation details are entirely off the course which I had to research
 
-%      
+\section{Changes to Proposal}
+
+\subsection{Network Simulator}
+
+While the original proposal indicated that the project would be written for ns2, after research into the simulator, I decided that it would advantageous to utilise ns3 instead. ns2 is the current defacto standard for network simulation. Released in 1996, it consists of C++ and oTcl scripts to reduce the number of recompilation required to perform network simulations. ns3 however is primarily written in C++, with Python bindings. Written on a base of GTNetS \cite{gtnets}, it is a simulator with much better scalability characterisitics. \cite{ns-comparison} It also includes a advanced feature set, and a number of papers have been written using it is a base, which shows it's depth as a simulator, \cite{ns3-1} and \cite{ns3-2}. Also, based on my evaluation of the code, ns3 provides much better separation of concerns and much more active development base. For these reasons I have chosen to use ns3 instead of ns2.
 
 \section{Strategy}