Difference between revisions of "HOWTO use ns-3 on Windows with Visual Studio 2010"

From Nsnam
Jump to: navigation, search
(Requirements)
(Download)
Line 9: Line 9:
  
 
= Download =
 
= Download =
 +
* Version (ns-3.10-Win-1.1) Pilot/Limited feature/Alpha version Implementation built on ns-3-dev(dated 02/07/2011)
 +
Download from [http://code.nsnam.org/jabraham3/ns3-on-windows/ns-3.10-Win-1.0/raw-file///ns-3.10-Win-1.1.zip here]
 +
 
* Version (ns-3.10-Win-1.0) Pilot/Limited feature/Alpha version Implementation built on ns-3-dev(dated 02/07/2011)
 
* Version (ns-3.10-Win-1.0) Pilot/Limited feature/Alpha version Implementation built on ns-3-dev(dated 02/07/2011)
 
Download from [http://code.nsnam.org/jabraham3/ns3-on-windows/ns-3.10-Win-1.0/raw-file/020dc57425eb/ns-3.10-Win-1.0.zip here]
 
Download from [http://code.nsnam.org/jabraham3/ns3-on-windows/ns-3.10-Win-1.0/raw-file/020dc57425eb/ns-3.10-Win-1.0.zip here]

Revision as of 12:35, 21 March 2011

Installation & Usage for NS3 on Windows

Requirements

  • Microsoft Visual Studio 2010
  • Microsoft Windows 7 or Microsoft Windows XP

Note: By default the /MP compiler option is set to 5 to reduce build time. However, this setting can significantly impact the performance of your system if processor and memory resources are limited. Please remove this option or reduce the number from 5 , based on your system's capabilities. For more on the MP option visit this link

Here is a youtube video showing how to locate the MP option

Download

  • Version (ns-3.10-Win-1.1) Pilot/Limited feature/Alpha version Implementation built on ns-3-dev(dated 02/07/2011)

Download from here

  • Version (ns-3.10-Win-1.0) Pilot/Limited feature/Alpha version Implementation built on ns-3-dev(dated 02/07/2011)

Download from here

First Build

Unzip the contents of the zip file into a suitable location.

Currently the Visual Studio Solution is organized into two projects. This organization is liable to change in the upcoming releases

  1. Main project: Containing the Windows GUI components, the examples folder and the folder where your scripts may go.The output of this project is the ns3Main.exe executable.
  2. ns-3-dev-lib project: Containing the "src" folder from the parent ns-3 project.The output of this project is the "ns-3-dev-lib.lib" static library which the "Main" project will link into


The steps to build the ns3Main.exe executable are as follows

  1. Open the "ns-3-dev.sln" Visual studio 2010 solution file by double-clicking it.This file is located under the "Windows\ns-3-dev" folder.
  2. Once the entire solution is opened, right-click the "ns-3-dev-lib" project and select the "build" option.Here is a youtube video showing the previous two steps.
  3. After ensuring "ns-3-dev-lib.lib" is successfully built , right-click on the "Main" project and select build.Here is a youtube video showing this step.
  4. Watch out linker errors (some are expected during the release of ns-3.10-Win-1.0 as several components are missing.Locate the "ns3Main.exe" file (Located under "Windows\ns-3-dev\Debug")and double-click it.Here is a youtube video showing this step.

Running an example

  1. Open the ns3Main.exe executable
  2. Locate the example you want to run from the Examples tree
  3. Specify optional "Application arguments"
  4. Specify optional logging by selecting the appropriate Log component and Log Level
  5. Select an optional logging prefix such as "Prefix Time"
  6. Select the "Play" button
  7. At the end of the simulation a message box saying "Simulation Complete" will appear.

Here is a youtube video showing the above steps

Adding your code

To add code to the "src" folder you must follow the instructions in the ns3 main tutorial/documentation. To add your script to the "Examples" tree let us walk-through an example:

  • Right-click on the "MyExamples" folder under the "Main" project and select "Add->New Item" and name your file "MyFirstExample.cc"
  • Add the following piece of code to "MyFirstExample.cc"
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation;
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */

 # include "ns3/core-module.h"
 # include "MyExamplesProtoTypes.h"
 NS_LOG_COMPONENT_DEFINE ("MyFirstExample");
 using namespace ns3;

 int 
 my_first_win_main (int argc, char *argv[])
 {
   NS_LOG_UNCOND ("Hello from My first");
   return 0;
 }

  • Open "MainDlg.cpp" under "Source Files" under the "Main Project" and go to the bottom of the function void CMainDlg::PopulateExamplesTree() to the comments // Add your custom examples here
  • Add the following line of code at this point
  InsertIntoExamplesTree ("Examples_win\\MyExamples\\my_first_win_main",my_first_win_main);

where "my_first_win_main" is the function you added in MyFirstExample.cc and "Examples_win\\MyExamples\\my_first_win_main" sets your example at your desired location in the Examples tree.


  • Add the function prototype of "my_first_win_main" to the header file "MyExamplesProtoTypes.h" located under the "MyExamples" folder in the "Main" project
int my_first_win_main (int argc, char *argv[]);

  • Right-click the "Main" project and select "Build" to build NS3Main.exe and execute it as explained earlier. Your newly added example should now appear in the examples tree.

Here is a youtube video showing these steps

Debugging

  1. Set a break-point at a suitable location. Lets choose the "Insert" function in "map-scheduler.cc"
  2. Hit the "debug" button at the top portion of your IDE.
  3. Provide input to your application as you normally would.

Here is a youtube video showing these steps.