From: Richard Whitehouse Date: Wed, 27 Apr 2011 00:43:47 +0000 (+0100) Subject: First draft preparation chapter X-Git-Url: https://git.richardwhiuk.com/?a=commitdiff_plain;h=b15f2279c59575ac72cd291608637b3b94c7ddd5;p=ii-diss.git First draft preparation chapter --- diff --git a/preparation.tex b/preparation.tex index 17d843d..3f56def 100644 --- a/preparation.tex +++ b/preparation.tex @@ -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}