<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.nsnam.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hippo</id>
	<title>Nsnam - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.nsnam.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hippo"/>
	<link rel="alternate" type="text/html" href="https://www.nsnam.org/wiki/Special:Contributions/Hippo"/>
	<updated>2026-04-21T13:22:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Ns-3.19-errata&amp;diff=8415</id>
		<title>Ns-3.19-errata</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Ns-3.19-errata&amp;diff=8415"/>
		<updated>2014-03-31T08:51:43Z</updated>

		<summary type="html">&lt;p&gt;Hippo: bug 1170&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page is an [[Errata]] page for the ns-3.19 release.&lt;br /&gt;
&lt;br /&gt;
* After the release, it was discovered (reported in [https://www.nsnam.org/bugzilla/show_bug.cgi?id=1823 bug 1823]) that IPv6 fails to work properly over point-to-point NetDevice types.  This [http://code.nsnam.org/ns-3-dev/rev/b8c9ece3ae63 patch], which will be included in future releases, can fix the problem.&lt;br /&gt;
* After the release, it was discovered (reported in [https://www.nsnam.org/bugzilla/show_bug.cgi?id=1170#c56 bug 1170]) that optimized build fails on clang-3.4 (Xcode 5.1) due to unused function warnings.  This [http://code.nsnam.org/ns-3-dev/rev/1330d4ee94e8 patch], which will be included in future releases, can fix the problem.&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Sprints&amp;diff=8088</id>
		<title>Sprints</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Sprints&amp;diff=8088"/>
		<updated>2013-11-11T10:31:33Z</updated>

		<summary type="html">&lt;p&gt;Hippo: s/Djanjo/Django/g&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
= What is a sprint? =&lt;br /&gt;
&lt;br /&gt;
A sprint is a scheduled time for ns-3 contributors to gather and focus their undivided attention on improving the code, documentation, or tests. &lt;br /&gt;
&lt;br /&gt;
Sprints are open to anyone, and are conducted on IRC, and if needed, other virtual meeting technologies.  &lt;br /&gt;
* IRC channel is '''#ns-3''' at irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
The [https://code.djangoproject.com/wiki/Sprints Django project] has a good reference and links to some presentations all about coding sprints.&lt;br /&gt;
&lt;br /&gt;
A summary of the results of sprints will be shared with other developers on the ns-developers mailing list.&lt;br /&gt;
&lt;br /&gt;
= Upcoming sprints =&lt;br /&gt;
&lt;br /&gt;
* Friday November 15, 14h00-20h00 UTC  ('''note:'''  attendees are welcome to attend a subset of the 6-hour slot, if so desired)&lt;br /&gt;
** '''Topic:'''  Documentation improvement.  https://www.nsnam.org/bugzilla/show_bug.cgi?id=938.  In particular, we will work on reducing the number of doxygen warnings that are generated due to missing Doxygen.  This is a long-standing issue that just requires group effort to resolve.&lt;br /&gt;
** '''Organizer:''' [mailto:tomhend@u.washington.edu Tom Henderson]&lt;br /&gt;
** '''Preparation:'''&lt;br /&gt;
**# Read the general preparation below&lt;br /&gt;
**# Make sure you have Doxygen installed on your system, and can run the shell script 'doc/doxygen.warnings.report.sh' (it may take a while to run, and should generate a lot of warnings)&lt;br /&gt;
**# Contact ns-3-users mailing list or the organizer for help if you have trouble with the above&lt;br /&gt;
** '''Tasks:'''  Fix as many of the doxygen warnings as we can.  The current count of warnings (by module) can be seen here:  http://mailman.isi.edu/pipermail/ns-commits/2013-November/014304.html.  There is a full log generated that can be used to identify what is the error, and then it can be fixed with a text editor.  How this is planned to work is that contributors who show up will be assigned a file or set of files (that they are comfortable with documenting) and will try to clear the errors in that file, producing a patch that can be merged to ns-3-dev.&lt;br /&gt;
**  '''Coordination:'''  We will use IRC and [http://etherpad.org Etherpad] to coordinate the work (make sure multiple people do not work on the same file).&lt;br /&gt;
&lt;br /&gt;
== General preparation ==&lt;br /&gt;
&lt;br /&gt;
* Make sure that you can join the IRC channel in advance&lt;br /&gt;
* Make sure you can checkout the development version of ns-3 (we will use ns-3-dev)&lt;br /&gt;
* Familiarize yourself with how to [http://www.nsnam.org/developers/contributing-code/submit/ generate a patch] against ns-3-dev.  Patches you write can be uploaded to Bugzilla or sent to one of the maintainers.&lt;br /&gt;
&lt;br /&gt;
== Once you're there ==&lt;br /&gt;
&lt;br /&gt;
* Check in by letting others know that you've joined and are ready to contribute, and a maintainer will go from there&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=DevelMeetingOct2011&amp;diff=6300</id>
		<title>DevelMeetingOct2011</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=DevelMeetingOct2011&amp;diff=6300"/>
		<updated>2011-10-10T10:49:42Z</updated>

		<summary type="html">&lt;p&gt;Hippo: /* Participants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
= Location and Schedule =&lt;br /&gt;
&lt;br /&gt;
Virtual, Thursday October 27 (19h00-21h00 UTC).  For North American participants, this is 3pm-5pm EDT.&lt;br /&gt;
&lt;br /&gt;
= Participants =&lt;br /&gt;
&lt;br /&gt;
(please add your name/email here if you plan to attend)&lt;br /&gt;
&lt;br /&gt;
* Tom Henderson&lt;br /&gt;
* Mitch Watrous&lt;br /&gt;
* George Riley&lt;br /&gt;
* John Abraham&lt;br /&gt;
* Felipe Perrone&lt;br /&gt;
* Vedran Miletic&lt;br /&gt;
* Mathieu Lacage&lt;br /&gt;
* Lalith Suresh&lt;br /&gt;
* Andrey Mazo&lt;br /&gt;
&lt;br /&gt;
= Agenda =&lt;br /&gt;
&lt;br /&gt;
This is our first try at a virtual meeting.  We will aim to hold discussion to two hours only.  If we have more topics or more discussion needed, we can schedule another one.&lt;br /&gt;
&lt;br /&gt;
Please list suggested topics below:&lt;br /&gt;
&lt;br /&gt;
* next steps in modular build system&lt;br /&gt;
&lt;br /&gt;
= Logistics =&lt;br /&gt;
&lt;br /&gt;
We will use an audio bridge and desktop sharing solution such as Webex, Adobe Connect, or Cisco MeetingPlace.  Details will be provided when they are sorted out.&lt;br /&gt;
&lt;br /&gt;
= Suggested agenda/topics =&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Topology_Generator&amp;diff=5015</id>
		<title>Topology Generator</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Topology_Generator&amp;diff=5015"/>
		<updated>2010-11-16T15:10:29Z</updated>

		<summary type="html">&lt;p&gt;Hippo: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
The ns-3 topology generator project aims to provide a quick and easy way to create ns-3 topology.&lt;br /&gt;
It provides intuitive GUI so you can add nodes, link, applications, ... and generates C++ simulation&lt;br /&gt;
code for ns-3.&lt;br /&gt;
&lt;br /&gt;
This tool has been written by Pierre Weiss and Sebastien Vincent, University of Strasbourg.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
You need Qt 4 libraries to compile and use ns-3 topology generator.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
To download the project:&lt;br /&gt;
 $ hg clone http://svnet.u-strasbg.fr/hg/ns-3-generator&lt;br /&gt;
&lt;br /&gt;
To build the project:&lt;br /&gt;
 $ qmake&lt;br /&gt;
 $ make&lt;br /&gt;
&lt;br /&gt;
== Usage == &lt;br /&gt;
&lt;br /&gt;
To use it, simply run:&lt;br /&gt;
 $ ./ns-3-generator&lt;br /&gt;
&lt;br /&gt;
To generate the API documentation (you need doxygen tool):&lt;br /&gt;
$ doxygen Doxyfile&lt;br /&gt;
&lt;br /&gt;
The HTML generated documentation is located in doc/html/ directory of sources.&lt;br /&gt;
&lt;br /&gt;
Configurations may be saved to an XML file and later loaded.&lt;br /&gt;
&lt;br /&gt;
== Example screenshot ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ns-3-generator-test.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Ns-3-generator-test.cc.patch]]: C++ code generated from the above screenshot. Python code can also be generated.  The configuration can be saved in XML and reloaded. '''Note:'''  two applications were added and can be sen in the generated code (not visible in the screenshot).&lt;br /&gt;
&lt;br /&gt;
== Feature requests ==&lt;br /&gt;
&lt;br /&gt;
* Ability to configure tracing&lt;br /&gt;
* (others go here)&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Direct_Code_Execution_portability&amp;diff=4825</id>
		<title>Direct Code Execution portability</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Direct_Code_Execution_portability&amp;diff=4825"/>
		<updated>2010-08-26T17:36:17Z</updated>

		<summary type="html">&lt;p&gt;Hippo: Initial template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended to track [http://code.nsnam.org/mathieu/ns-3-simu ns-3-simu] portability issues.&lt;br /&gt;
&lt;br /&gt;
Currently it's very sensitive to libc version used.&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
|-&lt;br /&gt;
! Distribution&lt;br /&gt;
! Architecture&lt;br /&gt;
! glibc&lt;br /&gt;
! Last checked revision&lt;br /&gt;
! ./test.py -s process-manager&lt;br /&gt;
! Workarounds&lt;br /&gt;
|-&lt;br /&gt;
| Fedora 12&lt;br /&gt;
| x86-64&lt;br /&gt;
| 2.11.1&lt;br /&gt;
| ???&lt;br /&gt;
| PASS&lt;br /&gt;
|-&lt;br /&gt;
| Fedora 13&lt;br /&gt;
| x86-64&lt;br /&gt;
| 2.12.?&lt;br /&gt;
| ???&lt;br /&gt;
| FAIL&lt;br /&gt;
|-&lt;br /&gt;
| Ubuntu 10.04&lt;br /&gt;
| x86-64&lt;br /&gt;
| ???&lt;br /&gt;
| ???&lt;br /&gt;
| FAIL&lt;br /&gt;
|-&lt;br /&gt;
| Ubuntu 9.10&lt;br /&gt;
| x86&lt;br /&gt;
| ???&lt;br /&gt;
| ???&lt;br /&gt;
| FAIL&lt;br /&gt;
|-&lt;br /&gt;
| Gentoo (as of 2010-08-26)&lt;br /&gt;
| x86&lt;br /&gt;
| 2.11.2&lt;br /&gt;
| ???&lt;br /&gt;
| FAIL&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Installation&amp;diff=4492</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Installation&amp;diff=4492"/>
		<updated>2010-06-08T16:55:49Z</updated>

		<summary type="html">&lt;p&gt;Hippo: uncrustify dependency&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is a detailed installation guide for ns-3.  Basic installation instructions can be found at the [http://www.nsnam.org/getting_started.html Getting Started] page or in the [http://www.nsnam.org/docs/release/tutorial/tutorial.html ns-3 tutorial].&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&lt;br /&gt;
ns-3 is primarily developed on GNU/Linux platforms, and the minimal requirements to run basic simulations are a gcc installation of gcc-3.4/g++-3.4 or greater, and python 2.4 or greater.  &lt;br /&gt;
&lt;br /&gt;
ns-3 is supported on the following primary platforms:&lt;br /&gt;
&lt;br /&gt;
# Linux x86 gcc 4.2, 4.1, and, 3.4.6.&lt;br /&gt;
# Linux x86_64 gcc 4.4.0, 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6&lt;br /&gt;
# MacOS X ppc and x86 (gcc 4.0.x and 4.2.x)&lt;br /&gt;
# [http://www.cygwin.com Cygwin] gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized)&lt;br /&gt;
&lt;br /&gt;
By supported, we mean that the project tries to support most or all of the build options on these platforms unless there is a good reason to exclude the option; and at least the debug build will compile.  If you intend to do serious work using ns-3, and are forced by circumstances to use a Windows platform, consider virtualization of a popular Linux platform.  This may be more time-consuming than installing a minimal Cygwin, for example, but you end up with a fully functional Linux system and ns-3 distribution.  Some quick performance comparisons between Cygwin and VirtualBoxed Fedora 11 indicate that examples can actually run faster under VirtualBox.&lt;br /&gt;
&lt;br /&gt;
We provide HOWTO documents describing the process for installing Linux support and getting ns-3 running using two popular virtualization products:  VirtualBox ([[HOWTO use VirtualBox to run simulations on Windows machines]]) and VMware ([[HOWTO use VMware to set up virtual networks (Windows)]]).&lt;br /&gt;
&lt;br /&gt;
ns-3 may also run on currently unsupported platforms.  For example, an alternative Windows platform is MinGW.  There are maintainers who attempt to keep a subset of ns-3 running on MinGW, but it is not &amp;quot;officially&amp;quot; suppported.  This means that bugs filed against MinGW will be addressed as time permits.  Additionally, the Eclipse IDE is used by some developers, but the project does not actively support this environment.&lt;br /&gt;
&lt;br /&gt;
Additional maintainers are invited to make more platforms, compilers and environments supported.&lt;br /&gt;
&lt;br /&gt;
=== ns-3 options ===&lt;br /&gt;
&lt;br /&gt;
There are a few options that are not enabled by default and are not available on all platforms.  At the end of the configuration process (explained below), the status of these options are shown as detected by a '''waf''' script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
---- Summary of optional NS-3 features:&lt;br /&gt;
Threading Primitives          : enabled&lt;br /&gt;
Real Time Simulator           : enabled&lt;br /&gt;
Emulated Net Device           : enabled&lt;br /&gt;
Tap Bridge                    : enabled&lt;br /&gt;
GtkConfigStore                : enabled&lt;br /&gt;
XmlIo                         : not enabled (library 'libxml-2.0 &amp;gt;= 2.7' not found)&lt;br /&gt;
SQlite stats data output      : enabled&lt;br /&gt;
Network Simulation Cradle     : enabled&lt;br /&gt;
Python Bindings               : not enabled (disabled by user request)&lt;br /&gt;
Use sudo to set suid bit      : not enabled (option --enable-sudo not selected)&lt;br /&gt;
Static build                  : not enabled (option --enable-static not selected)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generally if the platform is missing some requirement for an option it is marked as &amp;quot;not enabled.&amp;quot;  Note that &amp;quot;disabled by user request&amp;quot; will be shown when the user explicitly disables a feature (such as &amp;quot;--disable-python&amp;quot;); and if a feature defaults to disabled this will also be noted (e.g., option --enable-sudo not selected).&lt;br /&gt;
&lt;br /&gt;
The table below is meant to help sort out the different features and on which platforms they are supported.  This table reflects the status of the most recent release version (ns-3.6):&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=3&lt;br /&gt;
&lt;br /&gt;
|+ Option status&lt;br /&gt;
! Option !! Linux gcc-4.x,gcc-3.4.x !! OS X !! Cygwin&lt;br /&gt;
|-&lt;br /&gt;
! Optimized build &lt;br /&gt;
|   ||   || X &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Python bindings&lt;br /&gt;
|   ||   || X &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Threading&lt;br /&gt;
|   ||   ||&lt;br /&gt;
|-&lt;br /&gt;
! Real-time simulator&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Emulated Net Device&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Tap Bridge&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Network simulation cradle&lt;br /&gt;
|  note&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Static builds&lt;br /&gt;
|  ||  || &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Key:'' '''(  )'''(empty space) = supported; '''X''' = not supported;  '''?''' = unknown; '''dev''' = support in ns-3-dev (next release)&lt;br /&gt;
&lt;br /&gt;
''Notes:''&lt;br /&gt;
# Works with gcc4&lt;br /&gt;
# Cygwin limitation explained [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings#Cygwin_limitation here]&lt;br /&gt;
# NSC works best with gcc-3.4 or gcc-4.2 or greater series.  Try to avoid gcc-4.0 and gcc-4.1 series; some build problems have been found with these versions of compilers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
The core of ns-3 requires a gcc/g++ installation of 3.4 or greater, and python 2.4 or greater. As mentioned above, different options require additional support.  This is a list of packages (for Debian/Ubuntu systems) that are needed to support different ns-3 options.  Note that other distributions (e.g., Fedora, FreeBSD) may have different package names or capitalization (e.g. ImageMagik).  Installation should be similar for Red Hat/Fedora based systems, with &amp;quot;yum&amp;quot; replacing &amp;quot;apt-get&amp;quot;, but some differences exist, so below is a guide for both Ubuntu (should generally apply to Debian) and Fedora/RedHat-based systems:&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu/Debian ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Ubuntu 9.10 release; other releases or other Debian-based systems may slightly vary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ (release):'''  This is the minimal set of packages needed to run ns-3 from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gcc g++ python&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gcc g++ python python-dev&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install bzr&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libgtk2.0-0 libgtk2.0-dev&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install doxygen graphviz imagemagick&lt;br /&gt;
  sudo apt-get install texlive texlive-pdf texlive-latex-extra texlive-generic-extra texlive-generic-recommended&lt;br /&gt;
&lt;br /&gt;
* The ns-3 manual and tutorial are written in Texinfo (doc/tutorial or doc/manual):&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install texinfo dia texlive texlive-pdf texlive-latex-extra texlive-extra-utils texlive-generic-recommended texi2html&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install flex bison&lt;br /&gt;
&lt;br /&gt;
* Some basic mobility visualization tests require goocanvas:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libgoocanvas-dev&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install g++-3.4 gcc-3.4&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
 sudo apt-get install tcpdump&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sqlite sqlite3 libsqlite3-dev&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install libxml2 libxml2-dev&lt;br /&gt;
&lt;br /&gt;
* Support for Gustavo's ns-3-pyviz visualizer&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas&lt;br /&gt;
&lt;br /&gt;
* Support for utils/check-style.py style check program&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install uncrustify&lt;br /&gt;
&lt;br /&gt;
=== Fedora/RedHat ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Fedora 12/CentOS 5.4 release; other releases may slightly vary.  &lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ (release):'''  This is the minimal set of packages needed to run ns-3 from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc gcc-c++ python&lt;br /&gt;
&lt;br /&gt;
* '''Note:'''  If you are using CentOS 5.4 or RHEL 5, you may want to also get and use the gcc44 packages; see the [[Troubleshooting]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc gcc-c++ python python-devel&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.  You may want to install mercurial from rpmforge repository (instructions [http://www.trinitycore.org/forum/mercurial-centos-t3113.html here]) or EPEL.&lt;br /&gt;
&lt;br /&gt;
  yum install mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar. You may need EPEL repository for this.&lt;br /&gt;
&lt;br /&gt;
  yum install bzr&lt;br /&gt;
&lt;br /&gt;
* An optional but recommended package (for improving some wireless model fidelity) is GNU scientific library:&lt;br /&gt;
&lt;br /&gt;
  yum install gsl gsl-devel&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  yum install gtk2 gtk2-devel&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  yum install gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation:&lt;br /&gt;
&lt;br /&gt;
  yum install doxygen graphviz ImageMagick&lt;br /&gt;
  yum install texinfo texinfo-tex&lt;br /&gt;
&lt;br /&gt;
* The ns-3 manual and tutorial are written in Texinfo (doc/tutorial or doc/manual):&lt;br /&gt;
&lt;br /&gt;
  yum install texinfo dia texinfo-tex texi2html&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  yum install flex bison&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
 &lt;br /&gt;
  yum install compat-gcc-34&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
  yum install tcpdump&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
  yum install sqlite sqlite-devel&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
  yum install libxml2 libxml2-devel&lt;br /&gt;
&lt;br /&gt;
* Support for utils/check-style.py style check program&lt;br /&gt;
&lt;br /&gt;
  yum install uncrustify&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Gentoo as of 04/22/2010; due to possible changes in USE-flags or package names the list may slightly vary.&lt;br /&gt;
First of all, become root as usual.&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ or Python (release):'''  This is the minimal set of packages needed to run ns-3 or to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;threads -nocxx nptl&amp;quot; emerge -uavN gcc python&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;curl&amp;quot; emerge -uavN bzr&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace gtk+:2&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation; also ns-3 manual and tutorial (written in Texinfo):&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;extra graphics png&amp;quot; emerge -uavN texlive&lt;br /&gt;
  USE=&amp;quot;cairo graphviz latex png svg&amp;quot; emerge -uavN doxygen imagemagick dia&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace flex bison&lt;br /&gt;
&lt;br /&gt;
* Some basic mobility visualization tests require goocanvas:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace goocanvas&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;-nocxx nptl&amp;quot; emerge -uavN gcc:3.4&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
  emerge -av --noreplace tcpdump&lt;br /&gt;
&lt;br /&gt;
or you may prefer&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace wireshark&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;threadsafe&amp;quot; emerge -uavN sqlite:3&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace libxml2&lt;br /&gt;
&lt;br /&gt;
* Support for Gustavo's ns-3-pyviz visualizer (following packages have no stable version as of day of writing, so ~arch for ACCEPT_KEYWORDS)&lt;br /&gt;
&lt;br /&gt;
  ACCEPT_KEYWORDS=&amp;quot;~x86&amp;quot; emerge -av --noreplace pygraphviz kiwi pygoocanvas&lt;br /&gt;
&lt;br /&gt;
* Support for utils/check-style.py style check program&lt;br /&gt;
&lt;br /&gt;
  ACCEPT_KEYWORDS=&amp;quot;~x86&amp;quot; emerge -av --noreplace uncrustify&lt;br /&gt;
&lt;br /&gt;
* To summarize all of above up (without not yet stable pygraphviz, kiwi, pygoocanvas, uncrustify):&lt;br /&gt;
  USE=&amp;quot;cairo curl extra graphics graphviz latex -nocxx nptl png svg threads threadsafe&amp;quot; emerge -uavN bison bzr dia doxygen flex gcc gcc:3.4 goocanvas gtk+:2 imagemagick libxml2 mercurial python sqlite:3 tcpdump texlive valgrind wireshark&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X (Snow Leopard) ===&lt;br /&gt;
&lt;br /&gt;
Please see [[HOWTO_get_ns-3_running_on_Mac_OS_X_(10.6.2_Intel)]] and follow steps 1 and 2 (prerequisites) and continue reading below if you want to work with a released version, and follow all steps if you want to work with a development version of ns-3.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 code is available in Mercurial repositories on the server http://code.nsnam.org (look for the latest release e.g., &amp;quot;ns-3.4&amp;quot;).  You can download a tarball of the latest release at http://www.nsnam.org/releases or you can work with our repositories using Mercurial.  We recommend using Mercurial unless there's a good reason not to (See the end of this section for instructions on how to get a tarball release).&lt;br /&gt;
&lt;br /&gt;
The simplest way to get started using Mercurial repositories is to use the '''ns-3-allinone''' environment.  This is a set of scripts that manages the downloading and building of various subystems of ns-3 for you.  We recommend that you begin your ns-3 adventures in this environment as it can really simplify your life at this point.&lt;br /&gt;
&lt;br /&gt;
=== Downloading ns-3 Using Mercurial ===&lt;br /&gt;
One practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories.  If you adopt that approach, you can get a copy of ns-3-allinone by typing the following into your Linux shell (assuming you have installed Mercurial):&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir repos&lt;br /&gt;
  cd repos&lt;br /&gt;
  hg clone http://code.nsnam.org/ns-3-allinone&lt;br /&gt;
&lt;br /&gt;
As the hg (Mercurial) command executes, you should see something like the following displayed,&lt;br /&gt;
&lt;br /&gt;
  destination directory: ns-3-allinone&lt;br /&gt;
  requesting all changes&lt;br /&gt;
  adding changesets&lt;br /&gt;
  adding manifests&lt;br /&gt;
  adding file changes&lt;br /&gt;
  added 26 changesets with 40 changes to 7 files&lt;br /&gt;
  7 files updated, 0 files merged, 0 files removed, 0 files unresolved&lt;br /&gt;
&lt;br /&gt;
After the clone command completes, you should have a directory called ns-3-allinone under your ~/repos directory, the contents of which should look something like the following:&lt;br /&gt;
&lt;br /&gt;
  build.py*  constants.py  dist.py*  download.py*  README  util.py&lt;br /&gt;
&lt;br /&gt;
Notice that you really just downloaded some Python scripts.  The next step will be to use those scripts to download and build the ns-3 distribution of your choice.&lt;br /&gt;
&lt;br /&gt;
If you go to the following link: http://code.nsnam.org/ you will see a number of repositories.  Many are the private repositories of the ns-3 development team.  The repositories of interest to you will be prefixed with '''ns-3'''.  Official releases of ns-3 will be numbered as ns-3.release.hotfix.  For example, a second hotfix to a still hypothetical release nine of ns-3 would be numbered as ns-3.9.2 on this page.&lt;br /&gt;
&lt;br /&gt;
We have had a regression testing framework in place since the first release.  For each release, a set of output files that define ''good behavior'' are saved.  These known good output files are called reference traces and are associated with a given release by name.  For example, in http://code.nsnam.org/ you will find a repository named ns-3.1 which is the first stable release of ns-3.  You will also find a separate repository named ns-3.1-ref-traces that  holds the reference traces for the ns-3.1 release.  It is crucial to keep these&lt;br /&gt;
files consistent if you want to do any regression testing of your repository.  This is a good idea to do at least once to verify everything has built correctly.&lt;br /&gt;
&lt;br /&gt;
The current development snapshot (unreleased) of ns-3 may be found at http://code.nsnam.org/ns-3-dev/ and the associated reference traces may be found http://code.nsnam.org/ns-3-dev-ref-traces/ .  The developers attempt to keep these repository in consistent, working states but they are in a development area with unreleased code present, so you may want to consider staying with an official release if you do not need newly-introduced features.&lt;br /&gt;
&lt;br /&gt;
Since the release numbers are going to be changing, we will stick with the more constant ns-3-dev here, but you can replace the string ''ns-3-dev'' with your choice of release (e.g., ns-3.4 and ns-3.4-ref-traces) in the text below.  You can find the latest version of the code either by inspection of the repository list or by going to the ''Getting Started'' web page and looking for the latest release identifier.&lt;br /&gt;
&lt;br /&gt;
To download the most common options type the following into your shell (remember you can substitute the name of your chosen release number instead of ns-3-dev)&lt;br /&gt;
&lt;br /&gt;
  ./download.py -n ns-3-dev -r ns-3-dev-ref-traces&lt;br /&gt;
&lt;br /&gt;
After download process completes, you should have several new directories under ~/repos/ns-3-allinone:&lt;br /&gt;
&lt;br /&gt;
  build.py*     constants.pyc  download.py*  ns-3-dev-ref-traces/  pybindgen/  util.py&lt;br /&gt;
  constants.py  dist.py*       ns-3-dev/     nsc/                  README      util.pyc&lt;br /&gt;
&lt;br /&gt;
Go ahead and change into ns-3-dev under your ~/repos/ns-3-allinone directory.  You should see something like the following there:&lt;br /&gt;
&lt;br /&gt;
  AUTHORS       examples/  regression/    scratch/  waf*&lt;br /&gt;
  bindings/     LICENSE    regression.py  src/      waf.bat*&lt;br /&gt;
  CHANGES.html  ns3/       RELEASE_NOTES  utils/    wscript&lt;br /&gt;
  doc/          README     samples/       VERSION   wutils.py&lt;br /&gt;
&lt;br /&gt;
You are now ready to build the ns-3 distribution.&lt;br /&gt;
&lt;br /&gt;
=== Downloading ns-3 Using a Tarball ===&lt;br /&gt;
&lt;br /&gt;
The process for downloading ns-3 via tarball is simpler than the Mercurial process since all of the pieces are pre-packaged for you.  You just have to pick a release, download it and decompress it.&lt;br /&gt;
&lt;br /&gt;
As mentioned above, one practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories.  One could also keep a tarballs directory.  If you adopt the tarballs directory approach, you can get a copy of a release by typing the following into your Linux shell (substitute the appropriate version numbers, of course):&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir tarballs&lt;br /&gt;
  cd tarballs&lt;br /&gt;
  wget http://www.nsnam.org/releases/ns-allinone-3.6.tar.bz2&lt;br /&gt;
  tar xjf ns-allinone-3.6.tar.bz2&lt;br /&gt;
&lt;br /&gt;
If you change into the directory '''ns-allinone-3.6''' you should see a number of files:&lt;br /&gt;
&lt;br /&gt;
  build.py*     ns-3.6/             nsc-0.5.1/             README  &lt;br /&gt;
  constants.py  ns-3.6-ref-traces/  pybindgen-0.12.0.703/  util.py&lt;br /&gt;
&lt;br /&gt;
You are now ready to build the ns-3 distribution.&lt;br /&gt;
&lt;br /&gt;
== Building ns-3 with ns-3-allinone ==&lt;br /&gt;
&lt;br /&gt;
The first time you build the ns-3 project you should build using the allinone environment.  This will get the project configured for you&lt;br /&gt;
in the most commonly useful way.&lt;br /&gt;
&lt;br /&gt;
Change into the directory you created in the download section above.  If you downloaded using Mercurial you should have a directory called ns-3-allinone under your ~/repos directory.  If you downloaded using a tarball you should have a directory called something like ns-3-allinone-3.4 under your ~/tarballs directory.  Type the following:&lt;br /&gt;
&lt;br /&gt;
  ./build.py&lt;br /&gt;
&lt;br /&gt;
You will see lots of typical compiler output messages displayed as the build script builds the various pieces you downloaded.  Eventually you should see the following magic words:&lt;br /&gt;
&lt;br /&gt;
  Build finished successfully (00:02:37)&lt;br /&gt;
  Leaving directory `./ns-3-dev'&lt;br /&gt;
&lt;br /&gt;
Once the project has built you typically will not use ns-3-allinone scripts.  You will now interact directly with Waf and we '''do it in the ns-3-dev directory and not in the ns-3-allinone directory'''.&lt;br /&gt;
&lt;br /&gt;
=== Configuration with Waf ===&lt;br /&gt;
&lt;br /&gt;
To see valid configure options, type ./waf --help.  The most important option is -d &amp;lt;debug level&amp;gt;.  Valid debug levels (which are listed in waf --help) are:  &amp;quot;debug&amp;quot; or &amp;quot;optimized&amp;quot;.  It is also possible to change the flags used for compilation with (e.g.): &lt;br /&gt;
&lt;br /&gt;
  CXXFLAGS=&amp;quot;-O3&amp;quot; ./waf configure &lt;br /&gt;
&lt;br /&gt;
or, alternately, the gcc compiler&lt;br /&gt;
&lt;br /&gt;
  CXX=g++-3.4 ./waf configure&lt;br /&gt;
&lt;br /&gt;
'''Note:'''  Unlike some other build tools, to change the build target, the option must be supplied during the configure stage rather than&lt;br /&gt;
the build stage (i.e., &amp;quot;./waf -d optimized&amp;quot; will not work; instead, do&lt;br /&gt;
&lt;br /&gt;
  ./waf -d optimized configure; ./waf &lt;br /&gt;
&lt;br /&gt;
The resulting binaries are placed in build/&amp;lt;debuglevel&amp;gt;/srcpath.  For example, in a debug build you can find the executable for the first.cc example as build/debug/examples/first.  You can debug the executable directly by:&lt;br /&gt;
&lt;br /&gt;
  ./waf --shell&lt;br /&gt;
  cd build/debug/examples&lt;br /&gt;
  gdb first&lt;br /&gt;
&lt;br /&gt;
Of course, you can run gdb in emacs, or use your favorite debugger such as ddd or insight just as easily.  In an optimized build you can find the executable for the first.cc example as build/optimized/examples/first.&lt;br /&gt;
&lt;br /&gt;
In order to forcibly disable python bindings, you can provide the following option:&lt;br /&gt;
&lt;br /&gt;
  ./waf --disable-python configure&lt;br /&gt;
&lt;br /&gt;
In order to tell the build system to use the sudo program to set the suid bit if required, you can provide the following option:&lt;br /&gt;
&lt;br /&gt;
  ./waf --enable-sudo configure&lt;br /&gt;
&lt;br /&gt;
To start over a configuration from scratch, type:&lt;br /&gt;
&lt;br /&gt;
  ./waf distclean&lt;br /&gt;
&lt;br /&gt;
Or if you get stuck and all else fails:&lt;br /&gt;
&lt;br /&gt;
  rm -rf build&lt;br /&gt;
&lt;br /&gt;
followed by changing back into ns-3-allinone and doing:&lt;br /&gt;
&lt;br /&gt;
  ./build.py&lt;br /&gt;
&lt;br /&gt;
will basically reset your build state.&lt;br /&gt;
&lt;br /&gt;
To see all waf options:&lt;br /&gt;
&lt;br /&gt;
  ./waf --help&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
&lt;br /&gt;
ns-3 has unit tests that can be run to verify the installation:&lt;br /&gt;
&lt;br /&gt;
  ./test.py&lt;br /&gt;
&lt;br /&gt;
which should produce output like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PASS: TestSuite histogram&lt;br /&gt;
PASS: TestSuite ns3-wifi-interference&lt;br /&gt;
PASS: TestSuite ns3-tcp-cwnd&lt;br /&gt;
PASS: TestSuite ns3-tcp-interoperability&lt;br /&gt;
PASS: TestSuite sample&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the regression tests mentioned above:&lt;br /&gt;
&lt;br /&gt;
  ./waf --regression&lt;br /&gt;
&lt;br /&gt;
== Using Python ==&lt;br /&gt;
&lt;br /&gt;
See [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings this page].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
See [http://www.nsnam.org/wiki/index.php/Troubleshooting this page].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Craigdo|Craigdo]] 04:40, 5 November 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Emulation_and_Realtime_Scheduler&amp;diff=4298</id>
		<title>Emulation and Realtime Scheduler</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Emulation_and_Realtime_Scheduler&amp;diff=4298"/>
		<updated>2010-05-02T18:15:32Z</updated>

		<summary type="html">&lt;p&gt;Hippo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Emulation and Realtime Scheduler==&lt;br /&gt;
There are two large pieces to the emulation and realtime scheduler project.  Not too surprisingly they are the emulation part and the realtime scheduler part.&lt;br /&gt;
&lt;br /&gt;
===Realtime Scheduler===&lt;br /&gt;
The purpose of the realtime scheduler is to cause the progression of the simulation clock to occur synchronously with respect to some external time base.  Without the presence of an external time base (wall clock), simulation time jumps instantly from one simulated time to the next.  &lt;br /&gt;
&lt;br /&gt;
In order to create a realtime scheduler, to a first approximation you just want to cause simulation time jumps to consume real time.  We propose doing this using a combination of sleep- and busy- waits.  Sleep-waits cause the calling process (thread) to yield the processor for some amount of time.  Even though this specified amount of time can be passed to nanosecond resolution, it is actually converted to an OS-specific granularity.  In Linux, the granularity is called a ''Jiffy''.  Typically this resolution is insufficient for our needs (on the order of a ten milliseconds), so we round down and sleep for some smaller number of Jiffies.  The process is then awakened after the specified number of Jiffies has passed.  At this time, we have some residual time to wait.  This time is generally smaller than the minimum sleep time, so we busy-wait for the remainder of the time.  This means that the thread just sits in a for loop consuming cycles until the desired time arrives.  After the combination of sleep- and busy-waits, the elapsed realtime (wall) clock should agree with the simulation time of the next event and the simulation proceeds.&lt;br /&gt;
&lt;br /&gt;
===Emulation===&lt;br /&gt;
Using the realtime scheduler you can create an N second simulation that will consume N seconds of real time.  This is not a terrifically useful feature by itself.  To make it useful you need to connect the simulation to the real world that is proceeding according to that realtime clock.  In the case of network emulation, this means connecting ns-3 to a at least one real device.&lt;br /&gt;
&lt;br /&gt;
We are providing ns-3 net devices that will look like a usual ns-3 simulated device from the top, but will connect to a real physical network underneath using a packet (raw) socket.  By itself this presents little challenge, but one are of concern is the requirement that a process be running as suid root in order to read and write the required sockets.  The brute force and awkwardness solution is to simply run the simulation as root.  Another option is to use chown and chmod the executable to suid root.  This doesn't require the root login, but you still have a rather large application running as root.  If one is concerned primarily with limiting the amount of code running as root, but not security, we could provide a net-device smaller process that can read and write raw sockets that runs as root, to which the larger simulation connects.  This has the drawback of opening a giant security hole.  If you have any opinions or strong requirements in this respect, please let me know.&lt;br /&gt;
&lt;br /&gt;
===Emulation plus Realtime Scheduler===&lt;br /&gt;
If you consider how an ns-3 simulation might drive a physical net device, it is straightforward.  When you want the physical net device to drive the simulation, you need to be able to allow the net device to schedule events in the simulator.  Since the basic model for sockets is synchronous, we will need to have a thread reading data from a physical net device in real time.  We also want to have at least one thread executing the simulation.  It seems clear that we are going to have a multithreaded solution.  This means we needed to serialize the scheduler.&lt;br /&gt;
&lt;br /&gt;
Also. since there is going to be a need for the net device thread to affect the main scheduler thread we are going to have some form of inter-thread communication.  Typically, the scheduler will be sleeping waiting to synchronize with real time.  IF a net device receives a packet, we need to be able to schedule a new packet reception event and to wake the scheduler and force it to re-evaluate what it needs to do. This will most likely mean the scheduler will have to execute the newly scheduled event (and derived events) and then go back to sleep waiting for the next event time.&lt;br /&gt;
&lt;br /&gt;
A useful OS construct for doing exactly this kind of wait is a timed conditional wait.  ''Posix Threads'' (pthreads) implements this functionality as ''pthread_cond_timedwait''.  We use the ''condition'' as a request for interruption by a realtime device.  If a pthread_cond_timedwait is requested, a sleep-wait is performed for a specified time.  If the condition does not become true during that time (a timeout) then the function call will return and we will have accomplished our needed sleep-wait.  If an external (to the simulation proper) device sets the condition, then the sleep-wait will return early.  The scheduler then wakes up and re-evaluates its next action.&lt;br /&gt;
&lt;br /&gt;
Since multiple threads are wandering around in the scheduler, we need to be careful about protecting shared data structures of course.&lt;br /&gt;
&lt;br /&gt;
We have added the required kernel thread and synchronization classes to ns-3-dev as of July, 2008.&lt;br /&gt;
&lt;br /&gt;
===Higher Order Effects===&lt;br /&gt;
Since we are attempting to run our simulations at realtime, and have already committed to a multithreaded environment, we have plenty of need and new opportunity for performance optimizations.  Others (Mahrenholz et al.) have considered the kinds of optimizations that can be done so I won't duplicate this here, but at this stage of the game we consider them higher order effects that we'll worry about when the time comes.&lt;br /&gt;
&lt;br /&gt;
===Current Status===&lt;br /&gt;
The basic project is complete.  The realtime simulator was part of the ns-3.2 release.  The EmuNetDevice was part of the ns-3.3 release.  The TapBridge was part of the ns-3.4 release.  We did a demo of the EmuNetDevice at Sigcomm in 2008 with this topology:&lt;br /&gt;
&lt;br /&gt;
[[Image:Sigcomm08-demo-figure.png]]&lt;br /&gt;
&lt;br /&gt;
There is a HOWTO describing how to set up the virtual machines [http://www.nsnam.org/wiki/index.php/HOWTO_use_VMware_to_set_up_virtual_networks_%28Windows%29 here].  You can find the sigcomm demo repository [http://code.nsnam.org/ns-3-sigcomm/ here].&lt;br /&gt;
&lt;br /&gt;
There are two use cases we've defined so far:  using ns-3 nodes and stacks but substituting real net devices and real networks in a simulation; and the converse which is using an ns-3 simulated network between real nodes and stacks.  &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Craigdo|Craigdo]] 23:53, 27 March 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Installation&amp;diff=4216</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Installation&amp;diff=4216"/>
		<updated>2010-04-22T18:35:45Z</updated>

		<summary type="html">&lt;p&gt;Hippo: /* Gentoo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is a detailed installation guide for ns-3.  Basic installation instructions can be found at the [http://www.nsnam.org/getting_started.html Getting Started] page or in the [http://www.nsnam.org/docs/release/tutorial/tutorial.html ns-3 tutorial].&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&lt;br /&gt;
ns-3 is primarily developed on GNU/Linux platforms, and the minimal requirements to run basic simulations are a gcc installation of gcc-3.4/g++-3.4 or greater, and python 2.4 or greater.  &lt;br /&gt;
&lt;br /&gt;
ns-3 is supported on the following primary platforms:&lt;br /&gt;
&lt;br /&gt;
# Linux x86 gcc 4.2, 4.1, and, 3.4.6.&lt;br /&gt;
# Linux x86_64 gcc 4.4.0, 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6&lt;br /&gt;
# MacOS X ppc and x86 (gcc 4.0.x and 4.2.x)&lt;br /&gt;
# [http://www.cygwin.com Cygwin] gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized)&lt;br /&gt;
&lt;br /&gt;
By supported, we mean that the project tries to support most or all of the build options on these platforms unless there is a good reason to exclude the option; and at least the debug build will compile.  If you intend to do serious work using ns-3, and are forced by circumstances to use a Windows platform, consider virtualization of a popular Linux platform.  This may be more time-consuming than installing a minimal Cygwin, for example, but you end up with a fully functional Linux system and ns-3 distribution.  Some quick performance comparisons between Cygwin and VirtualBoxed Fedora 11 indicate that examples can actually run faster under VirtualBox.&lt;br /&gt;
&lt;br /&gt;
We provide HOWTO documents describing the process for installing Linux support and getting ns-3 running using two popular virtualization products:  VirtualBox ([[HOWTO use VirtualBox to run simulations on Windows machines]]) and VMware ([[HOWTO use VMware to set up virtual networks (Windows)]]).&lt;br /&gt;
&lt;br /&gt;
ns-3 may also run on currently unsupported platforms.  For example, an alternative Windows platform is MinGW.  There are maintainers who attempt to keep a subset of ns-3 running on MinGW, but it is not &amp;quot;officially&amp;quot; suppported.  This means that bugs filed against MinGW will be addressed as time permits.  Additionally, the Eclipse IDE is used by some developers, but the project does not actively support this environment.&lt;br /&gt;
&lt;br /&gt;
Additional maintainers are invited to make more platforms, compilers and environments supported.&lt;br /&gt;
&lt;br /&gt;
=== ns-3 options ===&lt;br /&gt;
&lt;br /&gt;
There are a few options that are not enabled by default and are not available on all platforms.  At the end of the configuration process (explained below), the status of these options are shown as detected by a '''waf''' script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
---- Summary of optional NS-3 features:&lt;br /&gt;
Threading Primitives          : enabled&lt;br /&gt;
Real Time Simulator           : enabled&lt;br /&gt;
Emulated Net Device           : enabled&lt;br /&gt;
Tap Bridge                    : enabled&lt;br /&gt;
GtkConfigStore                : enabled&lt;br /&gt;
XmlIo                         : not enabled (library 'libxml-2.0 &amp;gt;= 2.7' not found)&lt;br /&gt;
SQlite stats data output      : enabled&lt;br /&gt;
Network Simulation Cradle     : enabled&lt;br /&gt;
Python Bindings               : not enabled (disabled by user request)&lt;br /&gt;
Use sudo to set suid bit      : not enabled (option --enable-sudo not selected)&lt;br /&gt;
Static build                  : not enabled (option --enable-static not selected)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generally if the platform is missing some requirement for an option it is marked as &amp;quot;not enabled.&amp;quot;  Note that &amp;quot;disabled by user request&amp;quot; will be shown when the user explicitly disables a feature (such as &amp;quot;--disable-python&amp;quot;); and if a feature defaults to disabled this will also be noted (e.g., option --enable-sudo not selected).&lt;br /&gt;
&lt;br /&gt;
The table below is meant to help sort out the different features and on which platforms they are supported.  This table reflects the status of the most recent release version (ns-3.6):&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=3&lt;br /&gt;
&lt;br /&gt;
|+ Option status&lt;br /&gt;
! Option !! Linux gcc-4.x,gcc-3.4.x !! OS X !! Cygwin&lt;br /&gt;
|-&lt;br /&gt;
! Optimized build &lt;br /&gt;
|   ||   || X &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Python bindings&lt;br /&gt;
|   ||   || X &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Threading&lt;br /&gt;
|   ||   ||&lt;br /&gt;
|-&lt;br /&gt;
! Real-time simulator&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Emulated Net Device&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Tap Bridge&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Network simulation cradle&lt;br /&gt;
|  note&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Static builds&lt;br /&gt;
|  ||  || &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Key:'' '''(  )'''(empty space) = supported; '''X''' = not supported;  '''?''' = unknown; '''dev''' = support in ns-3-dev (next release)&lt;br /&gt;
&lt;br /&gt;
''Notes:''&lt;br /&gt;
# Works with gcc4&lt;br /&gt;
# Cygwin limitation explained [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings#Cygwin_limitation here]&lt;br /&gt;
# NSC works best with gcc-3.4 or gcc-4.2 or greater series.  Try to avoid gcc-4.0 and gcc-4.1 series; some build problems have been found with these versions of compilers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
The core of ns-3 requires a gcc/g++ installation of 3.4 or greater, and python 2.4 or greater. As mentioned above, different options require additional support.  This is a list of packages (for Debian/Ubuntu systems) that are needed to support different ns-3 options.  Note that other distributions (e.g., Fedora, FreeBSD) may have different package names or capitalization (e.g. ImageMagik).  Installation should be similar for Red Hat/Fedora based systems, with &amp;quot;yum&amp;quot; replacing &amp;quot;apt-get&amp;quot;, but some differences exist, so below is a guide for both Ubuntu (should generally apply to Debian) and Fedora/RedHat-based systems:&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu/Debian ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Ubuntu 9.10 release; other releases or other Debian-based systems may slightly vary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ (release):'''  This is the minimal set of packages needed to run ns-3 from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gcc g++ python&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gcc g++ python python-dev&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install bzr&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libgtk2.0-0 libgtk2.0-dev&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install doxygen graphviz imagemagick&lt;br /&gt;
  sudo apt-get install texlive texlive-pdf texlive-latex-extra texlive-generic-extra texlive-generic-recommended&lt;br /&gt;
&lt;br /&gt;
* The ns-3 manual and tutorial are written in Texinfo (doc/tutorial or doc/manual):&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install texinfo dia texlive texlive-pdf texlive-latex-extra texlive-extra-utils texlive-generic-recommended texi2html&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install flex bison&lt;br /&gt;
&lt;br /&gt;
* Some basic mobility visualization tests require goocanvas:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libgoocanvas-dev&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install g++-3.4 gcc-3.4&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
 sudo apt-get install tcpdump&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sqlite sqlite3 libsqlite3-dev&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install libxml2 libxml2-dev&lt;br /&gt;
&lt;br /&gt;
* Support for Gustavo's ns-3-pyviz visualizer&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas&lt;br /&gt;
&lt;br /&gt;
=== Fedora/RedHat ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Fedora 12/CentOS 5.4 release; other releases may slightly vary.  &lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ (release):'''  This is the minimal set of packages needed to run ns-3 from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc gcc-c++ python&lt;br /&gt;
&lt;br /&gt;
* '''Note:'''  If you are using CentOS 5.4 or RHEL 5, you may want to also get and use the gcc44 packages; see the [[Troubleshooting]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc gcc-c++ python python-devel&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.  You may want to install mercurial from rpmforge repository (instructions [http://www.trinitycore.org/forum/mercurial-centos-t3113.html here]) or EPEL.&lt;br /&gt;
&lt;br /&gt;
  yum install mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar. You may need EPEL repository for this.&lt;br /&gt;
&lt;br /&gt;
  yum install bzr&lt;br /&gt;
&lt;br /&gt;
* An optional but recommended package (for improving some wireless model fidelity) is GNU scientific library:&lt;br /&gt;
&lt;br /&gt;
  yum install gsl gsl-devel&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  yum install gtk2 gtk2-devel&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  yum install gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation:&lt;br /&gt;
&lt;br /&gt;
  yum install doxygen graphviz ImageMagick&lt;br /&gt;
  yum install texinfo texinfo-tex&lt;br /&gt;
&lt;br /&gt;
* The ns-3 manual and tutorial are written in Texinfo (doc/tutorial or doc/manual):&lt;br /&gt;
&lt;br /&gt;
  yum install texinfo dia texinfo-tex texi2html&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  yum install flex bison&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
 &lt;br /&gt;
  yum install compat-gcc-34&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
  yum install tcpdump&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
  yum install sqlite sqlite-devel&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
  yum install libxml2 libxml2-devel&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Gentoo as of 04/22/2010; due to possible changes in USE-flags or package names the list may slightly vary.&lt;br /&gt;
First of all, become root as usual.&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ or Python (release):'''  This is the minimal set of packages needed to run ns-3 or to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;threads -nocxx nptl&amp;quot; emerge -uavN gcc python&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;curl&amp;quot; emerge -uavN bzr&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace gtk+:2&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation; also ns-3 manual and tutorial (written in Texinfo):&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;extra graphics png&amp;quot; emerge -uavN texlive&lt;br /&gt;
  USE=&amp;quot;cairo graphviz latex png svg&amp;quot; emerge -uavN doxygen imagemagick dia&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace flex bison&lt;br /&gt;
&lt;br /&gt;
* Some basic mobility visualization tests require goocanvas:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace goocanvas&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;-nocxx nptl&amp;quot; emerge -uavN gcc:3.4&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
  emerge -av --noreplace tcpdump&lt;br /&gt;
&lt;br /&gt;
or you may prefer&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace wireshark&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;threadsafe&amp;quot; emerge -uavN sqlite:3&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace libxml2&lt;br /&gt;
&lt;br /&gt;
* Support for Gustavo's ns-3-pyviz visualizer (following packages have no stable version as of day of writing, so ~arch for ACCEPT_KEYWORDS)&lt;br /&gt;
&lt;br /&gt;
  ACCEPT_KEYWORDS=&amp;quot;~x86&amp;quot; emerge -av --noreplace pygraphviz kiwi pygoocanvas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* To summarize all of above up (without not yet stable pygraphviz, kiwi, pygoocanvas):&lt;br /&gt;
  USE=&amp;quot;cairo curl extra graphics graphviz latex -nocxx nptl png svg threads threadsafe&amp;quot; emerge -uavN bison bzr dia doxygen flex gcc gcc:3.4 goocanvas gtk+:2 imagemagick libxml2 mercurial python sqlite:3 tcpdump texlive valgrind wireshark&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X (Snow Leopard) ===&lt;br /&gt;
&lt;br /&gt;
Please see [[HOWTO_get_ns-3_running_on_Mac_OS_X_(10.6.2_Intel)]] and follow steps 1 and 2 (prerequisites) and continue reading below if you want to work with a released version, and follow all steps if you want to work with a development version of ns-3.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 code is available in Mercurial repositories on the server http://code.nsnam.org (look for the latest release e.g., &amp;quot;ns-3.4&amp;quot;).  You can download a tarball of the latest release at http://www.nsnam.org/releases or you can work with our repositories using Mercurial.  We recommend using Mercurial unless there's a good reason not to (See the end of this section for instructions on how to get a tarball release).&lt;br /&gt;
&lt;br /&gt;
The simplest way to get started using Mercurial repositories is to use the '''ns-3-allinone''' environment.  This is a set of scripts that manages the downloading and building of various subystems of ns-3 for you.  We recommend that you begin your ns-3 adventures in this environment as it can really simplify your life at this point.&lt;br /&gt;
&lt;br /&gt;
=== Downloading ns-3 Using Mercurial ===&lt;br /&gt;
One practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories.  If you adopt that approach, you can get a copy of ns-3-allinone by typing the following into your Linux shell (assuming you have installed Mercurial):&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir repos&lt;br /&gt;
  cd repos&lt;br /&gt;
  hg clone http://code.nsnam.org/ns-3-allinone&lt;br /&gt;
&lt;br /&gt;
As the hg (Mercurial) command executes, you should see something like the following displayed,&lt;br /&gt;
&lt;br /&gt;
  destination directory: ns-3-allinone&lt;br /&gt;
  requesting all changes&lt;br /&gt;
  adding changesets&lt;br /&gt;
  adding manifests&lt;br /&gt;
  adding file changes&lt;br /&gt;
  added 26 changesets with 40 changes to 7 files&lt;br /&gt;
  7 files updated, 0 files merged, 0 files removed, 0 files unresolved&lt;br /&gt;
&lt;br /&gt;
After the clone command completes, you should have a directory called ns-3-allinone under your ~/repos directory, the contents of which should look something like the following:&lt;br /&gt;
&lt;br /&gt;
  build.py*  constants.py  dist.py*  download.py*  README  util.py&lt;br /&gt;
&lt;br /&gt;
Notice that you really just downloaded some Python scripts.  The next step will be to use those scripts to download and build the ns-3 distribution of your choice.&lt;br /&gt;
&lt;br /&gt;
If you go to the following link: http://code.nsnam.org/ you will see a number of repositories.  Many are the private repositories of the ns-3 development team.  The repositories of interest to you will be prefixed with '''ns-3'''.  Official releases of ns-3 will be numbered as ns-3.release.hotfix.  For example, a second hotfix to a still hypothetical release nine of ns-3 would be numbered as ns-3.9.2 on this page.&lt;br /&gt;
&lt;br /&gt;
We have had a regression testing framework in place since the first release.  For each release, a set of output files that define ''good behavior'' are saved.  These known good output files are called reference traces and are associated with a given release by name.  For example, in http://code.nsnam.org/ you will find a repository named ns-3.1 which is the first stable release of ns-3.  You will also find a separate repository named ns-3.1-ref-traces that  holds the reference traces for the ns-3.1 release.  It is crucial to keep these&lt;br /&gt;
files consistent if you want to do any regression testing of your repository.  This is a good idea to do at least once to verify everything has built correctly.&lt;br /&gt;
&lt;br /&gt;
The current development snapshot (unreleased) of ns-3 may be found at http://code.nsnam.org/ns-3-dev/ and the associated reference traces may be found http://code.nsnam.org/ns-3-dev-ref-traces/ .  The developers attempt to keep these repository in consistent, working states but they are in a development area with unreleased code present, so you may want to consider staying with an official release if you do not need newly-introduced features.&lt;br /&gt;
&lt;br /&gt;
Since the release numbers are going to be changing, we will stick with the more constant ns-3-dev here, but you can replace the string ''ns-3-dev'' with your choice of release (e.g., ns-3.4 and ns-3.4-ref-traces) in the text below.  You can find the latest version of the code either by inspection of the repository list or by going to the ''Getting Started'' web page and looking for the latest release identifier.&lt;br /&gt;
&lt;br /&gt;
To download the most common options type the following into your shell (remember you can substitute the name of your chosen release number instead of ns-3-dev)&lt;br /&gt;
&lt;br /&gt;
  ./download.py -n ns-3-dev -r ns-3-dev-ref-traces&lt;br /&gt;
&lt;br /&gt;
After download process completes, you should have several new directories under ~/repos/ns-3-allinone:&lt;br /&gt;
&lt;br /&gt;
  build.py*     constants.pyc  download.py*  ns-3-dev-ref-traces/  pybindgen/  util.py&lt;br /&gt;
  constants.py  dist.py*       ns-3-dev/     nsc/                  README      util.pyc&lt;br /&gt;
&lt;br /&gt;
Go ahead and change into ns-3-dev under your ~/repos/ns-3-allinone directory.  You should see something like the following there:&lt;br /&gt;
&lt;br /&gt;
  AUTHORS       examples/  regression/    scratch/  waf*&lt;br /&gt;
  bindings/     LICENSE    regression.py  src/      waf.bat*&lt;br /&gt;
  CHANGES.html  ns3/       RELEASE_NOTES  utils/    wscript&lt;br /&gt;
  doc/          README     samples/       VERSION   wutils.py&lt;br /&gt;
&lt;br /&gt;
You are now ready to build the ns-3 distribution.&lt;br /&gt;
&lt;br /&gt;
=== Downloading ns-3 Using a Tarball ===&lt;br /&gt;
&lt;br /&gt;
The process for downloading ns-3 via tarball is simpler than the Mercurial process since all of the pieces are pre-packaged for you.  You just have to pick a release, download it and decompress it.&lt;br /&gt;
&lt;br /&gt;
As mentioned above, one practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories.  One could also keep a tarballs directory.  If you adopt the tarballs directory approach, you can get a copy of a release by typing the following into your Linux shell (substitute the appropriate version numbers, of course):&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir tarballs&lt;br /&gt;
  cd tarballs&lt;br /&gt;
  wget http://www.nsnam.org/releases/ns-allinone-3.6.tar.bz2&lt;br /&gt;
  tar xjf ns-allinone-3.6.tar.bz2&lt;br /&gt;
&lt;br /&gt;
If you change into the directory '''ns-allinone-3.6''' you should see a number of files:&lt;br /&gt;
&lt;br /&gt;
  build.py*     ns-3.6/             nsc-0.5.1/             README  &lt;br /&gt;
  constants.py  ns-3.6-ref-traces/  pybindgen-0.12.0.703/  util.py&lt;br /&gt;
&lt;br /&gt;
You are now ready to build the ns-3 distribution.&lt;br /&gt;
&lt;br /&gt;
== Building ns-3 with ns-3-allinone ==&lt;br /&gt;
&lt;br /&gt;
The first time you build the ns-3 project you should build using the allinone environment.  This will get the project configured for you&lt;br /&gt;
in the most commonly useful way.&lt;br /&gt;
&lt;br /&gt;
Change into the directory you created in the download section above.  If you downloaded using Mercurial you should have a directory called ns-3-allinone under your ~/repos directory.  If you downloaded using a tarball you should have a directory called something like ns-3-allinone-3.4 under your ~/tarballs directory.  Type the following:&lt;br /&gt;
&lt;br /&gt;
  ./build.py&lt;br /&gt;
&lt;br /&gt;
You will see lots of typical compiler output messages displayed as the build script builds the various pieces you downloaded.  Eventually you should see the following magic words:&lt;br /&gt;
&lt;br /&gt;
  Build finished successfully (00:02:37)&lt;br /&gt;
  Leaving directory `./ns-3-dev'&lt;br /&gt;
&lt;br /&gt;
Once the project has built you typically will not use ns-3-allinone scripts.  You will now interact directly with Waf and we '''do it in the ns-3-dev directory and not in the ns-3-allinone directory'''.&lt;br /&gt;
&lt;br /&gt;
=== Configuration with Waf ===&lt;br /&gt;
&lt;br /&gt;
To see valid configure options, type ./waf --help.  The most important option is -d &amp;lt;debug level&amp;gt;.  Valid debug levels (which are listed in waf --help) are:  &amp;quot;debug&amp;quot; or &amp;quot;optimized&amp;quot;.  It is also possible to change the flags used for compilation with (e.g.): &lt;br /&gt;
&lt;br /&gt;
  CXXFLAGS=&amp;quot;-O3&amp;quot; ./waf configure &lt;br /&gt;
&lt;br /&gt;
or, alternately, the gcc compiler&lt;br /&gt;
&lt;br /&gt;
  CXX=g++-3.4 ./waf configure&lt;br /&gt;
&lt;br /&gt;
'''Note:'''  Unlike some other build tools, to change the build target, the option must be supplied during the configure stage rather than&lt;br /&gt;
the build stage (i.e., &amp;quot;./waf -d optimized&amp;quot; will not work; instead, do&lt;br /&gt;
&lt;br /&gt;
  ./waf -d optimized configure; ./waf &lt;br /&gt;
&lt;br /&gt;
The resulting binaries are placed in build/&amp;lt;debuglevel&amp;gt;/srcpath.  For example, in a debug build you can find the executable for the first.cc example as build/debug/examples/first.  You can debug the executable directly by:&lt;br /&gt;
&lt;br /&gt;
  ./waf --shell&lt;br /&gt;
  cd build/debug/examples&lt;br /&gt;
  gdb first&lt;br /&gt;
&lt;br /&gt;
Of course, you can run gdb in emacs, or use your favorite debugger such as ddd or insight just as easily.  In an optimized build you can find the executable for the first.cc example as build/optimized/examples/first.&lt;br /&gt;
&lt;br /&gt;
In order to forcibly disable python bindings, you can provide the following option:&lt;br /&gt;
&lt;br /&gt;
  ./waf --disable-python configure&lt;br /&gt;
&lt;br /&gt;
In order to tell the build system to use the sudo program to set the suid bit if required, you can provide the following option:&lt;br /&gt;
&lt;br /&gt;
  ./waf --enable-sudo configure&lt;br /&gt;
&lt;br /&gt;
To start over a configuration from scratch, type:&lt;br /&gt;
&lt;br /&gt;
  ./waf distclean&lt;br /&gt;
&lt;br /&gt;
Or if you get stuck and all else fails:&lt;br /&gt;
&lt;br /&gt;
  rm -rf build&lt;br /&gt;
&lt;br /&gt;
followed by changing back into ns-3-allinone and doing:&lt;br /&gt;
&lt;br /&gt;
  ./build.py&lt;br /&gt;
&lt;br /&gt;
will basically reset your build state.&lt;br /&gt;
&lt;br /&gt;
To see all waf options:&lt;br /&gt;
&lt;br /&gt;
  ./waf --help&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
&lt;br /&gt;
ns-3 has unit tests that can be run to verify the installation:&lt;br /&gt;
&lt;br /&gt;
  ./test.py&lt;br /&gt;
&lt;br /&gt;
which should produce output like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PASS: TestSuite histogram&lt;br /&gt;
PASS: TestSuite ns3-wifi-interference&lt;br /&gt;
PASS: TestSuite ns3-tcp-cwnd&lt;br /&gt;
PASS: TestSuite ns3-tcp-interoperability&lt;br /&gt;
PASS: TestSuite sample&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the regression tests mentioned above:&lt;br /&gt;
&lt;br /&gt;
  ./waf --regression&lt;br /&gt;
&lt;br /&gt;
== Using Python ==&lt;br /&gt;
&lt;br /&gt;
See [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings this page].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
See [http://www.nsnam.org/wiki/index.php/Troubleshooting this page].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Craigdo|Craigdo]] 04:40, 5 November 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Installation&amp;diff=4215</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Installation&amp;diff=4215"/>
		<updated>2010-04-22T18:34:27Z</updated>

		<summary type="html">&lt;p&gt;Hippo: /* Gentoo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is a detailed installation guide for ns-3.  Basic installation instructions can be found at the [http://www.nsnam.org/getting_started.html Getting Started] page or in the [http://www.nsnam.org/docs/release/tutorial/tutorial.html ns-3 tutorial].&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&lt;br /&gt;
ns-3 is primarily developed on GNU/Linux platforms, and the minimal requirements to run basic simulations are a gcc installation of gcc-3.4/g++-3.4 or greater, and python 2.4 or greater.  &lt;br /&gt;
&lt;br /&gt;
ns-3 is supported on the following primary platforms:&lt;br /&gt;
&lt;br /&gt;
# Linux x86 gcc 4.2, 4.1, and, 3.4.6.&lt;br /&gt;
# Linux x86_64 gcc 4.4.0, 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6&lt;br /&gt;
# MacOS X ppc and x86 (gcc 4.0.x and 4.2.x)&lt;br /&gt;
# [http://www.cygwin.com Cygwin] gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized)&lt;br /&gt;
&lt;br /&gt;
By supported, we mean that the project tries to support most or all of the build options on these platforms unless there is a good reason to exclude the option; and at least the debug build will compile.  If you intend to do serious work using ns-3, and are forced by circumstances to use a Windows platform, consider virtualization of a popular Linux platform.  This may be more time-consuming than installing a minimal Cygwin, for example, but you end up with a fully functional Linux system and ns-3 distribution.  Some quick performance comparisons between Cygwin and VirtualBoxed Fedora 11 indicate that examples can actually run faster under VirtualBox.&lt;br /&gt;
&lt;br /&gt;
We provide HOWTO documents describing the process for installing Linux support and getting ns-3 running using two popular virtualization products:  VirtualBox ([[HOWTO use VirtualBox to run simulations on Windows machines]]) and VMware ([[HOWTO use VMware to set up virtual networks (Windows)]]).&lt;br /&gt;
&lt;br /&gt;
ns-3 may also run on currently unsupported platforms.  For example, an alternative Windows platform is MinGW.  There are maintainers who attempt to keep a subset of ns-3 running on MinGW, but it is not &amp;quot;officially&amp;quot; suppported.  This means that bugs filed against MinGW will be addressed as time permits.  Additionally, the Eclipse IDE is used by some developers, but the project does not actively support this environment.&lt;br /&gt;
&lt;br /&gt;
Additional maintainers are invited to make more platforms, compilers and environments supported.&lt;br /&gt;
&lt;br /&gt;
=== ns-3 options ===&lt;br /&gt;
&lt;br /&gt;
There are a few options that are not enabled by default and are not available on all platforms.  At the end of the configuration process (explained below), the status of these options are shown as detected by a '''waf''' script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
---- Summary of optional NS-3 features:&lt;br /&gt;
Threading Primitives          : enabled&lt;br /&gt;
Real Time Simulator           : enabled&lt;br /&gt;
Emulated Net Device           : enabled&lt;br /&gt;
Tap Bridge                    : enabled&lt;br /&gt;
GtkConfigStore                : enabled&lt;br /&gt;
XmlIo                         : not enabled (library 'libxml-2.0 &amp;gt;= 2.7' not found)&lt;br /&gt;
SQlite stats data output      : enabled&lt;br /&gt;
Network Simulation Cradle     : enabled&lt;br /&gt;
Python Bindings               : not enabled (disabled by user request)&lt;br /&gt;
Use sudo to set suid bit      : not enabled (option --enable-sudo not selected)&lt;br /&gt;
Static build                  : not enabled (option --enable-static not selected)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generally if the platform is missing some requirement for an option it is marked as &amp;quot;not enabled.&amp;quot;  Note that &amp;quot;disabled by user request&amp;quot; will be shown when the user explicitly disables a feature (such as &amp;quot;--disable-python&amp;quot;); and if a feature defaults to disabled this will also be noted (e.g., option --enable-sudo not selected).&lt;br /&gt;
&lt;br /&gt;
The table below is meant to help sort out the different features and on which platforms they are supported.  This table reflects the status of the most recent release version (ns-3.6):&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=3&lt;br /&gt;
&lt;br /&gt;
|+ Option status&lt;br /&gt;
! Option !! Linux gcc-4.x,gcc-3.4.x !! OS X !! Cygwin&lt;br /&gt;
|-&lt;br /&gt;
! Optimized build &lt;br /&gt;
|   ||   || X &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Python bindings&lt;br /&gt;
|   ||   || X &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Threading&lt;br /&gt;
|   ||   ||&lt;br /&gt;
|-&lt;br /&gt;
! Real-time simulator&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Emulated Net Device&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Tap Bridge&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Network simulation cradle&lt;br /&gt;
|  note&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Static builds&lt;br /&gt;
|  ||  || &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Key:'' '''(  )'''(empty space) = supported; '''X''' = not supported;  '''?''' = unknown; '''dev''' = support in ns-3-dev (next release)&lt;br /&gt;
&lt;br /&gt;
''Notes:''&lt;br /&gt;
# Works with gcc4&lt;br /&gt;
# Cygwin limitation explained [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings#Cygwin_limitation here]&lt;br /&gt;
# NSC works best with gcc-3.4 or gcc-4.2 or greater series.  Try to avoid gcc-4.0 and gcc-4.1 series; some build problems have been found with these versions of compilers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
The core of ns-3 requires a gcc/g++ installation of 3.4 or greater, and python 2.4 or greater. As mentioned above, different options require additional support.  This is a list of packages (for Debian/Ubuntu systems) that are needed to support different ns-3 options.  Note that other distributions (e.g., Fedora, FreeBSD) may have different package names or capitalization (e.g. ImageMagik).  Installation should be similar for Red Hat/Fedora based systems, with &amp;quot;yum&amp;quot; replacing &amp;quot;apt-get&amp;quot;, but some differences exist, so below is a guide for both Ubuntu (should generally apply to Debian) and Fedora/RedHat-based systems:&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu/Debian ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Ubuntu 9.10 release; other releases or other Debian-based systems may slightly vary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ (release):'''  This is the minimal set of packages needed to run ns-3 from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gcc g++ python&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gcc g++ python python-dev&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install bzr&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libgtk2.0-0 libgtk2.0-dev&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install doxygen graphviz imagemagick&lt;br /&gt;
  sudo apt-get install texlive texlive-pdf texlive-latex-extra texlive-generic-extra texlive-generic-recommended&lt;br /&gt;
&lt;br /&gt;
* The ns-3 manual and tutorial are written in Texinfo (doc/tutorial or doc/manual):&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install texinfo dia texlive texlive-pdf texlive-latex-extra texlive-extra-utils texlive-generic-recommended texi2html&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install flex bison&lt;br /&gt;
&lt;br /&gt;
* Some basic mobility visualization tests require goocanvas:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libgoocanvas-dev&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install g++-3.4 gcc-3.4&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
 sudo apt-get install tcpdump&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sqlite sqlite3 libsqlite3-dev&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install libxml2 libxml2-dev&lt;br /&gt;
&lt;br /&gt;
* Support for Gustavo's ns-3-pyviz visualizer&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas&lt;br /&gt;
&lt;br /&gt;
=== Fedora/RedHat ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Fedora 12/CentOS 5.4 release; other releases may slightly vary.  &lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ (release):'''  This is the minimal set of packages needed to run ns-3 from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc gcc-c++ python&lt;br /&gt;
&lt;br /&gt;
* '''Note:'''  If you are using CentOS 5.4 or RHEL 5, you may want to also get and use the gcc44 packages; see the [[Troubleshooting]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc gcc-c++ python python-devel&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.  You may want to install mercurial from rpmforge repository (instructions [http://www.trinitycore.org/forum/mercurial-centos-t3113.html here]) or EPEL.&lt;br /&gt;
&lt;br /&gt;
  yum install mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar. You may need EPEL repository for this.&lt;br /&gt;
&lt;br /&gt;
  yum install bzr&lt;br /&gt;
&lt;br /&gt;
* An optional but recommended package (for improving some wireless model fidelity) is GNU scientific library:&lt;br /&gt;
&lt;br /&gt;
  yum install gsl gsl-devel&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  yum install gtk2 gtk2-devel&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  yum install gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation:&lt;br /&gt;
&lt;br /&gt;
  yum install doxygen graphviz ImageMagick&lt;br /&gt;
  yum install texinfo texinfo-tex&lt;br /&gt;
&lt;br /&gt;
* The ns-3 manual and tutorial are written in Texinfo (doc/tutorial or doc/manual):&lt;br /&gt;
&lt;br /&gt;
  yum install texinfo dia texinfo-tex texi2html&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  yum install flex bison&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
 &lt;br /&gt;
  yum install compat-gcc-34&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
  yum install tcpdump&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
  yum install sqlite sqlite-devel&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
  yum install libxml2 libxml2-devel&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Gentoo as of 04/22/2010; due to possible changes in USE-flags or package names the list may slightly vary.&lt;br /&gt;
First of all, become root as usual.&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ or Python (release):'''  This is the minimal set of packages needed to run ns-3 or to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;threads -nocxx nptl&amp;quot; emerge -uavN gcc python&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;curl&amp;quot; emerge -uavN bzr&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace gtk+:2&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation; also ns-3 manual and tutorial (written in Texinfo):&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;extra graphics png&amp;quot; emerge -uavN texlive&lt;br /&gt;
  USE=&amp;quot;cairo graphviz latex png svg&amp;quot; emerge -uavN doxygen imagemagick dia&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace flex bison&lt;br /&gt;
&lt;br /&gt;
* Some basic mobility visualization tests require goocanvas:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace goocanvas&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;-nocxx nptl&amp;quot; emerge -uavN gcc:3.4&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
 emerge -av --noreplace tcpdump&lt;br /&gt;
&lt;br /&gt;
or you may prefer&lt;br /&gt;
&lt;br /&gt;
 emerge -av --noreplace wireshark&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
 USE=&amp;quot;threadsafe&amp;quot; emerge -uavN sqlite:3&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace libxml2&lt;br /&gt;
&lt;br /&gt;
* Support for Gustavo's ns-3-pyviz visualizer (following packages have no stable version as of day of writing, so ~arch for ACCEPT_KEYWORDS)&lt;br /&gt;
&lt;br /&gt;
  ACCEPT_KEYWORDS=&amp;quot;~x86&amp;quot; emerge -av --noreplace pygraphviz kiwi pygoocanvas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* To summarize all of above up (with not yet stable pygraphviz, kiwi, pygoocanvas):&lt;br /&gt;
 USE=&amp;quot;cairo curl extra graphics graphviz latex -nocxx nptl png svg threads threadsafe&amp;quot; emerge -uavN bison bzr dia doxygen flex gcc gcc:3.4 goocanvas gtk+:2 imagemagick libxml2 mercurial python sqlite:3 tcpdump texlive valgrind wireshark&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X (Snow Leopard) ===&lt;br /&gt;
&lt;br /&gt;
Please see [[HOWTO_get_ns-3_running_on_Mac_OS_X_(10.6.2_Intel)]] and follow steps 1 and 2 (prerequisites) and continue reading below if you want to work with a released version, and follow all steps if you want to work with a development version of ns-3.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 code is available in Mercurial repositories on the server http://code.nsnam.org (look for the latest release e.g., &amp;quot;ns-3.4&amp;quot;).  You can download a tarball of the latest release at http://www.nsnam.org/releases or you can work with our repositories using Mercurial.  We recommend using Mercurial unless there's a good reason not to (See the end of this section for instructions on how to get a tarball release).&lt;br /&gt;
&lt;br /&gt;
The simplest way to get started using Mercurial repositories is to use the '''ns-3-allinone''' environment.  This is a set of scripts that manages the downloading and building of various subystems of ns-3 for you.  We recommend that you begin your ns-3 adventures in this environment as it can really simplify your life at this point.&lt;br /&gt;
&lt;br /&gt;
=== Downloading ns-3 Using Mercurial ===&lt;br /&gt;
One practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories.  If you adopt that approach, you can get a copy of ns-3-allinone by typing the following into your Linux shell (assuming you have installed Mercurial):&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir repos&lt;br /&gt;
  cd repos&lt;br /&gt;
  hg clone http://code.nsnam.org/ns-3-allinone&lt;br /&gt;
&lt;br /&gt;
As the hg (Mercurial) command executes, you should see something like the following displayed,&lt;br /&gt;
&lt;br /&gt;
  destination directory: ns-3-allinone&lt;br /&gt;
  requesting all changes&lt;br /&gt;
  adding changesets&lt;br /&gt;
  adding manifests&lt;br /&gt;
  adding file changes&lt;br /&gt;
  added 26 changesets with 40 changes to 7 files&lt;br /&gt;
  7 files updated, 0 files merged, 0 files removed, 0 files unresolved&lt;br /&gt;
&lt;br /&gt;
After the clone command completes, you should have a directory called ns-3-allinone under your ~/repos directory, the contents of which should look something like the following:&lt;br /&gt;
&lt;br /&gt;
  build.py*  constants.py  dist.py*  download.py*  README  util.py&lt;br /&gt;
&lt;br /&gt;
Notice that you really just downloaded some Python scripts.  The next step will be to use those scripts to download and build the ns-3 distribution of your choice.&lt;br /&gt;
&lt;br /&gt;
If you go to the following link: http://code.nsnam.org/ you will see a number of repositories.  Many are the private repositories of the ns-3 development team.  The repositories of interest to you will be prefixed with '''ns-3'''.  Official releases of ns-3 will be numbered as ns-3.release.hotfix.  For example, a second hotfix to a still hypothetical release nine of ns-3 would be numbered as ns-3.9.2 on this page.&lt;br /&gt;
&lt;br /&gt;
We have had a regression testing framework in place since the first release.  For each release, a set of output files that define ''good behavior'' are saved.  These known good output files are called reference traces and are associated with a given release by name.  For example, in http://code.nsnam.org/ you will find a repository named ns-3.1 which is the first stable release of ns-3.  You will also find a separate repository named ns-3.1-ref-traces that  holds the reference traces for the ns-3.1 release.  It is crucial to keep these&lt;br /&gt;
files consistent if you want to do any regression testing of your repository.  This is a good idea to do at least once to verify everything has built correctly.&lt;br /&gt;
&lt;br /&gt;
The current development snapshot (unreleased) of ns-3 may be found at http://code.nsnam.org/ns-3-dev/ and the associated reference traces may be found http://code.nsnam.org/ns-3-dev-ref-traces/ .  The developers attempt to keep these repository in consistent, working states but they are in a development area with unreleased code present, so you may want to consider staying with an official release if you do not need newly-introduced features.&lt;br /&gt;
&lt;br /&gt;
Since the release numbers are going to be changing, we will stick with the more constant ns-3-dev here, but you can replace the string ''ns-3-dev'' with your choice of release (e.g., ns-3.4 and ns-3.4-ref-traces) in the text below.  You can find the latest version of the code either by inspection of the repository list or by going to the ''Getting Started'' web page and looking for the latest release identifier.&lt;br /&gt;
&lt;br /&gt;
To download the most common options type the following into your shell (remember you can substitute the name of your chosen release number instead of ns-3-dev)&lt;br /&gt;
&lt;br /&gt;
  ./download.py -n ns-3-dev -r ns-3-dev-ref-traces&lt;br /&gt;
&lt;br /&gt;
After download process completes, you should have several new directories under ~/repos/ns-3-allinone:&lt;br /&gt;
&lt;br /&gt;
  build.py*     constants.pyc  download.py*  ns-3-dev-ref-traces/  pybindgen/  util.py&lt;br /&gt;
  constants.py  dist.py*       ns-3-dev/     nsc/                  README      util.pyc&lt;br /&gt;
&lt;br /&gt;
Go ahead and change into ns-3-dev under your ~/repos/ns-3-allinone directory.  You should see something like the following there:&lt;br /&gt;
&lt;br /&gt;
  AUTHORS       examples/  regression/    scratch/  waf*&lt;br /&gt;
  bindings/     LICENSE    regression.py  src/      waf.bat*&lt;br /&gt;
  CHANGES.html  ns3/       RELEASE_NOTES  utils/    wscript&lt;br /&gt;
  doc/          README     samples/       VERSION   wutils.py&lt;br /&gt;
&lt;br /&gt;
You are now ready to build the ns-3 distribution.&lt;br /&gt;
&lt;br /&gt;
=== Downloading ns-3 Using a Tarball ===&lt;br /&gt;
&lt;br /&gt;
The process for downloading ns-3 via tarball is simpler than the Mercurial process since all of the pieces are pre-packaged for you.  You just have to pick a release, download it and decompress it.&lt;br /&gt;
&lt;br /&gt;
As mentioned above, one practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories.  One could also keep a tarballs directory.  If you adopt the tarballs directory approach, you can get a copy of a release by typing the following into your Linux shell (substitute the appropriate version numbers, of course):&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir tarballs&lt;br /&gt;
  cd tarballs&lt;br /&gt;
  wget http://www.nsnam.org/releases/ns-allinone-3.6.tar.bz2&lt;br /&gt;
  tar xjf ns-allinone-3.6.tar.bz2&lt;br /&gt;
&lt;br /&gt;
If you change into the directory '''ns-allinone-3.6''' you should see a number of files:&lt;br /&gt;
&lt;br /&gt;
  build.py*     ns-3.6/             nsc-0.5.1/             README  &lt;br /&gt;
  constants.py  ns-3.6-ref-traces/  pybindgen-0.12.0.703/  util.py&lt;br /&gt;
&lt;br /&gt;
You are now ready to build the ns-3 distribution.&lt;br /&gt;
&lt;br /&gt;
== Building ns-3 with ns-3-allinone ==&lt;br /&gt;
&lt;br /&gt;
The first time you build the ns-3 project you should build using the allinone environment.  This will get the project configured for you&lt;br /&gt;
in the most commonly useful way.&lt;br /&gt;
&lt;br /&gt;
Change into the directory you created in the download section above.  If you downloaded using Mercurial you should have a directory called ns-3-allinone under your ~/repos directory.  If you downloaded using a tarball you should have a directory called something like ns-3-allinone-3.4 under your ~/tarballs directory.  Type the following:&lt;br /&gt;
&lt;br /&gt;
  ./build.py&lt;br /&gt;
&lt;br /&gt;
You will see lots of typical compiler output messages displayed as the build script builds the various pieces you downloaded.  Eventually you should see the following magic words:&lt;br /&gt;
&lt;br /&gt;
  Build finished successfully (00:02:37)&lt;br /&gt;
  Leaving directory `./ns-3-dev'&lt;br /&gt;
&lt;br /&gt;
Once the project has built you typically will not use ns-3-allinone scripts.  You will now interact directly with Waf and we '''do it in the ns-3-dev directory and not in the ns-3-allinone directory'''.&lt;br /&gt;
&lt;br /&gt;
=== Configuration with Waf ===&lt;br /&gt;
&lt;br /&gt;
To see valid configure options, type ./waf --help.  The most important option is -d &amp;lt;debug level&amp;gt;.  Valid debug levels (which are listed in waf --help) are:  &amp;quot;debug&amp;quot; or &amp;quot;optimized&amp;quot;.  It is also possible to change the flags used for compilation with (e.g.): &lt;br /&gt;
&lt;br /&gt;
  CXXFLAGS=&amp;quot;-O3&amp;quot; ./waf configure &lt;br /&gt;
&lt;br /&gt;
or, alternately, the gcc compiler&lt;br /&gt;
&lt;br /&gt;
  CXX=g++-3.4 ./waf configure&lt;br /&gt;
&lt;br /&gt;
'''Note:'''  Unlike some other build tools, to change the build target, the option must be supplied during the configure stage rather than&lt;br /&gt;
the build stage (i.e., &amp;quot;./waf -d optimized&amp;quot; will not work; instead, do&lt;br /&gt;
&lt;br /&gt;
  ./waf -d optimized configure; ./waf &lt;br /&gt;
&lt;br /&gt;
The resulting binaries are placed in build/&amp;lt;debuglevel&amp;gt;/srcpath.  For example, in a debug build you can find the executable for the first.cc example as build/debug/examples/first.  You can debug the executable directly by:&lt;br /&gt;
&lt;br /&gt;
  ./waf --shell&lt;br /&gt;
  cd build/debug/examples&lt;br /&gt;
  gdb first&lt;br /&gt;
&lt;br /&gt;
Of course, you can run gdb in emacs, or use your favorite debugger such as ddd or insight just as easily.  In an optimized build you can find the executable for the first.cc example as build/optimized/examples/first.&lt;br /&gt;
&lt;br /&gt;
In order to forcibly disable python bindings, you can provide the following option:&lt;br /&gt;
&lt;br /&gt;
  ./waf --disable-python configure&lt;br /&gt;
&lt;br /&gt;
In order to tell the build system to use the sudo program to set the suid bit if required, you can provide the following option:&lt;br /&gt;
&lt;br /&gt;
  ./waf --enable-sudo configure&lt;br /&gt;
&lt;br /&gt;
To start over a configuration from scratch, type:&lt;br /&gt;
&lt;br /&gt;
  ./waf distclean&lt;br /&gt;
&lt;br /&gt;
Or if you get stuck and all else fails:&lt;br /&gt;
&lt;br /&gt;
  rm -rf build&lt;br /&gt;
&lt;br /&gt;
followed by changing back into ns-3-allinone and doing:&lt;br /&gt;
&lt;br /&gt;
  ./build.py&lt;br /&gt;
&lt;br /&gt;
will basically reset your build state.&lt;br /&gt;
&lt;br /&gt;
To see all waf options:&lt;br /&gt;
&lt;br /&gt;
  ./waf --help&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
&lt;br /&gt;
ns-3 has unit tests that can be run to verify the installation:&lt;br /&gt;
&lt;br /&gt;
  ./test.py&lt;br /&gt;
&lt;br /&gt;
which should produce output like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PASS: TestSuite histogram&lt;br /&gt;
PASS: TestSuite ns3-wifi-interference&lt;br /&gt;
PASS: TestSuite ns3-tcp-cwnd&lt;br /&gt;
PASS: TestSuite ns3-tcp-interoperability&lt;br /&gt;
PASS: TestSuite sample&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the regression tests mentioned above:&lt;br /&gt;
&lt;br /&gt;
  ./waf --regression&lt;br /&gt;
&lt;br /&gt;
== Using Python ==&lt;br /&gt;
&lt;br /&gt;
See [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings this page].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
See [http://www.nsnam.org/wiki/index.php/Troubleshooting this page].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Craigdo|Craigdo]] 04:40, 5 November 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Installation&amp;diff=4214</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Installation&amp;diff=4214"/>
		<updated>2010-04-22T18:24:28Z</updated>

		<summary type="html">&lt;p&gt;Hippo: /* Gentoo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is a detailed installation guide for ns-3.  Basic installation instructions can be found at the [http://www.nsnam.org/getting_started.html Getting Started] page or in the [http://www.nsnam.org/docs/release/tutorial/tutorial.html ns-3 tutorial].&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&lt;br /&gt;
ns-3 is primarily developed on GNU/Linux platforms, and the minimal requirements to run basic simulations are a gcc installation of gcc-3.4/g++-3.4 or greater, and python 2.4 or greater.  &lt;br /&gt;
&lt;br /&gt;
ns-3 is supported on the following primary platforms:&lt;br /&gt;
&lt;br /&gt;
# Linux x86 gcc 4.2, 4.1, and, 3.4.6.&lt;br /&gt;
# Linux x86_64 gcc 4.4.0, 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6&lt;br /&gt;
# MacOS X ppc and x86 (gcc 4.0.x and 4.2.x)&lt;br /&gt;
# [http://www.cygwin.com Cygwin] gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized)&lt;br /&gt;
&lt;br /&gt;
By supported, we mean that the project tries to support most or all of the build options on these platforms unless there is a good reason to exclude the option; and at least the debug build will compile.  If you intend to do serious work using ns-3, and are forced by circumstances to use a Windows platform, consider virtualization of a popular Linux platform.  This may be more time-consuming than installing a minimal Cygwin, for example, but you end up with a fully functional Linux system and ns-3 distribution.  Some quick performance comparisons between Cygwin and VirtualBoxed Fedora 11 indicate that examples can actually run faster under VirtualBox.&lt;br /&gt;
&lt;br /&gt;
We provide HOWTO documents describing the process for installing Linux support and getting ns-3 running using two popular virtualization products:  VirtualBox ([[HOWTO use VirtualBox to run simulations on Windows machines]]) and VMware ([[HOWTO use VMware to set up virtual networks (Windows)]]).&lt;br /&gt;
&lt;br /&gt;
ns-3 may also run on currently unsupported platforms.  For example, an alternative Windows platform is MinGW.  There are maintainers who attempt to keep a subset of ns-3 running on MinGW, but it is not &amp;quot;officially&amp;quot; suppported.  This means that bugs filed against MinGW will be addressed as time permits.  Additionally, the Eclipse IDE is used by some developers, but the project does not actively support this environment.&lt;br /&gt;
&lt;br /&gt;
Additional maintainers are invited to make more platforms, compilers and environments supported.&lt;br /&gt;
&lt;br /&gt;
=== ns-3 options ===&lt;br /&gt;
&lt;br /&gt;
There are a few options that are not enabled by default and are not available on all platforms.  At the end of the configuration process (explained below), the status of these options are shown as detected by a '''waf''' script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
---- Summary of optional NS-3 features:&lt;br /&gt;
Threading Primitives          : enabled&lt;br /&gt;
Real Time Simulator           : enabled&lt;br /&gt;
Emulated Net Device           : enabled&lt;br /&gt;
Tap Bridge                    : enabled&lt;br /&gt;
GtkConfigStore                : enabled&lt;br /&gt;
XmlIo                         : not enabled (library 'libxml-2.0 &amp;gt;= 2.7' not found)&lt;br /&gt;
SQlite stats data output      : enabled&lt;br /&gt;
Network Simulation Cradle     : enabled&lt;br /&gt;
Python Bindings               : not enabled (disabled by user request)&lt;br /&gt;
Use sudo to set suid bit      : not enabled (option --enable-sudo not selected)&lt;br /&gt;
Static build                  : not enabled (option --enable-static not selected)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generally if the platform is missing some requirement for an option it is marked as &amp;quot;not enabled.&amp;quot;  Note that &amp;quot;disabled by user request&amp;quot; will be shown when the user explicitly disables a feature (such as &amp;quot;--disable-python&amp;quot;); and if a feature defaults to disabled this will also be noted (e.g., option --enable-sudo not selected).&lt;br /&gt;
&lt;br /&gt;
The table below is meant to help sort out the different features and on which platforms they are supported.  This table reflects the status of the most recent release version (ns-3.6):&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=3&lt;br /&gt;
&lt;br /&gt;
|+ Option status&lt;br /&gt;
! Option !! Linux gcc-4.x,gcc-3.4.x !! OS X !! Cygwin&lt;br /&gt;
|-&lt;br /&gt;
! Optimized build &lt;br /&gt;
|   ||   || X &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Python bindings&lt;br /&gt;
|   ||   || X &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Threading&lt;br /&gt;
|   ||   ||&lt;br /&gt;
|-&lt;br /&gt;
! Real-time simulator&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Emulated Net Device&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Tap Bridge&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Network simulation cradle&lt;br /&gt;
|  note&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Static builds&lt;br /&gt;
|  ||  || &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Key:'' '''(  )'''(empty space) = supported; '''X''' = not supported;  '''?''' = unknown; '''dev''' = support in ns-3-dev (next release)&lt;br /&gt;
&lt;br /&gt;
''Notes:''&lt;br /&gt;
# Works with gcc4&lt;br /&gt;
# Cygwin limitation explained [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings#Cygwin_limitation here]&lt;br /&gt;
# NSC works best with gcc-3.4 or gcc-4.2 or greater series.  Try to avoid gcc-4.0 and gcc-4.1 series; some build problems have been found with these versions of compilers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
The core of ns-3 requires a gcc/g++ installation of 3.4 or greater, and python 2.4 or greater. As mentioned above, different options require additional support.  This is a list of packages (for Debian/Ubuntu systems) that are needed to support different ns-3 options.  Note that other distributions (e.g., Fedora, FreeBSD) may have different package names or capitalization (e.g. ImageMagik).  Installation should be similar for Red Hat/Fedora based systems, with &amp;quot;yum&amp;quot; replacing &amp;quot;apt-get&amp;quot;, but some differences exist, so below is a guide for both Ubuntu (should generally apply to Debian) and Fedora/RedHat-based systems:&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu/Debian ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Ubuntu 9.10 release; other releases or other Debian-based systems may slightly vary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ (release):'''  This is the minimal set of packages needed to run ns-3 from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gcc g++ python&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gcc g++ python python-dev&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install bzr&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libgtk2.0-0 libgtk2.0-dev&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install doxygen graphviz imagemagick&lt;br /&gt;
  sudo apt-get install texlive texlive-pdf texlive-latex-extra texlive-generic-extra texlive-generic-recommended&lt;br /&gt;
&lt;br /&gt;
* The ns-3 manual and tutorial are written in Texinfo (doc/tutorial or doc/manual):&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install texinfo dia texlive texlive-pdf texlive-latex-extra texlive-extra-utils texlive-generic-recommended texi2html&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install flex bison&lt;br /&gt;
&lt;br /&gt;
* Some basic mobility visualization tests require goocanvas:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libgoocanvas-dev&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install g++-3.4 gcc-3.4&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
 sudo apt-get install tcpdump&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sqlite sqlite3 libsqlite3-dev&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install libxml2 libxml2-dev&lt;br /&gt;
&lt;br /&gt;
* Support for Gustavo's ns-3-pyviz visualizer&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas&lt;br /&gt;
&lt;br /&gt;
=== Fedora/RedHat ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Fedora 12/CentOS 5.4 release; other releases may slightly vary.  &lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ (release):'''  This is the minimal set of packages needed to run ns-3 from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc gcc-c++ python&lt;br /&gt;
&lt;br /&gt;
* '''Note:'''  If you are using CentOS 5.4 or RHEL 5, you may want to also get and use the gcc44 packages; see the [[Troubleshooting]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc gcc-c++ python python-devel&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.  You may want to install mercurial from rpmforge repository (instructions [http://www.trinitycore.org/forum/mercurial-centos-t3113.html here]) or EPEL.&lt;br /&gt;
&lt;br /&gt;
  yum install mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar. You may need EPEL repository for this.&lt;br /&gt;
&lt;br /&gt;
  yum install bzr&lt;br /&gt;
&lt;br /&gt;
* An optional but recommended package (for improving some wireless model fidelity) is GNU scientific library:&lt;br /&gt;
&lt;br /&gt;
  yum install gsl gsl-devel&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  yum install gtk2 gtk2-devel&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  yum install gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation:&lt;br /&gt;
&lt;br /&gt;
  yum install doxygen graphviz ImageMagick&lt;br /&gt;
  yum install texinfo texinfo-tex&lt;br /&gt;
&lt;br /&gt;
* The ns-3 manual and tutorial are written in Texinfo (doc/tutorial or doc/manual):&lt;br /&gt;
&lt;br /&gt;
  yum install texinfo dia texinfo-tex texi2html&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  yum install flex bison&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
 &lt;br /&gt;
  yum install compat-gcc-34&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
  yum install tcpdump&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
  yum install sqlite sqlite-devel&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
  yum install libxml2 libxml2-devel&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Gentoo as of 04/22/2010; due to possible changes in USE-flags or package names the list may slightly vary.&lt;br /&gt;
First of all, become root as usual.&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ or Python (release):'''  This is the minimal set of packages needed to run ns-3 or to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;threads -nocxx nptl&amp;quot; emerge -uavN gcc python&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;curl&amp;quot; emerge -uavN bzr&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace gtk+:2&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation; also ns-3 manual and tutorial (written in Texinfo):&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;extra graphics png&amp;quot; emerge -uavN texlive&lt;br /&gt;
  USE=&amp;quot;cairo graphviz latex png svg&amp;quot; emerge -uavN doxygen imagemagick dia&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace flex bison&lt;br /&gt;
&lt;br /&gt;
* Some basic mobility visualization tests require goocanvas:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace goocanvas&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;-nocxx nptl&amp;quot; emerge -uavN gcc:3.4&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
 emerge -av --noreplace tcpdump&lt;br /&gt;
&lt;br /&gt;
or you may prefer&lt;br /&gt;
&lt;br /&gt;
 emerge -av --noreplace wireshark&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
 USE=&amp;quot;threadsafe&amp;quot; emerge -uavN sqlite:3&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace libxml2&lt;br /&gt;
&lt;br /&gt;
* Support for Gustavo's ns-3-pyviz visualizer (following packages have no stable version as of day of writing, so ~arch for ACCEPT_KEYWORDS)&lt;br /&gt;
&lt;br /&gt;
  ACCEPT_KEYWORDS=&amp;quot;~x86&amp;quot; emerge -av --noreplace pygraphviz kiwi pygoocanvas&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X (Snow Leopard) ===&lt;br /&gt;
&lt;br /&gt;
Please see [[HOWTO_get_ns-3_running_on_Mac_OS_X_(10.6.2_Intel)]] and follow steps 1 and 2 (prerequisites) and continue reading below if you want to work with a released version, and follow all steps if you want to work with a development version of ns-3.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 code is available in Mercurial repositories on the server http://code.nsnam.org (look for the latest release e.g., &amp;quot;ns-3.4&amp;quot;).  You can download a tarball of the latest release at http://www.nsnam.org/releases or you can work with our repositories using Mercurial.  We recommend using Mercurial unless there's a good reason not to (See the end of this section for instructions on how to get a tarball release).&lt;br /&gt;
&lt;br /&gt;
The simplest way to get started using Mercurial repositories is to use the '''ns-3-allinone''' environment.  This is a set of scripts that manages the downloading and building of various subystems of ns-3 for you.  We recommend that you begin your ns-3 adventures in this environment as it can really simplify your life at this point.&lt;br /&gt;
&lt;br /&gt;
=== Downloading ns-3 Using Mercurial ===&lt;br /&gt;
One practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories.  If you adopt that approach, you can get a copy of ns-3-allinone by typing the following into your Linux shell (assuming you have installed Mercurial):&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir repos&lt;br /&gt;
  cd repos&lt;br /&gt;
  hg clone http://code.nsnam.org/ns-3-allinone&lt;br /&gt;
&lt;br /&gt;
As the hg (Mercurial) command executes, you should see something like the following displayed,&lt;br /&gt;
&lt;br /&gt;
  destination directory: ns-3-allinone&lt;br /&gt;
  requesting all changes&lt;br /&gt;
  adding changesets&lt;br /&gt;
  adding manifests&lt;br /&gt;
  adding file changes&lt;br /&gt;
  added 26 changesets with 40 changes to 7 files&lt;br /&gt;
  7 files updated, 0 files merged, 0 files removed, 0 files unresolved&lt;br /&gt;
&lt;br /&gt;
After the clone command completes, you should have a directory called ns-3-allinone under your ~/repos directory, the contents of which should look something like the following:&lt;br /&gt;
&lt;br /&gt;
  build.py*  constants.py  dist.py*  download.py*  README  util.py&lt;br /&gt;
&lt;br /&gt;
Notice that you really just downloaded some Python scripts.  The next step will be to use those scripts to download and build the ns-3 distribution of your choice.&lt;br /&gt;
&lt;br /&gt;
If you go to the following link: http://code.nsnam.org/ you will see a number of repositories.  Many are the private repositories of the ns-3 development team.  The repositories of interest to you will be prefixed with '''ns-3'''.  Official releases of ns-3 will be numbered as ns-3.release.hotfix.  For example, a second hotfix to a still hypothetical release nine of ns-3 would be numbered as ns-3.9.2 on this page.&lt;br /&gt;
&lt;br /&gt;
We have had a regression testing framework in place since the first release.  For each release, a set of output files that define ''good behavior'' are saved.  These known good output files are called reference traces and are associated with a given release by name.  For example, in http://code.nsnam.org/ you will find a repository named ns-3.1 which is the first stable release of ns-3.  You will also find a separate repository named ns-3.1-ref-traces that  holds the reference traces for the ns-3.1 release.  It is crucial to keep these&lt;br /&gt;
files consistent if you want to do any regression testing of your repository.  This is a good idea to do at least once to verify everything has built correctly.&lt;br /&gt;
&lt;br /&gt;
The current development snapshot (unreleased) of ns-3 may be found at http://code.nsnam.org/ns-3-dev/ and the associated reference traces may be found http://code.nsnam.org/ns-3-dev-ref-traces/ .  The developers attempt to keep these repository in consistent, working states but they are in a development area with unreleased code present, so you may want to consider staying with an official release if you do not need newly-introduced features.&lt;br /&gt;
&lt;br /&gt;
Since the release numbers are going to be changing, we will stick with the more constant ns-3-dev here, but you can replace the string ''ns-3-dev'' with your choice of release (e.g., ns-3.4 and ns-3.4-ref-traces) in the text below.  You can find the latest version of the code either by inspection of the repository list or by going to the ''Getting Started'' web page and looking for the latest release identifier.&lt;br /&gt;
&lt;br /&gt;
To download the most common options type the following into your shell (remember you can substitute the name of your chosen release number instead of ns-3-dev)&lt;br /&gt;
&lt;br /&gt;
  ./download.py -n ns-3-dev -r ns-3-dev-ref-traces&lt;br /&gt;
&lt;br /&gt;
After download process completes, you should have several new directories under ~/repos/ns-3-allinone:&lt;br /&gt;
&lt;br /&gt;
  build.py*     constants.pyc  download.py*  ns-3-dev-ref-traces/  pybindgen/  util.py&lt;br /&gt;
  constants.py  dist.py*       ns-3-dev/     nsc/                  README      util.pyc&lt;br /&gt;
&lt;br /&gt;
Go ahead and change into ns-3-dev under your ~/repos/ns-3-allinone directory.  You should see something like the following there:&lt;br /&gt;
&lt;br /&gt;
  AUTHORS       examples/  regression/    scratch/  waf*&lt;br /&gt;
  bindings/     LICENSE    regression.py  src/      waf.bat*&lt;br /&gt;
  CHANGES.html  ns3/       RELEASE_NOTES  utils/    wscript&lt;br /&gt;
  doc/          README     samples/       VERSION   wutils.py&lt;br /&gt;
&lt;br /&gt;
You are now ready to build the ns-3 distribution.&lt;br /&gt;
&lt;br /&gt;
=== Downloading ns-3 Using a Tarball ===&lt;br /&gt;
&lt;br /&gt;
The process for downloading ns-3 via tarball is simpler than the Mercurial process since all of the pieces are pre-packaged for you.  You just have to pick a release, download it and decompress it.&lt;br /&gt;
&lt;br /&gt;
As mentioned above, one practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories.  One could also keep a tarballs directory.  If you adopt the tarballs directory approach, you can get a copy of a release by typing the following into your Linux shell (substitute the appropriate version numbers, of course):&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir tarballs&lt;br /&gt;
  cd tarballs&lt;br /&gt;
  wget http://www.nsnam.org/releases/ns-allinone-3.6.tar.bz2&lt;br /&gt;
  tar xjf ns-allinone-3.6.tar.bz2&lt;br /&gt;
&lt;br /&gt;
If you change into the directory '''ns-allinone-3.6''' you should see a number of files:&lt;br /&gt;
&lt;br /&gt;
  build.py*     ns-3.6/             nsc-0.5.1/             README  &lt;br /&gt;
  constants.py  ns-3.6-ref-traces/  pybindgen-0.12.0.703/  util.py&lt;br /&gt;
&lt;br /&gt;
You are now ready to build the ns-3 distribution.&lt;br /&gt;
&lt;br /&gt;
== Building ns-3 with ns-3-allinone ==&lt;br /&gt;
&lt;br /&gt;
The first time you build the ns-3 project you should build using the allinone environment.  This will get the project configured for you&lt;br /&gt;
in the most commonly useful way.&lt;br /&gt;
&lt;br /&gt;
Change into the directory you created in the download section above.  If you downloaded using Mercurial you should have a directory called ns-3-allinone under your ~/repos directory.  If you downloaded using a tarball you should have a directory called something like ns-3-allinone-3.4 under your ~/tarballs directory.  Type the following:&lt;br /&gt;
&lt;br /&gt;
  ./build.py&lt;br /&gt;
&lt;br /&gt;
You will see lots of typical compiler output messages displayed as the build script builds the various pieces you downloaded.  Eventually you should see the following magic words:&lt;br /&gt;
&lt;br /&gt;
  Build finished successfully (00:02:37)&lt;br /&gt;
  Leaving directory `./ns-3-dev'&lt;br /&gt;
&lt;br /&gt;
Once the project has built you typically will not use ns-3-allinone scripts.  You will now interact directly with Waf and we '''do it in the ns-3-dev directory and not in the ns-3-allinone directory'''.&lt;br /&gt;
&lt;br /&gt;
=== Configuration with Waf ===&lt;br /&gt;
&lt;br /&gt;
To see valid configure options, type ./waf --help.  The most important option is -d &amp;lt;debug level&amp;gt;.  Valid debug levels (which are listed in waf --help) are:  &amp;quot;debug&amp;quot; or &amp;quot;optimized&amp;quot;.  It is also possible to change the flags used for compilation with (e.g.): &lt;br /&gt;
&lt;br /&gt;
  CXXFLAGS=&amp;quot;-O3&amp;quot; ./waf configure &lt;br /&gt;
&lt;br /&gt;
or, alternately, the gcc compiler&lt;br /&gt;
&lt;br /&gt;
  CXX=g++-3.4 ./waf configure&lt;br /&gt;
&lt;br /&gt;
'''Note:'''  Unlike some other build tools, to change the build target, the option must be supplied during the configure stage rather than&lt;br /&gt;
the build stage (i.e., &amp;quot;./waf -d optimized&amp;quot; will not work; instead, do&lt;br /&gt;
&lt;br /&gt;
  ./waf -d optimized configure; ./waf &lt;br /&gt;
&lt;br /&gt;
The resulting binaries are placed in build/&amp;lt;debuglevel&amp;gt;/srcpath.  For example, in a debug build you can find the executable for the first.cc example as build/debug/examples/first.  You can debug the executable directly by:&lt;br /&gt;
&lt;br /&gt;
  ./waf --shell&lt;br /&gt;
  cd build/debug/examples&lt;br /&gt;
  gdb first&lt;br /&gt;
&lt;br /&gt;
Of course, you can run gdb in emacs, or use your favorite debugger such as ddd or insight just as easily.  In an optimized build you can find the executable for the first.cc example as build/optimized/examples/first.&lt;br /&gt;
&lt;br /&gt;
In order to forcibly disable python bindings, you can provide the following option:&lt;br /&gt;
&lt;br /&gt;
  ./waf --disable-python configure&lt;br /&gt;
&lt;br /&gt;
In order to tell the build system to use the sudo program to set the suid bit if required, you can provide the following option:&lt;br /&gt;
&lt;br /&gt;
  ./waf --enable-sudo configure&lt;br /&gt;
&lt;br /&gt;
To start over a configuration from scratch, type:&lt;br /&gt;
&lt;br /&gt;
  ./waf distclean&lt;br /&gt;
&lt;br /&gt;
Or if you get stuck and all else fails:&lt;br /&gt;
&lt;br /&gt;
  rm -rf build&lt;br /&gt;
&lt;br /&gt;
followed by changing back into ns-3-allinone and doing:&lt;br /&gt;
&lt;br /&gt;
  ./build.py&lt;br /&gt;
&lt;br /&gt;
will basically reset your build state.&lt;br /&gt;
&lt;br /&gt;
To see all waf options:&lt;br /&gt;
&lt;br /&gt;
  ./waf --help&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
&lt;br /&gt;
ns-3 has unit tests that can be run to verify the installation:&lt;br /&gt;
&lt;br /&gt;
  ./test.py&lt;br /&gt;
&lt;br /&gt;
which should produce output like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PASS: TestSuite histogram&lt;br /&gt;
PASS: TestSuite ns3-wifi-interference&lt;br /&gt;
PASS: TestSuite ns3-tcp-cwnd&lt;br /&gt;
PASS: TestSuite ns3-tcp-interoperability&lt;br /&gt;
PASS: TestSuite sample&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the regression tests mentioned above:&lt;br /&gt;
&lt;br /&gt;
  ./waf --regression&lt;br /&gt;
&lt;br /&gt;
== Using Python ==&lt;br /&gt;
&lt;br /&gt;
See [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings this page].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
See [http://www.nsnam.org/wiki/index.php/Troubleshooting this page].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Craigdo|Craigdo]] 04:40, 5 November 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Installation&amp;diff=4213</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Installation&amp;diff=4213"/>
		<updated>2010-04-22T18:23:10Z</updated>

		<summary type="html">&lt;p&gt;Hippo: /* Fedora/RedHat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is a detailed installation guide for ns-3.  Basic installation instructions can be found at the [http://www.nsnam.org/getting_started.html Getting Started] page or in the [http://www.nsnam.org/docs/release/tutorial/tutorial.html ns-3 tutorial].&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&lt;br /&gt;
ns-3 is primarily developed on GNU/Linux platforms, and the minimal requirements to run basic simulations are a gcc installation of gcc-3.4/g++-3.4 or greater, and python 2.4 or greater.  &lt;br /&gt;
&lt;br /&gt;
ns-3 is supported on the following primary platforms:&lt;br /&gt;
&lt;br /&gt;
# Linux x86 gcc 4.2, 4.1, and, 3.4.6.&lt;br /&gt;
# Linux x86_64 gcc 4.4.0, 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6&lt;br /&gt;
# MacOS X ppc and x86 (gcc 4.0.x and 4.2.x)&lt;br /&gt;
# [http://www.cygwin.com Cygwin] gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized)&lt;br /&gt;
&lt;br /&gt;
By supported, we mean that the project tries to support most or all of the build options on these platforms unless there is a good reason to exclude the option; and at least the debug build will compile.  If you intend to do serious work using ns-3, and are forced by circumstances to use a Windows platform, consider virtualization of a popular Linux platform.  This may be more time-consuming than installing a minimal Cygwin, for example, but you end up with a fully functional Linux system and ns-3 distribution.  Some quick performance comparisons between Cygwin and VirtualBoxed Fedora 11 indicate that examples can actually run faster under VirtualBox.&lt;br /&gt;
&lt;br /&gt;
We provide HOWTO documents describing the process for installing Linux support and getting ns-3 running using two popular virtualization products:  VirtualBox ([[HOWTO use VirtualBox to run simulations on Windows machines]]) and VMware ([[HOWTO use VMware to set up virtual networks (Windows)]]).&lt;br /&gt;
&lt;br /&gt;
ns-3 may also run on currently unsupported platforms.  For example, an alternative Windows platform is MinGW.  There are maintainers who attempt to keep a subset of ns-3 running on MinGW, but it is not &amp;quot;officially&amp;quot; suppported.  This means that bugs filed against MinGW will be addressed as time permits.  Additionally, the Eclipse IDE is used by some developers, but the project does not actively support this environment.&lt;br /&gt;
&lt;br /&gt;
Additional maintainers are invited to make more platforms, compilers and environments supported.&lt;br /&gt;
&lt;br /&gt;
=== ns-3 options ===&lt;br /&gt;
&lt;br /&gt;
There are a few options that are not enabled by default and are not available on all platforms.  At the end of the configuration process (explained below), the status of these options are shown as detected by a '''waf''' script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
---- Summary of optional NS-3 features:&lt;br /&gt;
Threading Primitives          : enabled&lt;br /&gt;
Real Time Simulator           : enabled&lt;br /&gt;
Emulated Net Device           : enabled&lt;br /&gt;
Tap Bridge                    : enabled&lt;br /&gt;
GtkConfigStore                : enabled&lt;br /&gt;
XmlIo                         : not enabled (library 'libxml-2.0 &amp;gt;= 2.7' not found)&lt;br /&gt;
SQlite stats data output      : enabled&lt;br /&gt;
Network Simulation Cradle     : enabled&lt;br /&gt;
Python Bindings               : not enabled (disabled by user request)&lt;br /&gt;
Use sudo to set suid bit      : not enabled (option --enable-sudo not selected)&lt;br /&gt;
Static build                  : not enabled (option --enable-static not selected)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generally if the platform is missing some requirement for an option it is marked as &amp;quot;not enabled.&amp;quot;  Note that &amp;quot;disabled by user request&amp;quot; will be shown when the user explicitly disables a feature (such as &amp;quot;--disable-python&amp;quot;); and if a feature defaults to disabled this will also be noted (e.g., option --enable-sudo not selected).&lt;br /&gt;
&lt;br /&gt;
The table below is meant to help sort out the different features and on which platforms they are supported.  This table reflects the status of the most recent release version (ns-3.6):&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=3&lt;br /&gt;
&lt;br /&gt;
|+ Option status&lt;br /&gt;
! Option !! Linux gcc-4.x,gcc-3.4.x !! OS X !! Cygwin&lt;br /&gt;
|-&lt;br /&gt;
! Optimized build &lt;br /&gt;
|   ||   || X &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Python bindings&lt;br /&gt;
|   ||   || X &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Threading&lt;br /&gt;
|   ||   ||&lt;br /&gt;
|-&lt;br /&gt;
! Real-time simulator&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Emulated Net Device&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Tap Bridge&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Network simulation cradle&lt;br /&gt;
|  note&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Static builds&lt;br /&gt;
|  ||  || &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Key:'' '''(  )'''(empty space) = supported; '''X''' = not supported;  '''?''' = unknown; '''dev''' = support in ns-3-dev (next release)&lt;br /&gt;
&lt;br /&gt;
''Notes:''&lt;br /&gt;
# Works with gcc4&lt;br /&gt;
# Cygwin limitation explained [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings#Cygwin_limitation here]&lt;br /&gt;
# NSC works best with gcc-3.4 or gcc-4.2 or greater series.  Try to avoid gcc-4.0 and gcc-4.1 series; some build problems have been found with these versions of compilers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
The core of ns-3 requires a gcc/g++ installation of 3.4 or greater, and python 2.4 or greater. As mentioned above, different options require additional support.  This is a list of packages (for Debian/Ubuntu systems) that are needed to support different ns-3 options.  Note that other distributions (e.g., Fedora, FreeBSD) may have different package names or capitalization (e.g. ImageMagik).  Installation should be similar for Red Hat/Fedora based systems, with &amp;quot;yum&amp;quot; replacing &amp;quot;apt-get&amp;quot;, but some differences exist, so below is a guide for both Ubuntu (should generally apply to Debian) and Fedora/RedHat-based systems:&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu/Debian ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Ubuntu 9.10 release; other releases or other Debian-based systems may slightly vary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ (release):'''  This is the minimal set of packages needed to run ns-3 from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gcc g++ python&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gcc g++ python python-dev&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install bzr&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libgtk2.0-0 libgtk2.0-dev&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install doxygen graphviz imagemagick&lt;br /&gt;
  sudo apt-get install texlive texlive-pdf texlive-latex-extra texlive-generic-extra texlive-generic-recommended&lt;br /&gt;
&lt;br /&gt;
* The ns-3 manual and tutorial are written in Texinfo (doc/tutorial or doc/manual):&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install texinfo dia texlive texlive-pdf texlive-latex-extra texlive-extra-utils texlive-generic-recommended texi2html&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install flex bison&lt;br /&gt;
&lt;br /&gt;
* Some basic mobility visualization tests require goocanvas:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libgoocanvas-dev&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install g++-3.4 gcc-3.4&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
 sudo apt-get install tcpdump&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sqlite sqlite3 libsqlite3-dev&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install libxml2 libxml2-dev&lt;br /&gt;
&lt;br /&gt;
* Support for Gustavo's ns-3-pyviz visualizer&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas&lt;br /&gt;
&lt;br /&gt;
=== Fedora/RedHat ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Fedora 12/CentOS 5.4 release; other releases may slightly vary.  &lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ (release):'''  This is the minimal set of packages needed to run ns-3 from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc gcc-c++ python&lt;br /&gt;
&lt;br /&gt;
* '''Note:'''  If you are using CentOS 5.4 or RHEL 5, you may want to also get and use the gcc44 packages; see the [[Troubleshooting]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc gcc-c++ python python-devel&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.  You may want to install mercurial from rpmforge repository (instructions [http://www.trinitycore.org/forum/mercurial-centos-t3113.html here]) or EPEL.&lt;br /&gt;
&lt;br /&gt;
  yum install mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar. You may need EPEL repository for this.&lt;br /&gt;
&lt;br /&gt;
  yum install bzr&lt;br /&gt;
&lt;br /&gt;
* An optional but recommended package (for improving some wireless model fidelity) is GNU scientific library:&lt;br /&gt;
&lt;br /&gt;
  yum install gsl gsl-devel&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  yum install gtk2 gtk2-devel&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  yum install gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation:&lt;br /&gt;
&lt;br /&gt;
  yum install doxygen graphviz ImageMagick&lt;br /&gt;
  yum install texinfo texinfo-tex&lt;br /&gt;
&lt;br /&gt;
* The ns-3 manual and tutorial are written in Texinfo (doc/tutorial or doc/manual):&lt;br /&gt;
&lt;br /&gt;
  yum install texinfo dia texinfo-tex texi2html&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  yum install flex bison&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
 &lt;br /&gt;
  yum install compat-gcc-34&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
  yum install tcpdump&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
  yum install sqlite sqlite-devel&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
  yum install libxml2 libxml2-devel&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Gentoo as of 04/22/2010; due to possible changes in USE-flags or package names the list may slightly vary.&lt;br /&gt;
First of all, become root as usual.&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ or Python (release):'''  This is the minimal set of packages needed to run ns-3 or to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;threads -nocxx nptl&amp;quot; emerge -uavN gcc python&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;curl&amp;quot; emerge -uavN bzr&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace gtk+:2&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation; also ns-3 manual and tutorial (written in Texinfo):&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;graphics png extra&amp;quot; emerge -uavN texlive&lt;br /&gt;
  USE=&amp;quot;latex graphviz png svg cairo&amp;quot; emerge -uavN doxygen imagemagick dia&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace flex bison&lt;br /&gt;
&lt;br /&gt;
* Some basic mobility visualization tests require goocanvas:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace goocanvas&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;-nocxx nptl&amp;quot; emerge -uavN gcc:3.4&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
 emerge -av --noreplace tcpdump&lt;br /&gt;
&lt;br /&gt;
or you may prefer&lt;br /&gt;
&lt;br /&gt;
 emerge -av --noreplace wireshark&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
 USE=&amp;quot;threadsafe&amp;quot; emerge -uavN sqlite:3&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace libxml2&lt;br /&gt;
&lt;br /&gt;
* Support for Gustavo's ns-3-pyviz visualizer (following packages have no stable version as of day of writing, so ~arch for ACCEPT_KEYWORDS)&lt;br /&gt;
&lt;br /&gt;
  ACCEPT_KEYWORDS=&amp;quot;~x86&amp;quot; emerge -av --noreplace pygraphviz kiwi pygoocanvas&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X (Snow Leopard) ===&lt;br /&gt;
&lt;br /&gt;
Please see [[HOWTO_get_ns-3_running_on_Mac_OS_X_(10.6.2_Intel)]] and follow steps 1 and 2 (prerequisites) and continue reading below if you want to work with a released version, and follow all steps if you want to work with a development version of ns-3.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 code is available in Mercurial repositories on the server http://code.nsnam.org (look for the latest release e.g., &amp;quot;ns-3.4&amp;quot;).  You can download a tarball of the latest release at http://www.nsnam.org/releases or you can work with our repositories using Mercurial.  We recommend using Mercurial unless there's a good reason not to (See the end of this section for instructions on how to get a tarball release).&lt;br /&gt;
&lt;br /&gt;
The simplest way to get started using Mercurial repositories is to use the '''ns-3-allinone''' environment.  This is a set of scripts that manages the downloading and building of various subystems of ns-3 for you.  We recommend that you begin your ns-3 adventures in this environment as it can really simplify your life at this point.&lt;br /&gt;
&lt;br /&gt;
=== Downloading ns-3 Using Mercurial ===&lt;br /&gt;
One practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories.  If you adopt that approach, you can get a copy of ns-3-allinone by typing the following into your Linux shell (assuming you have installed Mercurial):&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir repos&lt;br /&gt;
  cd repos&lt;br /&gt;
  hg clone http://code.nsnam.org/ns-3-allinone&lt;br /&gt;
&lt;br /&gt;
As the hg (Mercurial) command executes, you should see something like the following displayed,&lt;br /&gt;
&lt;br /&gt;
  destination directory: ns-3-allinone&lt;br /&gt;
  requesting all changes&lt;br /&gt;
  adding changesets&lt;br /&gt;
  adding manifests&lt;br /&gt;
  adding file changes&lt;br /&gt;
  added 26 changesets with 40 changes to 7 files&lt;br /&gt;
  7 files updated, 0 files merged, 0 files removed, 0 files unresolved&lt;br /&gt;
&lt;br /&gt;
After the clone command completes, you should have a directory called ns-3-allinone under your ~/repos directory, the contents of which should look something like the following:&lt;br /&gt;
&lt;br /&gt;
  build.py*  constants.py  dist.py*  download.py*  README  util.py&lt;br /&gt;
&lt;br /&gt;
Notice that you really just downloaded some Python scripts.  The next step will be to use those scripts to download and build the ns-3 distribution of your choice.&lt;br /&gt;
&lt;br /&gt;
If you go to the following link: http://code.nsnam.org/ you will see a number of repositories.  Many are the private repositories of the ns-3 development team.  The repositories of interest to you will be prefixed with '''ns-3'''.  Official releases of ns-3 will be numbered as ns-3.release.hotfix.  For example, a second hotfix to a still hypothetical release nine of ns-3 would be numbered as ns-3.9.2 on this page.&lt;br /&gt;
&lt;br /&gt;
We have had a regression testing framework in place since the first release.  For each release, a set of output files that define ''good behavior'' are saved.  These known good output files are called reference traces and are associated with a given release by name.  For example, in http://code.nsnam.org/ you will find a repository named ns-3.1 which is the first stable release of ns-3.  You will also find a separate repository named ns-3.1-ref-traces that  holds the reference traces for the ns-3.1 release.  It is crucial to keep these&lt;br /&gt;
files consistent if you want to do any regression testing of your repository.  This is a good idea to do at least once to verify everything has built correctly.&lt;br /&gt;
&lt;br /&gt;
The current development snapshot (unreleased) of ns-3 may be found at http://code.nsnam.org/ns-3-dev/ and the associated reference traces may be found http://code.nsnam.org/ns-3-dev-ref-traces/ .  The developers attempt to keep these repository in consistent, working states but they are in a development area with unreleased code present, so you may want to consider staying with an official release if you do not need newly-introduced features.&lt;br /&gt;
&lt;br /&gt;
Since the release numbers are going to be changing, we will stick with the more constant ns-3-dev here, but you can replace the string ''ns-3-dev'' with your choice of release (e.g., ns-3.4 and ns-3.4-ref-traces) in the text below.  You can find the latest version of the code either by inspection of the repository list or by going to the ''Getting Started'' web page and looking for the latest release identifier.&lt;br /&gt;
&lt;br /&gt;
To download the most common options type the following into your shell (remember you can substitute the name of your chosen release number instead of ns-3-dev)&lt;br /&gt;
&lt;br /&gt;
  ./download.py -n ns-3-dev -r ns-3-dev-ref-traces&lt;br /&gt;
&lt;br /&gt;
After download process completes, you should have several new directories under ~/repos/ns-3-allinone:&lt;br /&gt;
&lt;br /&gt;
  build.py*     constants.pyc  download.py*  ns-3-dev-ref-traces/  pybindgen/  util.py&lt;br /&gt;
  constants.py  dist.py*       ns-3-dev/     nsc/                  README      util.pyc&lt;br /&gt;
&lt;br /&gt;
Go ahead and change into ns-3-dev under your ~/repos/ns-3-allinone directory.  You should see something like the following there:&lt;br /&gt;
&lt;br /&gt;
  AUTHORS       examples/  regression/    scratch/  waf*&lt;br /&gt;
  bindings/     LICENSE    regression.py  src/      waf.bat*&lt;br /&gt;
  CHANGES.html  ns3/       RELEASE_NOTES  utils/    wscript&lt;br /&gt;
  doc/          README     samples/       VERSION   wutils.py&lt;br /&gt;
&lt;br /&gt;
You are now ready to build the ns-3 distribution.&lt;br /&gt;
&lt;br /&gt;
=== Downloading ns-3 Using a Tarball ===&lt;br /&gt;
&lt;br /&gt;
The process for downloading ns-3 via tarball is simpler than the Mercurial process since all of the pieces are pre-packaged for you.  You just have to pick a release, download it and decompress it.&lt;br /&gt;
&lt;br /&gt;
As mentioned above, one practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories.  One could also keep a tarballs directory.  If you adopt the tarballs directory approach, you can get a copy of a release by typing the following into your Linux shell (substitute the appropriate version numbers, of course):&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir tarballs&lt;br /&gt;
  cd tarballs&lt;br /&gt;
  wget http://www.nsnam.org/releases/ns-allinone-3.6.tar.bz2&lt;br /&gt;
  tar xjf ns-allinone-3.6.tar.bz2&lt;br /&gt;
&lt;br /&gt;
If you change into the directory '''ns-allinone-3.6''' you should see a number of files:&lt;br /&gt;
&lt;br /&gt;
  build.py*     ns-3.6/             nsc-0.5.1/             README  &lt;br /&gt;
  constants.py  ns-3.6-ref-traces/  pybindgen-0.12.0.703/  util.py&lt;br /&gt;
&lt;br /&gt;
You are now ready to build the ns-3 distribution.&lt;br /&gt;
&lt;br /&gt;
== Building ns-3 with ns-3-allinone ==&lt;br /&gt;
&lt;br /&gt;
The first time you build the ns-3 project you should build using the allinone environment.  This will get the project configured for you&lt;br /&gt;
in the most commonly useful way.&lt;br /&gt;
&lt;br /&gt;
Change into the directory you created in the download section above.  If you downloaded using Mercurial you should have a directory called ns-3-allinone under your ~/repos directory.  If you downloaded using a tarball you should have a directory called something like ns-3-allinone-3.4 under your ~/tarballs directory.  Type the following:&lt;br /&gt;
&lt;br /&gt;
  ./build.py&lt;br /&gt;
&lt;br /&gt;
You will see lots of typical compiler output messages displayed as the build script builds the various pieces you downloaded.  Eventually you should see the following magic words:&lt;br /&gt;
&lt;br /&gt;
  Build finished successfully (00:02:37)&lt;br /&gt;
  Leaving directory `./ns-3-dev'&lt;br /&gt;
&lt;br /&gt;
Once the project has built you typically will not use ns-3-allinone scripts.  You will now interact directly with Waf and we '''do it in the ns-3-dev directory and not in the ns-3-allinone directory'''.&lt;br /&gt;
&lt;br /&gt;
=== Configuration with Waf ===&lt;br /&gt;
&lt;br /&gt;
To see valid configure options, type ./waf --help.  The most important option is -d &amp;lt;debug level&amp;gt;.  Valid debug levels (which are listed in waf --help) are:  &amp;quot;debug&amp;quot; or &amp;quot;optimized&amp;quot;.  It is also possible to change the flags used for compilation with (e.g.): &lt;br /&gt;
&lt;br /&gt;
  CXXFLAGS=&amp;quot;-O3&amp;quot; ./waf configure &lt;br /&gt;
&lt;br /&gt;
or, alternately, the gcc compiler&lt;br /&gt;
&lt;br /&gt;
  CXX=g++-3.4 ./waf configure&lt;br /&gt;
&lt;br /&gt;
'''Note:'''  Unlike some other build tools, to change the build target, the option must be supplied during the configure stage rather than&lt;br /&gt;
the build stage (i.e., &amp;quot;./waf -d optimized&amp;quot; will not work; instead, do&lt;br /&gt;
&lt;br /&gt;
  ./waf -d optimized configure; ./waf &lt;br /&gt;
&lt;br /&gt;
The resulting binaries are placed in build/&amp;lt;debuglevel&amp;gt;/srcpath.  For example, in a debug build you can find the executable for the first.cc example as build/debug/examples/first.  You can debug the executable directly by:&lt;br /&gt;
&lt;br /&gt;
  ./waf --shell&lt;br /&gt;
  cd build/debug/examples&lt;br /&gt;
  gdb first&lt;br /&gt;
&lt;br /&gt;
Of course, you can run gdb in emacs, or use your favorite debugger such as ddd or insight just as easily.  In an optimized build you can find the executable for the first.cc example as build/optimized/examples/first.&lt;br /&gt;
&lt;br /&gt;
In order to forcibly disable python bindings, you can provide the following option:&lt;br /&gt;
&lt;br /&gt;
  ./waf --disable-python configure&lt;br /&gt;
&lt;br /&gt;
In order to tell the build system to use the sudo program to set the suid bit if required, you can provide the following option:&lt;br /&gt;
&lt;br /&gt;
  ./waf --enable-sudo configure&lt;br /&gt;
&lt;br /&gt;
To start over a configuration from scratch, type:&lt;br /&gt;
&lt;br /&gt;
  ./waf distclean&lt;br /&gt;
&lt;br /&gt;
Or if you get stuck and all else fails:&lt;br /&gt;
&lt;br /&gt;
  rm -rf build&lt;br /&gt;
&lt;br /&gt;
followed by changing back into ns-3-allinone and doing:&lt;br /&gt;
&lt;br /&gt;
  ./build.py&lt;br /&gt;
&lt;br /&gt;
will basically reset your build state.&lt;br /&gt;
&lt;br /&gt;
To see all waf options:&lt;br /&gt;
&lt;br /&gt;
  ./waf --help&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
&lt;br /&gt;
ns-3 has unit tests that can be run to verify the installation:&lt;br /&gt;
&lt;br /&gt;
  ./test.py&lt;br /&gt;
&lt;br /&gt;
which should produce output like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PASS: TestSuite histogram&lt;br /&gt;
PASS: TestSuite ns3-wifi-interference&lt;br /&gt;
PASS: TestSuite ns3-tcp-cwnd&lt;br /&gt;
PASS: TestSuite ns3-tcp-interoperability&lt;br /&gt;
PASS: TestSuite sample&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the regression tests mentioned above:&lt;br /&gt;
&lt;br /&gt;
  ./waf --regression&lt;br /&gt;
&lt;br /&gt;
== Using Python ==&lt;br /&gt;
&lt;br /&gt;
See [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings this page].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
See [http://www.nsnam.org/wiki/index.php/Troubleshooting this page].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Craigdo|Craigdo]] 04:40, 5 November 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Installation&amp;diff=4212</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Installation&amp;diff=4212"/>
		<updated>2010-04-22T18:22:19Z</updated>

		<summary type="html">&lt;p&gt;Hippo: added Gentoo installation instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is a detailed installation guide for ns-3.  Basic installation instructions can be found at the [http://www.nsnam.org/getting_started.html Getting Started] page or in the [http://www.nsnam.org/docs/release/tutorial/tutorial.html ns-3 tutorial].&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&lt;br /&gt;
ns-3 is primarily developed on GNU/Linux platforms, and the minimal requirements to run basic simulations are a gcc installation of gcc-3.4/g++-3.4 or greater, and python 2.4 or greater.  &lt;br /&gt;
&lt;br /&gt;
ns-3 is supported on the following primary platforms:&lt;br /&gt;
&lt;br /&gt;
# Linux x86 gcc 4.2, 4.1, and, 3.4.6.&lt;br /&gt;
# Linux x86_64 gcc 4.4.0, 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6&lt;br /&gt;
# MacOS X ppc and x86 (gcc 4.0.x and 4.2.x)&lt;br /&gt;
# [http://www.cygwin.com Cygwin] gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized)&lt;br /&gt;
&lt;br /&gt;
By supported, we mean that the project tries to support most or all of the build options on these platforms unless there is a good reason to exclude the option; and at least the debug build will compile.  If you intend to do serious work using ns-3, and are forced by circumstances to use a Windows platform, consider virtualization of a popular Linux platform.  This may be more time-consuming than installing a minimal Cygwin, for example, but you end up with a fully functional Linux system and ns-3 distribution.  Some quick performance comparisons between Cygwin and VirtualBoxed Fedora 11 indicate that examples can actually run faster under VirtualBox.&lt;br /&gt;
&lt;br /&gt;
We provide HOWTO documents describing the process for installing Linux support and getting ns-3 running using two popular virtualization products:  VirtualBox ([[HOWTO use VirtualBox to run simulations on Windows machines]]) and VMware ([[HOWTO use VMware to set up virtual networks (Windows)]]).&lt;br /&gt;
&lt;br /&gt;
ns-3 may also run on currently unsupported platforms.  For example, an alternative Windows platform is MinGW.  There are maintainers who attempt to keep a subset of ns-3 running on MinGW, but it is not &amp;quot;officially&amp;quot; suppported.  This means that bugs filed against MinGW will be addressed as time permits.  Additionally, the Eclipse IDE is used by some developers, but the project does not actively support this environment.&lt;br /&gt;
&lt;br /&gt;
Additional maintainers are invited to make more platforms, compilers and environments supported.&lt;br /&gt;
&lt;br /&gt;
=== ns-3 options ===&lt;br /&gt;
&lt;br /&gt;
There are a few options that are not enabled by default and are not available on all platforms.  At the end of the configuration process (explained below), the status of these options are shown as detected by a '''waf''' script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
---- Summary of optional NS-3 features:&lt;br /&gt;
Threading Primitives          : enabled&lt;br /&gt;
Real Time Simulator           : enabled&lt;br /&gt;
Emulated Net Device           : enabled&lt;br /&gt;
Tap Bridge                    : enabled&lt;br /&gt;
GtkConfigStore                : enabled&lt;br /&gt;
XmlIo                         : not enabled (library 'libxml-2.0 &amp;gt;= 2.7' not found)&lt;br /&gt;
SQlite stats data output      : enabled&lt;br /&gt;
Network Simulation Cradle     : enabled&lt;br /&gt;
Python Bindings               : not enabled (disabled by user request)&lt;br /&gt;
Use sudo to set suid bit      : not enabled (option --enable-sudo not selected)&lt;br /&gt;
Static build                  : not enabled (option --enable-static not selected)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generally if the platform is missing some requirement for an option it is marked as &amp;quot;not enabled.&amp;quot;  Note that &amp;quot;disabled by user request&amp;quot; will be shown when the user explicitly disables a feature (such as &amp;quot;--disable-python&amp;quot;); and if a feature defaults to disabled this will also be noted (e.g., option --enable-sudo not selected).&lt;br /&gt;
&lt;br /&gt;
The table below is meant to help sort out the different features and on which platforms they are supported.  This table reflects the status of the most recent release version (ns-3.6):&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=3&lt;br /&gt;
&lt;br /&gt;
|+ Option status&lt;br /&gt;
! Option !! Linux gcc-4.x,gcc-3.4.x !! OS X !! Cygwin&lt;br /&gt;
|-&lt;br /&gt;
! Optimized build &lt;br /&gt;
|   ||   || X &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Python bindings&lt;br /&gt;
|   ||   || X &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Threading&lt;br /&gt;
|   ||   ||&lt;br /&gt;
|-&lt;br /&gt;
! Real-time simulator&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Emulated Net Device&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Tap Bridge&lt;br /&gt;
|   ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Network simulation cradle&lt;br /&gt;
|  note&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; ||  X || X&lt;br /&gt;
|-&lt;br /&gt;
! Static builds&lt;br /&gt;
|  ||  || &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Key:'' '''(  )'''(empty space) = supported; '''X''' = not supported;  '''?''' = unknown; '''dev''' = support in ns-3-dev (next release)&lt;br /&gt;
&lt;br /&gt;
''Notes:''&lt;br /&gt;
# Works with gcc4&lt;br /&gt;
# Cygwin limitation explained [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings#Cygwin_limitation here]&lt;br /&gt;
# NSC works best with gcc-3.4 or gcc-4.2 or greater series.  Try to avoid gcc-4.0 and gcc-4.1 series; some build problems have been found with these versions of compilers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
The core of ns-3 requires a gcc/g++ installation of 3.4 or greater, and python 2.4 or greater. As mentioned above, different options require additional support.  This is a list of packages (for Debian/Ubuntu systems) that are needed to support different ns-3 options.  Note that other distributions (e.g., Fedora, FreeBSD) may have different package names or capitalization (e.g. ImageMagik).  Installation should be similar for Red Hat/Fedora based systems, with &amp;quot;yum&amp;quot; replacing &amp;quot;apt-get&amp;quot;, but some differences exist, so below is a guide for both Ubuntu (should generally apply to Debian) and Fedora/RedHat-based systems:&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu/Debian ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Ubuntu 9.10 release; other releases or other Debian-based systems may slightly vary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ (release):'''  This is the minimal set of packages needed to run ns-3 from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gcc g++ python&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gcc g++ python python-dev&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install bzr&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libgtk2.0-0 libgtk2.0-dev&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install doxygen graphviz imagemagick&lt;br /&gt;
  sudo apt-get install texlive texlive-pdf texlive-latex-extra texlive-generic-extra texlive-generic-recommended&lt;br /&gt;
&lt;br /&gt;
* The ns-3 manual and tutorial are written in Texinfo (doc/tutorial or doc/manual):&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install texinfo dia texlive texlive-pdf texlive-latex-extra texlive-extra-utils texlive-generic-recommended texi2html&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install flex bison&lt;br /&gt;
&lt;br /&gt;
* Some basic mobility visualization tests require goocanvas:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libgoocanvas-dev&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install g++-3.4 gcc-3.4&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
 sudo apt-get install tcpdump&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sqlite sqlite3 libsqlite3-dev&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install libxml2 libxml2-dev&lt;br /&gt;
&lt;br /&gt;
* Support for Gustavo's ns-3-pyviz visualizer&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas&lt;br /&gt;
&lt;br /&gt;
=== Fedora/RedHat ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Fedora 12/CentOS 5.4 release; other releases or other Debian-based systems may slightly vary.  &lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ (release):'''  This is the minimal set of packages needed to run ns-3 from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc gcc-c++ python&lt;br /&gt;
&lt;br /&gt;
* '''Note:'''  If you are using CentOS 5.4 or RHEL 5, you may want to also get and use the gcc44 packages; see the [[Troubleshooting]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc gcc-c++ python python-devel&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.  You may want to install mercurial from rpmforge repository (instructions [http://www.trinitycore.org/forum/mercurial-centos-t3113.html here]) or EPEL.&lt;br /&gt;
&lt;br /&gt;
  yum install mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar. You may need EPEL repository for this.&lt;br /&gt;
&lt;br /&gt;
  yum install bzr&lt;br /&gt;
&lt;br /&gt;
* An optional but recommended package (for improving some wireless model fidelity) is GNU scientific library:&lt;br /&gt;
&lt;br /&gt;
  yum install gsl gsl-devel&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  yum install gtk2 gtk2-devel&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  yum install gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation:&lt;br /&gt;
&lt;br /&gt;
  yum install doxygen graphviz ImageMagick&lt;br /&gt;
  yum install texinfo texinfo-tex&lt;br /&gt;
&lt;br /&gt;
* The ns-3 manual and tutorial are written in Texinfo (doc/tutorial or doc/manual):&lt;br /&gt;
&lt;br /&gt;
  yum install texinfo dia texinfo-tex texi2html&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  yum install flex bison&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
 &lt;br /&gt;
  yum install compat-gcc-34&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
  yum install tcpdump&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
  yum install sqlite sqlite-devel&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
  yum install libxml2 libxml2-devel&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
&lt;br /&gt;
The following list of packages should be accurate for Gentoo as of 04/22/2010; due to possible changes in USE-flags or package names the list may slightly vary.&lt;br /&gt;
First of all, become root as usual.&lt;br /&gt;
&lt;br /&gt;
* '''minimal requirements for C++ or Python (release):'''  This is the minimal set of packages needed to run ns-3 or to work with Python bindings from a released tarball.&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;threads -nocxx nptl&amp;quot; emerge -uavN gcc python&lt;br /&gt;
&lt;br /&gt;
* Running regression tests requires mercurial to fetch the trace repositories.  mercurial is also needed in general to work with ns-3 development repositories.&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace mercurial&lt;br /&gt;
&lt;br /&gt;
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;curl&amp;quot; emerge -uavN bzr&lt;br /&gt;
&lt;br /&gt;
* A GTK-based configuration system&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace gtk+:2&lt;br /&gt;
&lt;br /&gt;
* Debugging:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace gdb valgrind &lt;br /&gt;
&lt;br /&gt;
* Doxygen and related inline documentation; also ns-3 manual and tutorial (written in Texinfo):&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;graphics png extra&amp;quot; emerge -uavN texlive&lt;br /&gt;
  USE=&amp;quot;latex graphviz png svg cairo&amp;quot; emerge -uavN doxygen imagemagick dia&lt;br /&gt;
&lt;br /&gt;
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace flex bison&lt;br /&gt;
&lt;br /&gt;
* Some basic mobility visualization tests require goocanvas:&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace goocanvas&lt;br /&gt;
&lt;br /&gt;
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:&lt;br /&gt;
&lt;br /&gt;
  USE=&amp;quot;-nocxx nptl&amp;quot; emerge -uavN gcc:3.4&lt;br /&gt;
&lt;br /&gt;
* To read pcap packet traces&lt;br /&gt;
 &lt;br /&gt;
 emerge -av --noreplace tcpdump&lt;br /&gt;
&lt;br /&gt;
or you may prefer&lt;br /&gt;
&lt;br /&gt;
 emerge -av --noreplace wireshark&lt;br /&gt;
&lt;br /&gt;
* Database support for statistics framework&lt;br /&gt;
&lt;br /&gt;
 USE=&amp;quot;threadsafe&amp;quot; emerge -uavN sqlite:3&lt;br /&gt;
&lt;br /&gt;
* Xml-based version of the config store (requires libxml2 &amp;gt;= version 2.7)&lt;br /&gt;
&lt;br /&gt;
  emerge -av --noreplace libxml2&lt;br /&gt;
&lt;br /&gt;
* Support for Gustavo's ns-3-pyviz visualizer (following packages have no stable version as of day of writing, so ~arch for ACCEPT_KEYWORDS)&lt;br /&gt;
&lt;br /&gt;
  ACCEPT_KEYWORDS=&amp;quot;~x86&amp;quot; emerge -av --noreplace pygraphviz kiwi pygoocanvas&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X (Snow Leopard) ===&lt;br /&gt;
&lt;br /&gt;
Please see [[HOWTO_get_ns-3_running_on_Mac_OS_X_(10.6.2_Intel)]] and follow steps 1 and 2 (prerequisites) and continue reading below if you want to work with a released version, and follow all steps if you want to work with a development version of ns-3.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 code is available in Mercurial repositories on the server http://code.nsnam.org (look for the latest release e.g., &amp;quot;ns-3.4&amp;quot;).  You can download a tarball of the latest release at http://www.nsnam.org/releases or you can work with our repositories using Mercurial.  We recommend using Mercurial unless there's a good reason not to (See the end of this section for instructions on how to get a tarball release).&lt;br /&gt;
&lt;br /&gt;
The simplest way to get started using Mercurial repositories is to use the '''ns-3-allinone''' environment.  This is a set of scripts that manages the downloading and building of various subystems of ns-3 for you.  We recommend that you begin your ns-3 adventures in this environment as it can really simplify your life at this point.&lt;br /&gt;
&lt;br /&gt;
=== Downloading ns-3 Using Mercurial ===&lt;br /&gt;
One practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories.  If you adopt that approach, you can get a copy of ns-3-allinone by typing the following into your Linux shell (assuming you have installed Mercurial):&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir repos&lt;br /&gt;
  cd repos&lt;br /&gt;
  hg clone http://code.nsnam.org/ns-3-allinone&lt;br /&gt;
&lt;br /&gt;
As the hg (Mercurial) command executes, you should see something like the following displayed,&lt;br /&gt;
&lt;br /&gt;
  destination directory: ns-3-allinone&lt;br /&gt;
  requesting all changes&lt;br /&gt;
  adding changesets&lt;br /&gt;
  adding manifests&lt;br /&gt;
  adding file changes&lt;br /&gt;
  added 26 changesets with 40 changes to 7 files&lt;br /&gt;
  7 files updated, 0 files merged, 0 files removed, 0 files unresolved&lt;br /&gt;
&lt;br /&gt;
After the clone command completes, you should have a directory called ns-3-allinone under your ~/repos directory, the contents of which should look something like the following:&lt;br /&gt;
&lt;br /&gt;
  build.py*  constants.py  dist.py*  download.py*  README  util.py&lt;br /&gt;
&lt;br /&gt;
Notice that you really just downloaded some Python scripts.  The next step will be to use those scripts to download and build the ns-3 distribution of your choice.&lt;br /&gt;
&lt;br /&gt;
If you go to the following link: http://code.nsnam.org/ you will see a number of repositories.  Many are the private repositories of the ns-3 development team.  The repositories of interest to you will be prefixed with '''ns-3'''.  Official releases of ns-3 will be numbered as ns-3.release.hotfix.  For example, a second hotfix to a still hypothetical release nine of ns-3 would be numbered as ns-3.9.2 on this page.&lt;br /&gt;
&lt;br /&gt;
We have had a regression testing framework in place since the first release.  For each release, a set of output files that define ''good behavior'' are saved.  These known good output files are called reference traces and are associated with a given release by name.  For example, in http://code.nsnam.org/ you will find a repository named ns-3.1 which is the first stable release of ns-3.  You will also find a separate repository named ns-3.1-ref-traces that  holds the reference traces for the ns-3.1 release.  It is crucial to keep these&lt;br /&gt;
files consistent if you want to do any regression testing of your repository.  This is a good idea to do at least once to verify everything has built correctly.&lt;br /&gt;
&lt;br /&gt;
The current development snapshot (unreleased) of ns-3 may be found at http://code.nsnam.org/ns-3-dev/ and the associated reference traces may be found http://code.nsnam.org/ns-3-dev-ref-traces/ .  The developers attempt to keep these repository in consistent, working states but they are in a development area with unreleased code present, so you may want to consider staying with an official release if you do not need newly-introduced features.&lt;br /&gt;
&lt;br /&gt;
Since the release numbers are going to be changing, we will stick with the more constant ns-3-dev here, but you can replace the string ''ns-3-dev'' with your choice of release (e.g., ns-3.4 and ns-3.4-ref-traces) in the text below.  You can find the latest version of the code either by inspection of the repository list or by going to the ''Getting Started'' web page and looking for the latest release identifier.&lt;br /&gt;
&lt;br /&gt;
To download the most common options type the following into your shell (remember you can substitute the name of your chosen release number instead of ns-3-dev)&lt;br /&gt;
&lt;br /&gt;
  ./download.py -n ns-3-dev -r ns-3-dev-ref-traces&lt;br /&gt;
&lt;br /&gt;
After download process completes, you should have several new directories under ~/repos/ns-3-allinone:&lt;br /&gt;
&lt;br /&gt;
  build.py*     constants.pyc  download.py*  ns-3-dev-ref-traces/  pybindgen/  util.py&lt;br /&gt;
  constants.py  dist.py*       ns-3-dev/     nsc/                  README      util.pyc&lt;br /&gt;
&lt;br /&gt;
Go ahead and change into ns-3-dev under your ~/repos/ns-3-allinone directory.  You should see something like the following there:&lt;br /&gt;
&lt;br /&gt;
  AUTHORS       examples/  regression/    scratch/  waf*&lt;br /&gt;
  bindings/     LICENSE    regression.py  src/      waf.bat*&lt;br /&gt;
  CHANGES.html  ns3/       RELEASE_NOTES  utils/    wscript&lt;br /&gt;
  doc/          README     samples/       VERSION   wutils.py&lt;br /&gt;
&lt;br /&gt;
You are now ready to build the ns-3 distribution.&lt;br /&gt;
&lt;br /&gt;
=== Downloading ns-3 Using a Tarball ===&lt;br /&gt;
&lt;br /&gt;
The process for downloading ns-3 via tarball is simpler than the Mercurial process since all of the pieces are pre-packaged for you.  You just have to pick a release, download it and decompress it.&lt;br /&gt;
&lt;br /&gt;
As mentioned above, one practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories.  One could also keep a tarballs directory.  If you adopt the tarballs directory approach, you can get a copy of a release by typing the following into your Linux shell (substitute the appropriate version numbers, of course):&lt;br /&gt;
&lt;br /&gt;
  cd&lt;br /&gt;
  mkdir tarballs&lt;br /&gt;
  cd tarballs&lt;br /&gt;
  wget http://www.nsnam.org/releases/ns-allinone-3.6.tar.bz2&lt;br /&gt;
  tar xjf ns-allinone-3.6.tar.bz2&lt;br /&gt;
&lt;br /&gt;
If you change into the directory '''ns-allinone-3.6''' you should see a number of files:&lt;br /&gt;
&lt;br /&gt;
  build.py*     ns-3.6/             nsc-0.5.1/             README  &lt;br /&gt;
  constants.py  ns-3.6-ref-traces/  pybindgen-0.12.0.703/  util.py&lt;br /&gt;
&lt;br /&gt;
You are now ready to build the ns-3 distribution.&lt;br /&gt;
&lt;br /&gt;
== Building ns-3 with ns-3-allinone ==&lt;br /&gt;
&lt;br /&gt;
The first time you build the ns-3 project you should build using the allinone environment.  This will get the project configured for you&lt;br /&gt;
in the most commonly useful way.&lt;br /&gt;
&lt;br /&gt;
Change into the directory you created in the download section above.  If you downloaded using Mercurial you should have a directory called ns-3-allinone under your ~/repos directory.  If you downloaded using a tarball you should have a directory called something like ns-3-allinone-3.4 under your ~/tarballs directory.  Type the following:&lt;br /&gt;
&lt;br /&gt;
  ./build.py&lt;br /&gt;
&lt;br /&gt;
You will see lots of typical compiler output messages displayed as the build script builds the various pieces you downloaded.  Eventually you should see the following magic words:&lt;br /&gt;
&lt;br /&gt;
  Build finished successfully (00:02:37)&lt;br /&gt;
  Leaving directory `./ns-3-dev'&lt;br /&gt;
&lt;br /&gt;
Once the project has built you typically will not use ns-3-allinone scripts.  You will now interact directly with Waf and we '''do it in the ns-3-dev directory and not in the ns-3-allinone directory'''.&lt;br /&gt;
&lt;br /&gt;
=== Configuration with Waf ===&lt;br /&gt;
&lt;br /&gt;
To see valid configure options, type ./waf --help.  The most important option is -d &amp;lt;debug level&amp;gt;.  Valid debug levels (which are listed in waf --help) are:  &amp;quot;debug&amp;quot; or &amp;quot;optimized&amp;quot;.  It is also possible to change the flags used for compilation with (e.g.): &lt;br /&gt;
&lt;br /&gt;
  CXXFLAGS=&amp;quot;-O3&amp;quot; ./waf configure &lt;br /&gt;
&lt;br /&gt;
or, alternately, the gcc compiler&lt;br /&gt;
&lt;br /&gt;
  CXX=g++-3.4 ./waf configure&lt;br /&gt;
&lt;br /&gt;
'''Note:'''  Unlike some other build tools, to change the build target, the option must be supplied during the configure stage rather than&lt;br /&gt;
the build stage (i.e., &amp;quot;./waf -d optimized&amp;quot; will not work; instead, do&lt;br /&gt;
&lt;br /&gt;
  ./waf -d optimized configure; ./waf &lt;br /&gt;
&lt;br /&gt;
The resulting binaries are placed in build/&amp;lt;debuglevel&amp;gt;/srcpath.  For example, in a debug build you can find the executable for the first.cc example as build/debug/examples/first.  You can debug the executable directly by:&lt;br /&gt;
&lt;br /&gt;
  ./waf --shell&lt;br /&gt;
  cd build/debug/examples&lt;br /&gt;
  gdb first&lt;br /&gt;
&lt;br /&gt;
Of course, you can run gdb in emacs, or use your favorite debugger such as ddd or insight just as easily.  In an optimized build you can find the executable for the first.cc example as build/optimized/examples/first.&lt;br /&gt;
&lt;br /&gt;
In order to forcibly disable python bindings, you can provide the following option:&lt;br /&gt;
&lt;br /&gt;
  ./waf --disable-python configure&lt;br /&gt;
&lt;br /&gt;
In order to tell the build system to use the sudo program to set the suid bit if required, you can provide the following option:&lt;br /&gt;
&lt;br /&gt;
  ./waf --enable-sudo configure&lt;br /&gt;
&lt;br /&gt;
To start over a configuration from scratch, type:&lt;br /&gt;
&lt;br /&gt;
  ./waf distclean&lt;br /&gt;
&lt;br /&gt;
Or if you get stuck and all else fails:&lt;br /&gt;
&lt;br /&gt;
  rm -rf build&lt;br /&gt;
&lt;br /&gt;
followed by changing back into ns-3-allinone and doing:&lt;br /&gt;
&lt;br /&gt;
  ./build.py&lt;br /&gt;
&lt;br /&gt;
will basically reset your build state.&lt;br /&gt;
&lt;br /&gt;
To see all waf options:&lt;br /&gt;
&lt;br /&gt;
  ./waf --help&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
&lt;br /&gt;
ns-3 has unit tests that can be run to verify the installation:&lt;br /&gt;
&lt;br /&gt;
  ./test.py&lt;br /&gt;
&lt;br /&gt;
which should produce output like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PASS: TestSuite histogram&lt;br /&gt;
PASS: TestSuite ns3-wifi-interference&lt;br /&gt;
PASS: TestSuite ns3-tcp-cwnd&lt;br /&gt;
PASS: TestSuite ns3-tcp-interoperability&lt;br /&gt;
PASS: TestSuite sample&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the regression tests mentioned above:&lt;br /&gt;
&lt;br /&gt;
  ./waf --regression&lt;br /&gt;
&lt;br /&gt;
== Using Python ==&lt;br /&gt;
&lt;br /&gt;
See [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings this page].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
See [http://www.nsnam.org/wiki/index.php/Troubleshooting this page].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Craigdo|Craigdo]] 04:40, 5 November 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Ns-3.8&amp;diff=4068</id>
		<title>Ns-3.8</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Ns-3.8&amp;diff=4068"/>
		<updated>2010-03-09T18:09:59Z</updated>

		<summary type="html">&lt;p&gt;Hippo: /* Matrix propagation loss model */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the ongoing release planning for ns-3.8.  The release manager is Josh Pelkey &amp;lt;jpelkey@gatech.edu&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Tentative ns-3.8 Release Schedule == &lt;br /&gt;
&lt;br /&gt;
# &amp;lt;s&amp;gt;January 27 -- ns-3.7 posted&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;January 27 -- ns-3.8 '''''Open phase begins'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;March 8 -- Deadline for new feature merge&amp;lt;/s&amp;gt;&lt;br /&gt;
# March 8 -- Begin the phase of small feature development and bug fixing&lt;br /&gt;
# March 27 -- Small feature development and bug fixing ends&lt;br /&gt;
# March 27 -- '''''Open phase ends'''''&lt;br /&gt;
# March 27 -- '''''Maintenance phase begins'''''&lt;br /&gt;
# April 13 -- '''''Maintenance phase ends'''''&lt;br /&gt;
# April 13 -- '''''Code freeze phase begins'''''&lt;br /&gt;
# April 13 -- ns-3.8-RC1&lt;br /&gt;
# April 15 -- ns-3.8-RC2&lt;br /&gt;
# April 19 -- ns-3.8-RC3&lt;br /&gt;
# April 22 -- ns-3.8-RC4&lt;br /&gt;
# April 27 -- ns-3.8 posted&lt;br /&gt;
# April 27 -- '''''Code freeze phase ends'''''&lt;br /&gt;
# April 27 -- ns-3.9 Open phase begins&lt;br /&gt;
&lt;br /&gt;
As described in the [[Roadmap]] there are three broad sections in the release schedule.  During the open phase, people wanting to include a new feature in ns-3.8 should contact Josh and arrange to have their features merged into ns-3-dev.  You will be expected to provide the following:&lt;br /&gt;
&lt;br /&gt;
* A mercurial patch, bundle or repo against the current version of ns-3-dev that contains your proposed feature addition.  You need to make sure that we can apply this patch and build and run (debug and optimized as appropriate) all unit and regression tests successfully on all of our target machines&lt;br /&gt;
* A summary of the additions you are proposing and an explanation of any changes to existing code that had to be done in order to support your feature (this will be used to generate release notes and will be provided to maintainers if a code review is indicated)&lt;br /&gt;
* Some kind of unit or system test that can be used to determine if your feature is actually working at each stage of the integration&lt;br /&gt;
&lt;br /&gt;
One of us will take a quick look at your proposed addition and determine if a code review is required.  According to the ''book of instructions'' a code review requiring positive acknowledgment by maintainers is indicated if:&lt;br /&gt;
&lt;br /&gt;
* Your proposed feature does not work with all models or on all platforms&lt;br /&gt;
* Your feature changes pre-existing APIs&lt;br /&gt;
* Your feature crosses maintainer boundaries&lt;br /&gt;
&lt;br /&gt;
Just to be safe, we will probably run a feature submission by at least one maintainer according to the general area of applicability of the feature.  For example, if you submit an entirely new device driver model, as a courtesy we will run this submission by the maintainers of the current devices.  The maintainers won't have any responsibility to positively ack the submission, but we will take some time to allow a reasonable review.&lt;br /&gt;
&lt;br /&gt;
The open phase is divided into two parts: new feature merge period and small feature development and bug fixing. &lt;br /&gt;
&lt;br /&gt;
During the new feature merge period we can:&lt;br /&gt;
* Review the code that might be merged&lt;br /&gt;
* Clean up the bug tracker: solve as much bugs as possible&lt;br /&gt;
* Merge the new features that has +1 and from maintainers&lt;br /&gt;
&lt;br /&gt;
After March 8th, the new feature merge period ends and small feature development and bug fixes begins. During the latter, no more merges are accepted and we can:&lt;br /&gt;
* Accept limited, small, self contained changes/features to ns-3-dev and to merged new features. As specified before, no more merges are accepted&lt;br /&gt;
* Review the code to be merged for next releases&lt;br /&gt;
* Cleanup the ns-3-dev bug tracker, solve as much bugs as possible&lt;br /&gt;
&lt;br /&gt;
The end of the  small feature development and bug fixes coincides (March 27th) with the beginning of the maintenance phase.  No new features may be added, but the maintainers may check in fixes to bugs; and people with new features that have been accepted and previously merged may fix bugs in existing features.  Please don't try to sneak in more new features or you may have your whole feature set removed at the release manager's discretion.  You can ask if you want to add small, self-contained features, but there are no guarantees that we will okay them.&lt;br /&gt;
&lt;br /&gt;
On April 13th, 2010, we are going to enter the code freeze phase.  This indicates that we are in the final stages of the release and our primary goal is stability.  During the code freeze phase, only P1 bugfixes will be allowed to be checked in.  Our ''goal'' will be to reduce the number of P1 bugs to zero before the release of ns-3.8.&lt;br /&gt;
&lt;br /&gt;
'''''We will reserve the right to veto (and remove) any new feature addition if it begins to cause problems and looks like it threatens the stability of the release at any time in the release process.'''''&lt;br /&gt;
&lt;br /&gt;
== Candidate Contributions for Inclusion in ns-3.8 ==&lt;br /&gt;
&lt;br /&gt;
=== Underwater Acoustic Network Device ===&lt;br /&gt;
&lt;br /&gt;
* ''review location'': http://codereview.appspot.com/87043&lt;br /&gt;
* ''reviewer(s)'':  Craig Dowell, Faker Moatamri&lt;br /&gt;
* ''status'':  postponed to NS-3.8&lt;br /&gt;
* ''Developer'': Leonard Tracy &lt;br /&gt;
* ''background'': http://mailman.isi.edu/pipermail/ns-developers/2009-June/006148.html&lt;br /&gt;
&lt;br /&gt;
=== NHDP ===&lt;br /&gt;
* ''Code'': No available code for the moment&lt;br /&gt;
* ''Developer'': Tom Wambold&lt;br /&gt;
* ''Status'': waiting to the code to be ready to review&lt;br /&gt;
&lt;br /&gt;
=== Internet stack roadmap ===&lt;br /&gt;
* Work on various parts of the TCP/IP stack is tracked [[Internet-stack-maintenance | on this wiki page]]&lt;br /&gt;
&lt;br /&gt;
=== NAT traversal ===&lt;br /&gt;
* ''background'': http://www.nsnam.org/wiki/index.php/GSOC2009NetworkAddressTranslation&lt;br /&gt;
&lt;br /&gt;
=== Topology read system (Inet/Orbis) ===&lt;br /&gt;
* ''Review location'':  http://codereview.appspot.com/204055/show&lt;br /&gt;
* ''Reviewers'': Pavel Boyko&lt;br /&gt;
* ''Developer'': Tommaso Pecorella&lt;br /&gt;
* ''Status'': Waiting for +1 from Mathieu&lt;br /&gt;
* ''background'':http://mailman.isi.edu/pipermail/ns-developers/2010-January/007314.html&lt;br /&gt;
&lt;br /&gt;
== ns-3.8 Features Merged ==&lt;br /&gt;
&lt;br /&gt;
=== Matrix propagation loss model ===&lt;br /&gt;
* ''Review location'':  http://codereview.appspot.com/207104/show&lt;br /&gt;
* ''Reviewers'': Mathieu Lacage, Nicola Baldo	&lt;br /&gt;
* ''Developer'': Pavel Boyko&lt;br /&gt;
&lt;br /&gt;
=== MPI-based parallelization ===&lt;br /&gt;
&lt;br /&gt;
* ''review location'':  http://codereview.appspot.com/109068&lt;br /&gt;
* ''code location'':  http://code.nsnam.org/jpelkey3/ns-3-distributed&lt;br /&gt;
* ''reviewers'': Faker Moatamri, Craig Dowell, Tom Henderson, Mathieu Lacage&lt;br /&gt;
* ''Developer'': George Riley and Josh Pelkey&lt;br /&gt;
* ''background'':  http://mailman.isi.edu/pipermail/ns-developers/2009-November/006927.html&lt;br /&gt;
&lt;br /&gt;
=== WiMAX ===&lt;br /&gt;
&lt;br /&gt;
* ''code location'':  http://code.nsnam.org/iamine/ns-3-wimax&lt;br /&gt;
* ''reviewers'': Faker Moatamri, Mathieu Lacage, Tom Henderson&lt;br /&gt;
* ''Developer'': Amine Ismail &lt;br /&gt;
* ''background'': http://mailman.isi.edu/pipermail/ns-developers/2009-August/006329.html&lt;br /&gt;
&lt;br /&gt;
=== Redo ASCII and pcap Traces  ===&lt;br /&gt;
&lt;br /&gt;
* ''review location'': http://codereview.appspot.com/196058&lt;br /&gt;
* ''reviewer(s)'':  Mathieu Lacage&lt;br /&gt;
* ''Developer'': Craig Dowell &lt;br /&gt;
* ''background'': http://mailman.isi.edu/pipermail/ns-developers/2010-January/007352.html&lt;br /&gt;
&lt;br /&gt;
=== Gauss-Markov Mobility Model ===&lt;br /&gt;
* ''Review location'':  http://codereview.appspot.com/223048&lt;br /&gt;
* ''Reviewers'': Josh Pelkey, Mathieu Lacage&lt;br /&gt;
* ''Developer'': Dan Broyles&lt;br /&gt;
&lt;br /&gt;
=== Steady state random waypoint mobility model ===&lt;br /&gt;
* ''Review location'':  http://codereview.appspot.com/193105/show&lt;br /&gt;
* ''Reviewers'': Mathieu Lacage&lt;br /&gt;
* ''Developer'': Denis Fakhriev&lt;br /&gt;
* ''Background'': http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.2.7557&lt;br /&gt;
&lt;br /&gt;
=== 802.11n block ack ===&lt;br /&gt;
* ''Review location'': http://codereview.appspot.com/144050&lt;br /&gt;
* ''Reviewers'': Faker Moatamri, Nicola Baldo, Andrey Mazo, Andreev Kirill, Mathieu Lacage&lt;br /&gt;
* ''Developer'': Mirko Blanchi&lt;br /&gt;
&lt;br /&gt;
=== Enhancements to src/core/random-variable.cc/h ===&lt;br /&gt;
* ''Review location'': http://www.nsnam.org/bugzilla/show_bug.cgi?id=797&lt;br /&gt;
* ''Reviewers'': Michele Weigle  &lt;br /&gt;
* ''Developer'': Tommaso Pecorella&lt;br /&gt;
&lt;br /&gt;
=== Two ray ground radio propagation model ===&lt;br /&gt;
* ''Review location'':  http://www.nsnam.org/bugzilla/show_bug.cgi?id=787&lt;br /&gt;
* ''Reviewers'': Pavel Boyko, Mathieu Lacage&lt;br /&gt;
* ''Developer'': Tom Hewer&lt;br /&gt;
* ''Background'': http://en.wikipedia.org/wiki/2-Ray_Ground_Reflection_Model&lt;br /&gt;
&lt;br /&gt;
=== Move propagation models to src/common ===&lt;br /&gt;
* ''Developer'': Amine Ismail&lt;br /&gt;
* ''Background'': http://mailman.isi.edu/pipermail/ns-developers/2010-January/007354.html&lt;br /&gt;
&lt;br /&gt;
=== Pareto rng constructors using scale and shape instead of mean and shape ===&lt;br /&gt;
* ''Review location'':  http://codereview.appspot.com/207098/show&lt;br /&gt;
* ''Reviewers'': Mathieu Lacage, Tom Henderson&lt;br /&gt;
* ''Developer'': Tommaso Pecorella&lt;br /&gt;
&lt;br /&gt;
== The ns-3.8 Bug List == &lt;br /&gt;
&lt;br /&gt;
== High Priority Blockers ==&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;product=ns-3&amp;amp;long_desc_type=substring&amp;amp;long_desc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_file_loc=&amp;amp;keywords_type=allwords&amp;amp;keywords=&amp;amp;deadlinefrom=&amp;amp;deadlineto=&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;priority=P1&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;cmdtype=doit&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;amp;value0-0-0= blockers list]&lt;br /&gt;
&lt;br /&gt;
=== P1 Bugs ===&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=806 Bug 806] -  TCP doesn't work over a CSMA link&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: ns-bugs&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Probably only affects ns-3.7 release&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Tom is working on a small test suite for this case&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== High Priority Non-Blockers ==&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;product=ns-3&amp;amp;long_desc_type=substring&amp;amp;long_desc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_file_loc=&amp;amp;keywords_type=allwords&amp;amp;keywords=&amp;amp;deadlinefrom=&amp;amp;deadlineto=&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;priority=P2&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;cmdtype=doit&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;amp;value0-0-0= High priority non blockers]&lt;br /&gt;
&lt;br /&gt;
=== P2 Bugs with patches ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=772 Bug 772] - AODV is unable to correctly buffer packets waiting for route reply&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Pavel Boyko&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Patch available, needs review&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=810 Bug 810] - In TCP, Socket::GetSockName() does not return the local socket address&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Josh Pelkey&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Patch available, looks ready to go&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=341 Bug 341] - Get unexpected dropped packets when using SetSendCallback with heavy traffic&lt;br /&gt;
* Assigned to: Craig Dowell&lt;br /&gt;
* Patch available, but old and possibly untested (from 2008!)&lt;br /&gt;
* submitter isn't using ns-3 anymore&lt;br /&gt;
* Mathieu has suggested (back in 2008) that this could be tricky&lt;br /&gt;
* Craig thinks this is invalid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=794 Bug 794] - Ipv4Mask constructor for &amp;quot;/yy&amp;quot;-notation is wrong&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Craig Dowell&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;+1 from Tom and Craig, looks ready to go&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=231 Bug 231] - SocketAddressTag needs to be removed from a packet before forwarding the packet to the user&lt;br /&gt;
* Assigned to: Faker Moatamri&lt;br /&gt;
* Possibly trivial now with RemovePacketTag API&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=778 Bug 778] - OLSR ignores specified outgoing interface in RouteOutput()&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Gustavo J. A. M. Carneiro&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Patch from Tom, Gustavo pretty much +1&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;looks ready to go&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=788 Bug 788] - OLSR_NEIGH_HOLD_TIME should be 3 times OLSR_REFRESH_INTERVAL&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Gustavo J. A. M. Carneiro&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;looks ready to go&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=747 Bug 747] - Listening TCP socket closes on RST&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Josh Pelkey&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;+1 from me, looks ready to go&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=748 Bug 748] - Cloned TCP socket uses wrong source address&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Josh Pelkey&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Patch proposal from Fabian Mauchle&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;need to look at this&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=555 Bug 555] - DCF immediate access bug&lt;br /&gt;
* Assigned to: Mathieu Lacage&lt;br /&gt;
* patch needs review&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=602 Bug 602] - WifiRemoteStation lacks information about the access class of outgoing packets&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Mathieu Lacage&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;patch needs review&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;possibly fixed in changeset 0f012e7d9128&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=521 Bug 521] - Ipv4 global routing inefficient&lt;br /&gt;
* Assigned to: Tom Henderson&lt;br /&gt;
* I think this one was re-opened, and not sure if the patch is still valid&lt;br /&gt;
* I know that Tom has mentioned he is working on this one&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=385 Bug 385] -  Add a generic &amp;quot;sequence number&amp;quot; class&lt;br /&gt;
* Assigned to: Mathieu Lacage&lt;br /&gt;
* patch exists, but there is still some issues about implementation&lt;br /&gt;
* tracing is important for this one&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=184 Bug 184] - GtkConfigStore do not support ConfigureDefault&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Faker Moatamri&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;another oldie&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Mathieu says, &amp;quot;This bug is now really about making GtkConfigStore do what ConfigStore already does and provide a GUI for the 'default' + 'global' values.&amp;quot;&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Faker just updated the patch (Feb. 16, 2010), needs review&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== P2 Bugs without patches ===&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=818 Bug 818] - TCP Socket implementation does not set ACK flag on retransmits&lt;br /&gt;
* Assigned to: Josh Pelkey&lt;br /&gt;
* Possible fix mentioned, but it causes crash in tcp test suite&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=822 Bug 822] - Default attributes in abstract base classes not working&lt;br /&gt;
* Assigned to: Mathieu Lacage&lt;br /&gt;
* Has test case to show bug&lt;br /&gt;
* Possibly two bugs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=812 Bug 812] -  Assert when getting socket in RecvReply for AODV&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Pavel Boyko&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;changed to P2 crit, as this is blocking some people's research&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;has example showing assert&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=796 Bug 796] - TCP bug in ns-3-dev branch : Crash detected during retesting of Chord on ns-3-dev branch&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Craig Dowell&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;logs attached to this one&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;worked in ns-3.6 but not ns-3.7&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;possibly bug 806 fix fixed this&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=409 Bug 409] - Routing messages can exceed MTU, and fragmentation not supported&lt;br /&gt;
* Assigned to: Mathieu Lacage&lt;br /&gt;
* Quick fix available&lt;br /&gt;
* IP fragmentation support for UDP is needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=631 Bug 631] - RealtimeSimulatorImpl not compatible with python bindings&lt;br /&gt;
* Assigned to: Mathieu Lacage&lt;br /&gt;
* lots of discussion here, no consensus it seems&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Ns-3.8&amp;diff=4067</id>
		<title>Ns-3.8</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Ns-3.8&amp;diff=4067"/>
		<updated>2010-03-09T18:08:29Z</updated>

		<summary type="html">&lt;p&gt;Hippo: matrix propagation loss model merged&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the ongoing release planning for ns-3.8.  The release manager is Josh Pelkey &amp;lt;jpelkey@gatech.edu&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Tentative ns-3.8 Release Schedule == &lt;br /&gt;
&lt;br /&gt;
# &amp;lt;s&amp;gt;January 27 -- ns-3.7 posted&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;January 27 -- ns-3.8 '''''Open phase begins'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;March 8 -- Deadline for new feature merge&amp;lt;/s&amp;gt;&lt;br /&gt;
# March 8 -- Begin the phase of small feature development and bug fixing&lt;br /&gt;
# March 27 -- Small feature development and bug fixing ends&lt;br /&gt;
# March 27 -- '''''Open phase ends'''''&lt;br /&gt;
# March 27 -- '''''Maintenance phase begins'''''&lt;br /&gt;
# April 13 -- '''''Maintenance phase ends'''''&lt;br /&gt;
# April 13 -- '''''Code freeze phase begins'''''&lt;br /&gt;
# April 13 -- ns-3.8-RC1&lt;br /&gt;
# April 15 -- ns-3.8-RC2&lt;br /&gt;
# April 19 -- ns-3.8-RC3&lt;br /&gt;
# April 22 -- ns-3.8-RC4&lt;br /&gt;
# April 27 -- ns-3.8 posted&lt;br /&gt;
# April 27 -- '''''Code freeze phase ends'''''&lt;br /&gt;
# April 27 -- ns-3.9 Open phase begins&lt;br /&gt;
&lt;br /&gt;
As described in the [[Roadmap]] there are three broad sections in the release schedule.  During the open phase, people wanting to include a new feature in ns-3.8 should contact Josh and arrange to have their features merged into ns-3-dev.  You will be expected to provide the following:&lt;br /&gt;
&lt;br /&gt;
* A mercurial patch, bundle or repo against the current version of ns-3-dev that contains your proposed feature addition.  You need to make sure that we can apply this patch and build and run (debug and optimized as appropriate) all unit and regression tests successfully on all of our target machines&lt;br /&gt;
* A summary of the additions you are proposing and an explanation of any changes to existing code that had to be done in order to support your feature (this will be used to generate release notes and will be provided to maintainers if a code review is indicated)&lt;br /&gt;
* Some kind of unit or system test that can be used to determine if your feature is actually working at each stage of the integration&lt;br /&gt;
&lt;br /&gt;
One of us will take a quick look at your proposed addition and determine if a code review is required.  According to the ''book of instructions'' a code review requiring positive acknowledgment by maintainers is indicated if:&lt;br /&gt;
&lt;br /&gt;
* Your proposed feature does not work with all models or on all platforms&lt;br /&gt;
* Your feature changes pre-existing APIs&lt;br /&gt;
* Your feature crosses maintainer boundaries&lt;br /&gt;
&lt;br /&gt;
Just to be safe, we will probably run a feature submission by at least one maintainer according to the general area of applicability of the feature.  For example, if you submit an entirely new device driver model, as a courtesy we will run this submission by the maintainers of the current devices.  The maintainers won't have any responsibility to positively ack the submission, but we will take some time to allow a reasonable review.&lt;br /&gt;
&lt;br /&gt;
The open phase is divided into two parts: new feature merge period and small feature development and bug fixing. &lt;br /&gt;
&lt;br /&gt;
During the new feature merge period we can:&lt;br /&gt;
* Review the code that might be merged&lt;br /&gt;
* Clean up the bug tracker: solve as much bugs as possible&lt;br /&gt;
* Merge the new features that has +1 and from maintainers&lt;br /&gt;
&lt;br /&gt;
After March 8th, the new feature merge period ends and small feature development and bug fixes begins. During the latter, no more merges are accepted and we can:&lt;br /&gt;
* Accept limited, small, self contained changes/features to ns-3-dev and to merged new features. As specified before, no more merges are accepted&lt;br /&gt;
* Review the code to be merged for next releases&lt;br /&gt;
* Cleanup the ns-3-dev bug tracker, solve as much bugs as possible&lt;br /&gt;
&lt;br /&gt;
The end of the  small feature development and bug fixes coincides (March 27th) with the beginning of the maintenance phase.  No new features may be added, but the maintainers may check in fixes to bugs; and people with new features that have been accepted and previously merged may fix bugs in existing features.  Please don't try to sneak in more new features or you may have your whole feature set removed at the release manager's discretion.  You can ask if you want to add small, self-contained features, but there are no guarantees that we will okay them.&lt;br /&gt;
&lt;br /&gt;
On April 13th, 2010, we are going to enter the code freeze phase.  This indicates that we are in the final stages of the release and our primary goal is stability.  During the code freeze phase, only P1 bugfixes will be allowed to be checked in.  Our ''goal'' will be to reduce the number of P1 bugs to zero before the release of ns-3.8.&lt;br /&gt;
&lt;br /&gt;
'''''We will reserve the right to veto (and remove) any new feature addition if it begins to cause problems and looks like it threatens the stability of the release at any time in the release process.'''''&lt;br /&gt;
&lt;br /&gt;
== Candidate Contributions for Inclusion in ns-3.8 ==&lt;br /&gt;
&lt;br /&gt;
=== Underwater Acoustic Network Device ===&lt;br /&gt;
&lt;br /&gt;
* ''review location'': http://codereview.appspot.com/87043&lt;br /&gt;
* ''reviewer(s)'':  Craig Dowell, Faker Moatamri&lt;br /&gt;
* ''status'':  postponed to NS-3.8&lt;br /&gt;
* ''Developer'': Leonard Tracy &lt;br /&gt;
* ''background'': http://mailman.isi.edu/pipermail/ns-developers/2009-June/006148.html&lt;br /&gt;
&lt;br /&gt;
=== NHDP ===&lt;br /&gt;
* ''Code'': No available code for the moment&lt;br /&gt;
* ''Developer'': Tom Wambold&lt;br /&gt;
* ''Status'': waiting to the code to be ready to review&lt;br /&gt;
&lt;br /&gt;
=== Internet stack roadmap ===&lt;br /&gt;
* Work on various parts of the TCP/IP stack is tracked [[Internet-stack-maintenance | on this wiki page]]&lt;br /&gt;
&lt;br /&gt;
=== NAT traversal ===&lt;br /&gt;
* ''background'': http://www.nsnam.org/wiki/index.php/GSOC2009NetworkAddressTranslation&lt;br /&gt;
&lt;br /&gt;
=== Topology read system (Inet/Orbis) ===&lt;br /&gt;
* ''Review location'':  http://codereview.appspot.com/204055/show&lt;br /&gt;
* ''Reviewers'': Pavel Boyko&lt;br /&gt;
* ''Developer'': Tommaso Pecorella&lt;br /&gt;
* ''Status'': Waiting for +1 from Mathieu&lt;br /&gt;
* ''background'':http://mailman.isi.edu/pipermail/ns-developers/2010-January/007314.html&lt;br /&gt;
&lt;br /&gt;
== ns-3.8 Features Merged ==&lt;br /&gt;
&lt;br /&gt;
=== Matrix propagation loss model ===&lt;br /&gt;
* ''Review location'':  http://codereview.appspot.com/207104/show&lt;br /&gt;
* ''Reviewers'': Mathieu Lacage, Nicola Baldo	&lt;br /&gt;
* ''Developer'': Pavel Boyko&lt;br /&gt;
* ''Status'': Ready to go, just needs to be merged&lt;br /&gt;
&lt;br /&gt;
=== MPI-based parallelization ===&lt;br /&gt;
&lt;br /&gt;
* ''review location'':  http://codereview.appspot.com/109068&lt;br /&gt;
* ''code location'':  http://code.nsnam.org/jpelkey3/ns-3-distributed&lt;br /&gt;
* ''reviewers'': Faker Moatamri, Craig Dowell, Tom Henderson, Mathieu Lacage&lt;br /&gt;
* ''Developer'': George Riley and Josh Pelkey&lt;br /&gt;
* ''background'':  http://mailman.isi.edu/pipermail/ns-developers/2009-November/006927.html&lt;br /&gt;
&lt;br /&gt;
=== WiMAX ===&lt;br /&gt;
&lt;br /&gt;
* ''code location'':  http://code.nsnam.org/iamine/ns-3-wimax&lt;br /&gt;
* ''reviewers'': Faker Moatamri, Mathieu Lacage, Tom Henderson&lt;br /&gt;
* ''Developer'': Amine Ismail &lt;br /&gt;
* ''background'': http://mailman.isi.edu/pipermail/ns-developers/2009-August/006329.html&lt;br /&gt;
&lt;br /&gt;
=== Redo ASCII and pcap Traces  ===&lt;br /&gt;
&lt;br /&gt;
* ''review location'': http://codereview.appspot.com/196058&lt;br /&gt;
* ''reviewer(s)'':  Mathieu Lacage&lt;br /&gt;
* ''Developer'': Craig Dowell &lt;br /&gt;
* ''background'': http://mailman.isi.edu/pipermail/ns-developers/2010-January/007352.html&lt;br /&gt;
&lt;br /&gt;
=== Gauss-Markov Mobility Model ===&lt;br /&gt;
* ''Review location'':  http://codereview.appspot.com/223048&lt;br /&gt;
* ''Reviewers'': Josh Pelkey, Mathieu Lacage&lt;br /&gt;
* ''Developer'': Dan Broyles&lt;br /&gt;
&lt;br /&gt;
=== Steady state random waypoint mobility model ===&lt;br /&gt;
* ''Review location'':  http://codereview.appspot.com/193105/show&lt;br /&gt;
* ''Reviewers'': Mathieu Lacage&lt;br /&gt;
* ''Developer'': Denis Fakhriev&lt;br /&gt;
* ''Background'': http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.2.7557&lt;br /&gt;
&lt;br /&gt;
=== 802.11n block ack ===&lt;br /&gt;
* ''Review location'': http://codereview.appspot.com/144050&lt;br /&gt;
* ''Reviewers'': Faker Moatamri, Nicola Baldo, Andrey Mazo, Andreev Kirill, Mathieu Lacage&lt;br /&gt;
* ''Developer'': Mirko Blanchi&lt;br /&gt;
&lt;br /&gt;
=== Enhancements to src/core/random-variable.cc/h ===&lt;br /&gt;
* ''Review location'': http://www.nsnam.org/bugzilla/show_bug.cgi?id=797&lt;br /&gt;
* ''Reviewers'': Michele Weigle  &lt;br /&gt;
* ''Developer'': Tommaso Pecorella&lt;br /&gt;
&lt;br /&gt;
=== Two ray ground radio propagation model ===&lt;br /&gt;
* ''Review location'':  http://www.nsnam.org/bugzilla/show_bug.cgi?id=787&lt;br /&gt;
* ''Reviewers'': Pavel Boyko, Mathieu Lacage&lt;br /&gt;
* ''Developer'': Tom Hewer&lt;br /&gt;
* ''Background'': http://en.wikipedia.org/wiki/2-Ray_Ground_Reflection_Model&lt;br /&gt;
&lt;br /&gt;
=== Move propagation models to src/common ===&lt;br /&gt;
* ''Developer'': Amine Ismail&lt;br /&gt;
* ''Background'': http://mailman.isi.edu/pipermail/ns-developers/2010-January/007354.html&lt;br /&gt;
&lt;br /&gt;
=== Pareto rng constructors using scale and shape instead of mean and shape ===&lt;br /&gt;
* ''Review location'':  http://codereview.appspot.com/207098/show&lt;br /&gt;
* ''Reviewers'': Mathieu Lacage, Tom Henderson&lt;br /&gt;
* ''Developer'': Tommaso Pecorella&lt;br /&gt;
&lt;br /&gt;
== The ns-3.8 Bug List == &lt;br /&gt;
&lt;br /&gt;
== High Priority Blockers ==&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;product=ns-3&amp;amp;long_desc_type=substring&amp;amp;long_desc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_file_loc=&amp;amp;keywords_type=allwords&amp;amp;keywords=&amp;amp;deadlinefrom=&amp;amp;deadlineto=&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;priority=P1&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;cmdtype=doit&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;amp;value0-0-0= blockers list]&lt;br /&gt;
&lt;br /&gt;
=== P1 Bugs ===&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=806 Bug 806] -  TCP doesn't work over a CSMA link&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: ns-bugs&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Probably only affects ns-3.7 release&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Tom is working on a small test suite for this case&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== High Priority Non-Blockers ==&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;product=ns-3&amp;amp;long_desc_type=substring&amp;amp;long_desc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_file_loc=&amp;amp;keywords_type=allwords&amp;amp;keywords=&amp;amp;deadlinefrom=&amp;amp;deadlineto=&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;priority=P2&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;cmdtype=doit&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;amp;value0-0-0= High priority non blockers]&lt;br /&gt;
&lt;br /&gt;
=== P2 Bugs with patches ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=772 Bug 772] - AODV is unable to correctly buffer packets waiting for route reply&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Pavel Boyko&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Patch available, needs review&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=810 Bug 810] - In TCP, Socket::GetSockName() does not return the local socket address&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Josh Pelkey&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Patch available, looks ready to go&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=341 Bug 341] - Get unexpected dropped packets when using SetSendCallback with heavy traffic&lt;br /&gt;
* Assigned to: Craig Dowell&lt;br /&gt;
* Patch available, but old and possibly untested (from 2008!)&lt;br /&gt;
* submitter isn't using ns-3 anymore&lt;br /&gt;
* Mathieu has suggested (back in 2008) that this could be tricky&lt;br /&gt;
* Craig thinks this is invalid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=794 Bug 794] - Ipv4Mask constructor for &amp;quot;/yy&amp;quot;-notation is wrong&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Craig Dowell&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;+1 from Tom and Craig, looks ready to go&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=231 Bug 231] - SocketAddressTag needs to be removed from a packet before forwarding the packet to the user&lt;br /&gt;
* Assigned to: Faker Moatamri&lt;br /&gt;
* Possibly trivial now with RemovePacketTag API&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=778 Bug 778] - OLSR ignores specified outgoing interface in RouteOutput()&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Gustavo J. A. M. Carneiro&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Patch from Tom, Gustavo pretty much +1&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;looks ready to go&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=788 Bug 788] - OLSR_NEIGH_HOLD_TIME should be 3 times OLSR_REFRESH_INTERVAL&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Gustavo J. A. M. Carneiro&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;looks ready to go&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=747 Bug 747] - Listening TCP socket closes on RST&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Josh Pelkey&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;+1 from me, looks ready to go&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=748 Bug 748] - Cloned TCP socket uses wrong source address&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Josh Pelkey&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Patch proposal from Fabian Mauchle&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;need to look at this&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=555 Bug 555] - DCF immediate access bug&lt;br /&gt;
* Assigned to: Mathieu Lacage&lt;br /&gt;
* patch needs review&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=602 Bug 602] - WifiRemoteStation lacks information about the access class of outgoing packets&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Mathieu Lacage&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;patch needs review&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;possibly fixed in changeset 0f012e7d9128&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=521 Bug 521] - Ipv4 global routing inefficient&lt;br /&gt;
* Assigned to: Tom Henderson&lt;br /&gt;
* I think this one was re-opened, and not sure if the patch is still valid&lt;br /&gt;
* I know that Tom has mentioned he is working on this one&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=385 Bug 385] -  Add a generic &amp;quot;sequence number&amp;quot; class&lt;br /&gt;
* Assigned to: Mathieu Lacage&lt;br /&gt;
* patch exists, but there is still some issues about implementation&lt;br /&gt;
* tracing is important for this one&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=184 Bug 184] - GtkConfigStore do not support ConfigureDefault&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Faker Moatamri&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;another oldie&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Mathieu says, &amp;quot;This bug is now really about making GtkConfigStore do what ConfigStore already does and provide a GUI for the 'default' + 'global' values.&amp;quot;&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Faker just updated the patch (Feb. 16, 2010), needs review&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== P2 Bugs without patches ===&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=818 Bug 818] - TCP Socket implementation does not set ACK flag on retransmits&lt;br /&gt;
* Assigned to: Josh Pelkey&lt;br /&gt;
* Possible fix mentioned, but it causes crash in tcp test suite&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=822 Bug 822] - Default attributes in abstract base classes not working&lt;br /&gt;
* Assigned to: Mathieu Lacage&lt;br /&gt;
* Has test case to show bug&lt;br /&gt;
* Possibly two bugs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=812 Bug 812] -  Assert when getting socket in RecvReply for AODV&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Pavel Boyko&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;changed to P2 crit, as this is blocking some people's research&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;has example showing assert&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;[http://www.nsnam.org/bugzilla/show_bug.cgi?id=796 Bug 796] - TCP bug in ns-3-dev branch : Crash detected during retesting of Chord on ns-3-dev branch&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Assigned to: Craig Dowell&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;logs attached to this one&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;worked in ns-3.6 but not ns-3.7&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;possibly bug 806 fix fixed this&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=409 Bug 409] - Routing messages can exceed MTU, and fragmentation not supported&lt;br /&gt;
* Assigned to: Mathieu Lacage&lt;br /&gt;
* Quick fix available&lt;br /&gt;
* IP fragmentation support for UDP is needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nsnam.org/bugzilla/show_bug.cgi?id=631 Bug 631] - RealtimeSimulatorImpl not compatible with python bindings&lt;br /&gt;
* Assigned to: Mathieu Lacage&lt;br /&gt;
* lots of discussion here, no consensus it seems&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=HOWTO_use_VirtualBox_to_run_simulations_on_Windows_machines&amp;diff=3532</id>
		<title>HOWTO use VirtualBox to run simulations on Windows machines</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=HOWTO_use_VirtualBox_to_run_simulations_on_Windows_machines&amp;diff=3532"/>
		<updated>2009-11-08T10:30:48Z</updated>

		<summary type="html">&lt;p&gt;Hippo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
ns-3 is primarily a Linux platform, and advanced ns-3 features will use Linux specific functions to accomplish their goals.  Since Windows is such a widely used platform, ns-3 does provide a supported solution for running in that environment using a Linux-emulation environment called [http://cygwin.com Cygwin].  However, Cygwin is not a perfect emulation of any Linux.  This means there will be features available on Linux systems that are simply not usable on Windows systems.&lt;br /&gt;
&lt;br /&gt;
Fortunately, a technology called virtualization exists to allow one to share computer hardware between operating systems and allow you use Linux systems essentially as if they were running natively on your hardware.  This happens as your Windows is running, so it appears as if Windows and Linux are sharing your hardware.&lt;br /&gt;
&lt;br /&gt;
There are several virtualization schemes currently available.  Two of the most popular are VMware (see [[HOWTO use VMware to set up virtual networks (Windows)]]) and VirtualBox.  We will cover VirtualBox in this HOWTO.  The following image is a screenshot of Fedora 11 running as a virtual machine on a Windows XP (classic) desktop.  You can probably make out that the terminal session on Fedora 11 has just completed running the ns-3 test suite (test.py).&lt;br /&gt;
&lt;br /&gt;
[[Image:Screenshot_fc11.png]]&lt;br /&gt;
&lt;br /&gt;
There is extensive documentation available online for VirtualBox.  Look [http://www.virtualbox.org/ here] for a starting point. Note that by downloading the VirtualBox code you are implicitly agreeing to  [http://www.virtualbox.org/wiki/VirtualBox_PUEL this license].&lt;br /&gt;
&lt;br /&gt;
== HOWTO use VirtualBox to run simulations on Windows machines ==&lt;br /&gt;
&lt;br /&gt;
1.  The first thing you must do is get the VirtualBox binaries.&lt;br /&gt;
    a.  Go to [http://www.virtualbox.org/wiki/Downloads the VirtualBox downloads page]&lt;br /&gt;
    b.  Download and run the VirtualBox binary for Windows Hosts by clicking on &lt;br /&gt;
        the x86/amd64 link.  You will get the usual '''File Download - Security''' &lt;br /&gt;
        '''Warning''' dialog.  Just click '''Run''' to download and run the about &lt;br /&gt;
        70 megabyte file.&lt;br /&gt;
    c.  After the file downloads, you will get the usual Windows '''Internet''' &lt;br /&gt;
        '''Explorer - Security Warning''' dialog.  Just select '''Run'''.&lt;br /&gt;
&lt;br /&gt;
2.  Step through the '''Sun VirtualBox Setup Wizard'''.&lt;br /&gt;
    a.  Press the '''Next &amp;gt;''' button.&lt;br /&gt;
    b.  Accept the terms of the license agrreement (if you desire) by clicking&lt;br /&gt;
        the corresponding radio button.&lt;br /&gt;
    c.  Press the '''Next &amp;gt;''' button.&lt;br /&gt;
    d.  Review the features that will be installed if you desire.  I just accept&lt;br /&gt;
        them as-is.&lt;br /&gt;
    e.  Press the '''Next &amp;gt;''' button.&lt;br /&gt;
    f.  Decide if you want a desktop and quick lanch icon.  If you expect to &lt;br /&gt;
        use ns-3 a lot it is probably worthwhile, but completely up to your &lt;br /&gt;
        preference.&lt;br /&gt;
    g.  Press the '''Next &amp;gt;''' button.&lt;br /&gt;
&lt;br /&gt;
3.  Perform the actual installation.  Warning:  This step will temporarily &lt;br /&gt;
disconnect you from the Internet.&lt;br /&gt;
    a.  Press the '''Install''' button to start the installation process.&lt;br /&gt;
    b.  You will see a number of dialog boxes (six) complaining that VirtualBox&lt;br /&gt;
        has not passed '''Windows Logo Testing'''.  Press '''Continue Anyway'''.&lt;br /&gt;
    c.  When you see the '''Sun VirtualBox installation is complete''' message&lt;br /&gt;
        leave the '''Start Sun VirtualBox after installation''' radio button&lt;br /&gt;
        selected.&lt;br /&gt;
    d.  Press the '''Finish''' button.&lt;br /&gt;
&lt;br /&gt;
4.  Register with Sun Online.  VirtualBox will ask you to register with Sun &lt;br /&gt;
Online.   If you already have a Sun Online account, enter it or just fill &lt;br /&gt;
out the account creation part of the page and press '''Register'''.  If the &lt;br /&gt;
registration process complains about a bad IP address, just create a new&lt;br /&gt;
account.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Sidebar:  In this HOWTO, we explain how to download a CD image from the web and use it to install a guest operating system in VirtualBox.  There is an alternative, which is to start with a pre-configured OS &amp;quot;Virtual Applicance.&amp;quot;  These are VMware things, but VirtualBox can read them. You can browse through hundreds of applicances [http://www.vmware.com/appliances/directory/cat/508 here].&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
5.  Download a Linux CD image.&lt;br /&gt;
    a.  Decide which version of Linux you are going to use.  If you have no &lt;br /&gt;
        strong preference, I would use the same version that ns-3 does most&lt;br /&gt;
        of its testing on.  Look [http://www.nsnam.org/wiki/index.php/Main_Page here] for the ns-3 wiki.  Follow the&lt;br /&gt;
        [http://ns-regression.ee.washington.edu:8010/waterfall Buildbot Waterfall Display] link, and notice the list of platforms.  &lt;br /&gt;
        At the time of this writing, most of them are fc10.  This translates&lt;br /&gt;
        to Fedora Core 10.  You can infer that ns-3 testing is mostly performed&lt;br /&gt;
        on Fedora systems, so Fedora it is; and Fedora 11 is the latest release&lt;br /&gt;
        as of this writing.&lt;br /&gt;
    b.  Go to [http://fedoraproject.org/ The Fedora Project] and then to [http://fedoraproject.org/en/get-fedora Get Fedora] and download a&lt;br /&gt;
        CD image.  You will get the usual '''File Download - Do you want to open'''&lt;br /&gt;
        '''or save this file?''' dialog.  Just click '''Save''' and tell the system&lt;br /&gt;
        where to put the almost 700 megabyte file.&lt;br /&gt;
&lt;br /&gt;
6.  Create a new virtual machine.&lt;br /&gt;
    a.  Go to the Sun VirtualBox window you started in step 3.&lt;br /&gt;
    b.  Press the &amp;quot;New&amp;quot; button.  This will start a '''New Virtual Machine Wizard'''.&lt;br /&gt;
    c.  Press '''Next &amp;gt;''' in the wizard.&lt;br /&gt;
    d.  Give your new virtual machine a name, say &amp;quot;ns-3-fedora-11&amp;quot;.&lt;br /&gt;
    e.  In the '''OS Type''' box, select '''Linux''' as the Operating System and&lt;br /&gt;
        '''Fedora''' as the Version.&lt;br /&gt;
    f.  Press '''Next &amp;gt;''' in the wizard.&lt;br /&gt;
    g.  Keeping in mind how much physical memory you have in your host machine,&lt;br /&gt;
        give the new virtual machine some memory.  This won't be available for &lt;br /&gt;
        your host machine.  I choose 512 MB on my 2 GB Windows machine.&lt;br /&gt;
    h.  Press '''Next &amp;gt;''' in the wizard.&lt;br /&gt;
    i.  Keeping in mind how much hard disk space you have in your host machine&lt;br /&gt;
        give the new virtual machine some memory.  You will need disk for the &lt;br /&gt;
        base OS, the toolchain and at least one ns-3 distribution, which will &lt;br /&gt;
        require about 1.2 gig at the time of this writing.&lt;br /&gt;
    j.  Press '''Next &amp;gt;''' in the '''New Virtual Machine Wizard''' to start the&lt;br /&gt;
        '''Create New Virtual Disk Wizard'''.&lt;br /&gt;
    k.  Press '''Next &amp;gt;''' in the '''Create New Virtual Disk Wizard'''.&lt;br /&gt;
    l.  Leave the '''Dynamically expanding storage''' radio button selected and&lt;br /&gt;
        press '''Next &amp;gt;''' in the '''Create New Virtual Disk Wizard'''.&lt;br /&gt;
    m.  Select a maximum size for the disk (I use 10 GB) and press '''Next &amp;gt;''' &lt;br /&gt;
        in the '''Create New Virtual Disk Wizard'''.&lt;br /&gt;
    o.  Press '''Finish''' in the '''Create New Virtual Disk Wizard''' to create&lt;br /&gt;
        your disk.&lt;br /&gt;
    p.  This takes you back to the '''New Virtual Machine Wizard''' which will &lt;br /&gt;
        be giving you a summary of the new virtual machine parameters.  Press &lt;br /&gt;
        '''Finish''' in the '''Create New Virtual Disk Wizard''' to create&lt;br /&gt;
        your new virtual machine.&lt;br /&gt;
&lt;br /&gt;
7.  &amp;quot;Insert&amp;quot; your boot CD.  In the Sun VirtualBox window, you should now see a&lt;br /&gt;
virtual machine named &amp;quot;ns-3-fedora-11&amp;quot; in the powered off state on the left &lt;br /&gt;
side.  On the right side, you should see the &amp;quot;Details&amp;quot; tab selected, with the &lt;br /&gt;
details for &amp;quot;ns-3-fedora-11&amp;quot; displayed.&lt;br /&gt;
    a.  Click on the CD/DVD-ROM item.&lt;br /&gt;
    b.  Select the '''Mount CD/DVD Drive''' check box.&lt;br /&gt;
    c.  Select the '''ISO Image File''' radio button.&lt;br /&gt;
    d.  Browse for the ISO Image File.&lt;br /&gt;
    e.  Select the &amp;quot;Add&amp;quot; Icon and browse to the ISO image file for Fedora 11&lt;br /&gt;
        you saved in step 5.&lt;br /&gt;
    f.  Press '''Select''' and then '''OK'''.&lt;br /&gt;
&lt;br /&gt;
8.  Power up the virtual machine and install Fedora 11.&lt;br /&gt;
    a.  Select the &amp;quot;Start&amp;quot; icon in the Sun VirtualBox window.  It is shaped like&lt;br /&gt;
        a green arrow.&lt;br /&gt;
    b.  Read the information dialog about how to get in and out of the virtual&lt;br /&gt;
        machine window and press '''OK'''.&lt;br /&gt;
    c.  Read the information dialog about color mode and press '''OK'''.&lt;br /&gt;
    d.  Click into the new virtual machine window, select '''Capture''' and &lt;br /&gt;
        watch Fedora 11 start to install (this will take a while).&lt;br /&gt;
    e.  When the login box appears, press &amp;quot;Log In&amp;quot; and then double click the &lt;br /&gt;
        '''Install to Hard Disk''' icon.&lt;br /&gt;
    f.  Press '''Next''' to begin the Fedora 11 installation process and copy the&lt;br /&gt;
        image to the virtual machine hard drive.  This is going to take some&lt;br /&gt;
        considerable time since you are installing a whole operating system.&lt;br /&gt;
        We won't cover how to proceed here in detail since this is not a Fedora&lt;br /&gt;
        11 installation guide.  Google is your friend if you have problems.&lt;br /&gt;
    g.  Eventually you'll see &amp;quot;Congratulations, your Fedora installation is &lt;br /&gt;
        complete&amp;quot;.  Press '''Close'''.&lt;br /&gt;
    h.  Shut down the Fedora system.&lt;br /&gt;
&lt;br /&gt;
9.  &amp;quot;Remove&amp;quot; your boot CD.  In the Sun VirtualBox window, you should now see a&lt;br /&gt;
virtual machine named &amp;quot;ns-3-fedora-11&amp;quot; in the powered off state on the left &lt;br /&gt;
side.  On the right side, you should see the &amp;quot;Details&amp;quot; tab selected, with the &lt;br /&gt;
details for &amp;quot;ns-3-fedora-11&amp;quot; displayed.&lt;br /&gt;
    a.  Click on the CD/DVD-ROM item.&lt;br /&gt;
    b.  Deselect the '''Mount CD/DVD Drive''' check box.&lt;br /&gt;
    c.  Press '''OK'''.&lt;br /&gt;
&lt;br /&gt;
10. Bring up your shiny new Fedora 11 system.&lt;br /&gt;
    a.  Select the &amp;quot;Start&amp;quot; icon in the Sun VirtualBox window.  It is shaped like&lt;br /&gt;
        a green arrow.&lt;br /&gt;
    b.  You'll have to do a few more setup steps (create a user) in the Fedora&lt;br /&gt;
        '''Setup Agent'''.  This will reboot one more time and then you can log&lt;br /&gt;
        in with your new user name.&lt;br /&gt;
&lt;br /&gt;
11. Install the GNU toolchain and some useful tools.  If you have added yourself as a sudoer, you can run the following commands (or others according to your taste) using sudo, otherwise log on as root.  A more complete list is available [http://www.nsnam.org/wiki/index.php/Installation#Prerequisites here].&lt;br /&gt;
    a.  yum install libxml2 libxml2-devel&lt;br /&gt;
    b.  yum install gcc gcc-c++ make automake autoconf binutils&lt;br /&gt;
    c.  yum install openssh-server openssh-clients openssl&lt;br /&gt;
    d.  yum install python python-devel mercurial bzr &lt;br /&gt;
    e.  yum install scons flex bison&lt;br /&gt;
    f.  yum install tcpdump valgrind gdb emacs&lt;br /&gt;
&lt;br /&gt;
12. Get and Test ns-3-dev&lt;br /&gt;
    a.  Make sure you have exited from su root, if you did that in step 11.&lt;br /&gt;
    b.  cd ~&lt;br /&gt;
    c.  mkdir repos&lt;br /&gt;
    d.  cd repos&lt;br /&gt;
    e.  hg clone http://code.nsnam.org/ns-3-allinone&lt;br /&gt;
    f.  cd ns-3-allinone&lt;br /&gt;
    g.  ./download.py&lt;br /&gt;
    h.  ./build.py&lt;br /&gt;
    i.  cd ns-3-dev&lt;br /&gt;
    j.  ./test.py&lt;br /&gt;
    k.  ./waf --regression&lt;br /&gt;
&lt;br /&gt;
As an old math professor once said, &amp;quot;I feel joy&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
If you are really going to use a virtual machine as a primary development platform, you will probably be annoyed by the limitation of the device driver to 800x600 resolution.  You can fix this by installing the so-called VirtualBox Guest Additions.  This will aso get rid of the annoying &amp;quot;mouse capture&amp;quot; and &amp;quot;mouse release&amp;quot; business.  If you install the Guest Additions, you can resize your virtual desktop to any size you want and mouse in and out of it just as if you were in a Windows window.  Recommended.  The screen shot at the top of the page was taken of a my home system which has these additions enabled.  See the VirtualBox documentation for instructions.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Craigdo|Craigdo]] 22:21, 7 November 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=HOWTO_use_VirtualBox_to_run_simulations_on_Windows_machines&amp;diff=3531</id>
		<title>HOWTO use VirtualBox to run simulations on Windows machines</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=HOWTO_use_VirtualBox_to_run_simulations_on_Windows_machines&amp;diff=3531"/>
		<updated>2009-11-08T09:20:49Z</updated>

		<summary type="html">&lt;p&gt;Hippo: markup and typos fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
ns-3 is primarily a Linux platform, and advanced ns-3 features will use Linux specific functions to accomplish their goals.  Since Windows is such a widely used platform, ns-3 does provide a supported solution for running in that environment using a Linux-emulation environment called [http://cygwin.com Cygwin].  However, Cygwin is not a perfect emulation of any Linux.  This means there will be features available on Linux systems that are simply not usable on Windows systems.&lt;br /&gt;
&lt;br /&gt;
Fortunately, a technology called virtualization exists to allow one to share computer hardware between operating systems and allow you use Linux systems essentially as if they were running natively on your hardware.  This happens as your Windows is running, so it appears as if Windows and Linux are sharing your hardware.&lt;br /&gt;
&lt;br /&gt;
There are several virtualization schemes currently available.  Two of the most popular are VMware (see [[HOWTO use VMware to set up virtual networks (Windows)]]) and VirtualBox.  We will cover VirtualBox in this HOWTO.  The following image is a screenshot of Fedora 11 running as a virtual machine on a Windows XP (classic) desktop.  You can probably make out that the terminal session on Fedora 11 has just completed running the ns-3 test suite (test.py).&lt;br /&gt;
&lt;br /&gt;
[[Image:Screenshot_fc11.png]]&lt;br /&gt;
&lt;br /&gt;
There is extensive documentation available online for VirtualBox.  Look [http://www.virtualbox.org/ here] for a starting point. Note that by downloading the VirtualBox code you are implicitly agreeing to  [http://www.virtualbox.org/wiki/VirtualBox_PUEL this license].&lt;br /&gt;
&lt;br /&gt;
== HOWTO use VirtualBox to run simulations on Windows machines ==&lt;br /&gt;
&lt;br /&gt;
1.  The first thing you must do is get the VirtualBox binaries.&lt;br /&gt;
    a.  Go to [http://www.virtualbox.org/wiki/Downloads the VirtualBox downloads page]&lt;br /&gt;
    b.  Download and run the VirtualBox binary for Windows Hosts by clicking on &lt;br /&gt;
        the x86/amd64 link.  You will get the usual '''File Download - Security''' &lt;br /&gt;
        '''Warning''' dialog.  Just click '''Run''' to download and run the about &lt;br /&gt;
        70 megabyte file.&lt;br /&gt;
    c.  After the file downloads, you will get the usual Windows '''Internet''' &lt;br /&gt;
        '''Explorer - Security Warning''' dialog.  Just select '''Run'''.&lt;br /&gt;
&lt;br /&gt;
2.  Step through the '''Sun VirtualBox Setup Wizard'''.&lt;br /&gt;
    a.  Press the '''Next &amp;gt;''' button.&lt;br /&gt;
    b.  Accept the terms of the license agrreement (if you desire) by clicking&lt;br /&gt;
        the corresponding radio button.&lt;br /&gt;
    c.  Press the '''Next &amp;gt;''' button.&lt;br /&gt;
    d.  Review the features that will be installed if you desire.  I just accept&lt;br /&gt;
        them as-is.&lt;br /&gt;
    e.  Press the '''Next &amp;gt;''' button.&lt;br /&gt;
    f.  Decide if you want a desktop and quick lanch icon.  If you expect to &lt;br /&gt;
        use ns-3 a lot it is probably worthwhile, but completely up to your &lt;br /&gt;
        preference&lt;br /&gt;
    g.  Press the '''Next &amp;gt;''' button.&lt;br /&gt;
&lt;br /&gt;
3.  Perform the actual installation.  Warning:  This step will temporarily &lt;br /&gt;
disconnect you from the Internet.&lt;br /&gt;
    a.  Press the '''Install''' button to start the installation process.&lt;br /&gt;
    b.  You will see a number of dialog boxes (six) complaining that VirtualBox&lt;br /&gt;
        has not passed '''Windows Logo Testing'''.  Press '''Continue Anyway'''.&lt;br /&gt;
    c.  When you see the '''Sun VirtualBox installation is complete''' message&lt;br /&gt;
        leave the '''Start Sun VirtualBox after installation''' radio button&lt;br /&gt;
        selected.&lt;br /&gt;
    d.  Press the '''Finish''' button.&lt;br /&gt;
&lt;br /&gt;
4.  Register with Sun Online.  VirtualBox will ask you to register with Sun &lt;br /&gt;
Online.   If you already have a Sun Online account, enter it or just fill &lt;br /&gt;
out the account creation part of the page and press '''Register'''.  If the &lt;br /&gt;
registration process complains about a bad IP address, just create a new&lt;br /&gt;
account.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Sidebar:  In this HOWTO, we explain how to download a CD image from the web and use it to install a guest operating system in VirtualBox.  There is an alternative, which is to start with a pre-configured OS &amp;quot;Virtual Applicance.&amp;quot;  These are VMware things, but VirtualBox can read them. You can browse through hundreds of applicances [http://www.vmware.com/appliances/directory/cat/508 here].&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
5.  Download a Linux CD image.&lt;br /&gt;
    a.  Decide which version of Linux you are going to use.  If you have no &lt;br /&gt;
        strong preference, I would use the same version that ns-3 does most&lt;br /&gt;
        of its testing on.  Look [http://www.nsnam.org/wiki/index.php/Main_Page here] for the ns-3 wiki.  Follow the&lt;br /&gt;
        [http://ns-regression.ee.washington.edu:8010/waterfall Buildbot Waterfall Display] link, and notice the list of platforms.  &lt;br /&gt;
        At the time of this writing, most of them are fc10.  This translates&lt;br /&gt;
        to Fedora Core 10.  You can infer that ns-3 testing is mostly performed&lt;br /&gt;
        on Fedora systsms, so Fedora it is; and Fedora 11 is the latest release&lt;br /&gt;
        as of this writing.&lt;br /&gt;
    b.  Go to [http://fedoraproject.org/ The Fedora Project] and then to [http://fedoraproject.org/en/get-fedora Get Fedora] and download a&lt;br /&gt;
        CD image.  You will get the usual '''File Download - Do you want to open'''&lt;br /&gt;
        '''or save this file?''' dialog.  Just click '''Save''' and tell the system&lt;br /&gt;
        where to put the almost 700 megabyte file.&lt;br /&gt;
&lt;br /&gt;
6.  Create a new virtual machine&lt;br /&gt;
    a.  Go to the Sun VirtualBox window you started in step 3.&lt;br /&gt;
    b.  Press the &amp;quot;New&amp;quot; button.  This will start a '''New Virtual Machine Wizard'''.&lt;br /&gt;
    c.  Press '''Next &amp;gt;''' in the wizard.&lt;br /&gt;
    d.  Give your new virtual machine a name, say &amp;quot;ns-3-fedora-11&amp;quot;.&lt;br /&gt;
    e.  In the '''OS Type''' box, select '''Linux''' as the Operating System and&lt;br /&gt;
        '''Fedora''' as the Version.&lt;br /&gt;
    f.  Press '''Next &amp;gt;''' in the wizard.&lt;br /&gt;
    g.  Keeping in mind how much physical memory you have in your host machine,&lt;br /&gt;
        give the new virtual machine some memory.  This won't be available for &lt;br /&gt;
        your host machine.  I choose 512 MB on my 2 GB Windows machine.&lt;br /&gt;
    h.  Press '''Next &amp;gt;''' in the wizard.&lt;br /&gt;
    i.  Keeping in mind how much hard disk space you have in your host machine&lt;br /&gt;
        give the new virtual machine some memory.  You will need disk for the &lt;br /&gt;
        base OS, the toolchain and at least one ns-3 distribution, which will &lt;br /&gt;
        require about 1.2 gig at the time of this writing.&lt;br /&gt;
    j.  Press '''Next &amp;gt;''' in the '''New Virtual Machine Wizard''' to start the&lt;br /&gt;
        '''Create New Virtual Disk Wizard'''.&lt;br /&gt;
    k.  Press '''Next &amp;gt;''' in the '''Create New Virtual Disk Wizard'''.&lt;br /&gt;
    l.  Leave the '''Dynamically expanding storage''' radio button selected and&lt;br /&gt;
        press '''Next &amp;gt;''' in the '''Create New Virtual Disk Wizard'''.&lt;br /&gt;
    m.  Select a maximum size for the disk (I use 10 GB) and press '''Next &amp;gt;''' &lt;br /&gt;
        in the '''Create New Virtual Disk Wizard'''.&lt;br /&gt;
    o.  Press '''Finish''' in the '''Create New Virtual Disk Wizard''' to create&lt;br /&gt;
        your disk.&lt;br /&gt;
    p.  This takes you back to the '''New Virtual Machine Wizard''' which will &lt;br /&gt;
        be giving you a summary of the new virtual machine parameters.  Press &lt;br /&gt;
        '''Finish''' in the '''Create New Virtual Disk Wizard''' to create&lt;br /&gt;
        your new virtual machine.&lt;br /&gt;
&lt;br /&gt;
7.  &amp;quot;Insert&amp;quot; your boot CD.  In the Sun VirtualBox window, you should now see a&lt;br /&gt;
virtual machine named &amp;quot;ns-3-fedora-11&amp;quot; in the powered off state on the left &lt;br /&gt;
side.  On the right side, you should see the &amp;quot;Details&amp;quot; tab selected, with the &lt;br /&gt;
details for &amp;quot;ns-3-fedora-11&amp;quot; displayed.&lt;br /&gt;
    a.  Click on the CD/DVD-ROM item.&lt;br /&gt;
    b.  Select the '''Mount CD/DVD Drive''' check box.&lt;br /&gt;
    c.  Select the '''ISO Image File''' radio button.&lt;br /&gt;
    d.  Browse for the ISO Image File.&lt;br /&gt;
    e.  Select the &amp;quot;Add&amp;quot; Icon and browse to the ISO image file for Fedora 11&lt;br /&gt;
        you saved in step 5.&lt;br /&gt;
    f.  Press '''Select''' and then '''OK'''.&lt;br /&gt;
&lt;br /&gt;
8.  Power up the virtual machine and install Fedora 11.&lt;br /&gt;
    a.  Select the &amp;quot;Start&amp;quot; icon in the Sun VirtualBox window.  It is shaped like&lt;br /&gt;
        a green arrow.&lt;br /&gt;
    b.  Read the information dialog about how to get in and out of the virtual&lt;br /&gt;
        machine window and press '''OK'''.&lt;br /&gt;
    c.  Read the information dialog about color mode and press '''OK'''.&lt;br /&gt;
    d.  Click into the new virtual machine window, select '''Capture''' and &lt;br /&gt;
        watch Fedora 11 start to install (this will take a while).&lt;br /&gt;
    e.  When the login box appears, press &amp;quot;Log In&amp;quot; and then double click the &lt;br /&gt;
        '''Install to Hard Disk icon'''.&lt;br /&gt;
    f.  Press '''Next''' to begin the Fedora 11 installation process and copy the&lt;br /&gt;
        image to the virtual machine hard drive.  This is going to take some&lt;br /&gt;
        considerable time since you are installing a whole operating system.&lt;br /&gt;
        We won't cover how to proceed here in detail since this is not a Fedora&lt;br /&gt;
        11 installation guide.  Google is your friend if you have problems.&lt;br /&gt;
    g.  Eventually you'll see &amp;quot;Congratulations, your Fedora installation is &lt;br /&gt;
        complete.  Press '''Close'''.&lt;br /&gt;
    h.  Shut down the Fedora system.&lt;br /&gt;
&lt;br /&gt;
9.  &amp;quot;Remove&amp;quot; your boot CD.  In the Sun VirtualBox window, you should now see a&lt;br /&gt;
virtual machine named &amp;quot;ns-3-fedora-11&amp;quot; in the powered off state on the left &lt;br /&gt;
side.  On the right side, you should see the &amp;quot;Details&amp;quot; tab selected, with the &lt;br /&gt;
details for &amp;quot;ns-3-fedora-11&amp;quot; displayed.&lt;br /&gt;
    a.  Click on the CD/DVD-ROM item.&lt;br /&gt;
    b.  Deselect the '''Mount CD/DVD Drive''' check box.&lt;br /&gt;
    c.  Press '''OK'''.&lt;br /&gt;
&lt;br /&gt;
10. Bring up your shiny new Fedora 11 system.&lt;br /&gt;
    a.  Select the &amp;quot;Start&amp;quot; icon in the Sun VirtualBox window.  It is shaped like&lt;br /&gt;
        a green arrow.&lt;br /&gt;
    b.  You'll have to do a few more setup steps (create a user) in the Fedora&lt;br /&gt;
        '''Setup Agent'''.  This will reboot one more time and then you can log&lt;br /&gt;
        in with your new user name.&lt;br /&gt;
&lt;br /&gt;
11. Install the GNU toolchain and some useful tools.  If you have added yourself as a sudoer, you can run the following commands (or others according to your taste) using sudo, otherwise log on as root.  A more complete list is available [http://www.nsnam.org/wiki/index.php/Installation#Prerequisites here].&lt;br /&gt;
    a.  yum install libxml2 libxml2-devel&lt;br /&gt;
    b.  yum install gcc gcc-c++ make automake autoconf binutils&lt;br /&gt;
    c.  yum install openssh-server openssh-clients openssl&lt;br /&gt;
    d.  yum install python python-devel mercurial bzr &lt;br /&gt;
    e.  yum install scons flex bison&lt;br /&gt;
    f.  yum install tcpdump valgrind gdb emacs&lt;br /&gt;
&lt;br /&gt;
12. Get and Test ns-3-dev&lt;br /&gt;
    a.  Make sure you have exited from su root, if you did that in step 11.&lt;br /&gt;
    b.  cd ~&lt;br /&gt;
    c.  mkdir repos&lt;br /&gt;
    d.  cd repos&lt;br /&gt;
    e.  hg clone http://code.nsnam.org/ns-3-allinone&lt;br /&gt;
    f.  cd ns-3-allinone&lt;br /&gt;
    g.  ./download.py&lt;br /&gt;
    h.  ./build.py&lt;br /&gt;
    i.  cd ns-3-dev&lt;br /&gt;
    j.  ./test.py&lt;br /&gt;
    k.  ./waf --regression&lt;br /&gt;
&lt;br /&gt;
As an old math professor once said, &amp;quot;I feel joy&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
If you are really going to use a virtual machine as a primary development platform, you will probably be annoyed by the limitation of the device driver to 800x600 resolution.  You can fix this by installing the so-called VirtualBox Guest Additions.  This will aso get rid of the annoying &amp;quot;mouse capture&amp;quot; and &amp;quot;mouse release&amp;quot; business.  If you install the Guest Additions, you can resize your virtual desktop to any size you want and mouse in and out of it just as if you were in a Windows window.  Recommended.  The screen shot at the top of the page was taken of a my home system which has these additions enabled.  See the VirtualBox documentation for instructions.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Craigdo|Craigdo]] 22:21, 7 November 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Hippo</name></author>
	</entry>
</feed>