Installing Ns2.34 with Mannasim in Linux Mint 14

Post Version: 1.1

Version of GCC I use: 4.7.2

This is the version of GCC that comes default with Linux Mint 14.

gcc_VersionIf you wish to install ns2.34 without Mannasim skip steps 4 and 9.

1. Download ns-allinone-2.34 from this site:
http://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.34/ns-allinone-2.34.tar.gz/download
2. Extract the downloaded file into your home folder(say, /home/micman)

Throughout this post, I shall be mentioning my home folder /home/micman. When you follow these procedures, replace my username micman with your username.
3. Place the file ns2.34-mannasim-gcc4.3.patch into the following folder:

 /home/micman/ns-allinone-2.34 

4. In Terminal, type the following commands:

cd /home/micman/ns-allinone-2.34
path -p1 < ns2.34-mannasim-gcc4.3.patch

5. If the patch gets applied without any error, proceed to next step open the following file

 /home/micman/ns-allinone-2.34/otcl-1.13/configure 

Replace the following lines:

Linux*)
SHLIB_CFLAGS="-fpic"
SHLIB_LD="ld -shared"
SHLIB_SUFFIX=".so"
DL_LIBS="-ldl"
SHLD_FLAGS=""

with the following:

Linux*)
SHLIB_CFLAGS="-fpic"
SHLIB_LD="gcc -shared"
SHLIB_SUFFIX=".so"
DL_LIBS="-ldl"
SHLD_FLAGS=""

6. Next, open the following file:

/home/micman/ns-allinone-2.34/ns-2.34/tools/ranvar.cc

In line 219, make the following changes:
Find this line:

return GammaRandomVariable::GammaRandomVariable(1.0 + alpha_, beta_).value() * pow (u, 1.0 / alpha_);

and replace it with:

 return GammaRandomVariable(1.0 + alpha_, beta_).value() * pow (u, 1.0 / alpha_);

7. Next, open the following file:

/home/micman/ns-allinone-2.34/ns-2.34/mac/mac-802_11Ext.h

In line 65, make the following changes:

Include this header file

#include "cstddef" 

8. Open the following file:

 /home/micman/ns-allinone-2.34/ns-2.34/mobile/nakagami.cc

Find the following code:

if (int_m == m) {
resultPower = ErlangRandomVariable::ErlangRandomVariable(Pr/m, int_m).value();
} else {
resultPower = GammaRandomVariable::GammaRandomVariable(m, Pr/m).value();
}
return resultPower;
}

Replace it with the code below:

if (int_m == m) {
resultPower = ErlangRandomVariable(Pr/m, int_m).value();
} else {
resultPower = GammaRandomVariable(m, Pr/m).value();
}
return resultPower;
}
}

9. In the following file, some code needs to be commented:

/home/micman/ns-allinone-2.34/ns-2.34/mannasim/onDemandData.cc


Comment the following lines:

OnDemandData :: OnDemandData()
{
/// REAL request type is default.
OnDemandData::OnDemandData(REAL);
}

10. Finally, in the following file:

/home/micman/ns-allinone-2.34/ns-2.34/linkstate/ls.h

Make the following changes:
In line 137, change the following line

void eraseAll() { erase(baseMap::begin(), baseMap::end()); }

into

void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); }

11. When all the above steps have been completed successfully, run the following commands in Terminal before we begin installing ns2:

sudo apt-get install build-essential autoconf automake libxmu-dev

Once the above updates are successful, we shall proceed with installing ns2.

12. Navigate into the ns-allinone-2.34 folder:

cd /home/micman/ns-allinone-2.34

13. Just run the following command:

./install

14. Meanwhile, while the installation is happening, create the following file in /home/micman, if it doesn’t exist(else use the existing file):

.bashrc

15. Copy the following contents into .bashrc file created now:

# LD_LIBRARY_PATH
OTCL_LIB=/home/micman/ns-allinone-2.34/otcl-1.13
NS2_LIB=/home/micman/ns-allinone-2.34/lib
X11_LIB=/usr/X11R6/lib
USR_LOCAL_LIB=/usr/local/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB:$X11_LIB:$USR_LOCAL_LIB

# TCL_LIBRARY
TCL_LIB=/home/micman/ns-allinone-2.34/tcl8.4.18/library
USR_LIB=/usr/lib
export TCL_LIBRARY=$TCL_LIB:$USR_LIB

# PATH
XGRAPH=/home/micman/ns-allinone-2.34/bin:/home/micman/ns-allinone-2.34/tcl8.4.18/unix:/home/micman/ns-allinone-2.34/tk8.4.18/unix
NS=/home/micman/ns-allinone-2.34/ns-2.34/
NAM=/home/micman/ns-allinone-2.34/nam-1.14/
PATH=$PATH:$XGRAPH:$NS:$NAM

Here, micman is my username, replace it with your system username.

16. Meanwhile, in the Terminal, if the installation completes without any error, then close the terminal, and reopen it and type the following command:

ns
if % sign appears then the installation has been successful.

Additional Links:

Download Linux Mint: http://www.linuxmint.com/download.php

Download mannasim patch for ns2.34: https://www.box.com/shared/th6qi9b5v0

Download PowerIso: http://www.poweriso.com/download.htm

This article is sponsored by: http://hikmainfotech.com

hikma

Was this post helpful? Then thank me by clicking <this link>

Finding Node Position,Velocity and Speed in NS2.34


My post on calculating node position and energy would have benefitted you in your work in ns2.In this article I would explain the use of three predefined functions in MobileNode.cc to access a nodes position,velocity and speed dynamically.As usual my work is on AODV protocol.

1. Add mobilenode.h header in aodv.h

#include<mobilenode.h>

2. In protected scope declare the variables you would be using to store the node parameters.

<see step5 in this post>

double xpos;

double ypos;

double zval;

int node_speed;

MobileNode  *iNode;

3. In aodv.cc initialize the declared variables.

xpos = 0.0;

ypos = 0.0;

zval = 0.0;

node_speed = 0;

MobileNode  *iNode;

4. Finally access the required functions from mobilenode.h. I am accesing those functions from AODV::forward() function
/***This code retrieves node position*****/

iNode = (MobileNode*) (Node::get_node_by_address(index));

((MobileNode *) iNode)->getLoc(&xpos,&ypos,&zpos);

printf(“Position of %d,  X=%f,  Y=%f,  Z=%f   \n “, index,  xpos, ypos, zpos);

/***This code retrieves the nodes velocity*****/

iNode = (MobileNode*) (Node::get_node_by_address(index));

((MobileNode *) iNode)->getVelo(&xpos, &ypos, &zpos);

printf(“Velocity of %d,  X=%f, Y=%f, Z=%f   \n”, index, xpos,  ypos, zpos);

/***This code retrieves the nodes speed*****/

iNode = (MobileNode*) (Node::get_node_by_address(index));

node_speed = ((MobileNode *) iNode)->speed();

printf(“Velocity of %d, Speed=%d  \n”,  index, node_speed);

Remember to make clean; make all after any such changes to aodv.cc or aodv.h

After all these steps are done, execute simple-wireless.tcl found at ~/ns-allinone-2.34/ns-2.34/tcl/ex with the protocol mentioned in it changed from DSDV to AODV. The result would be displayed on the terminal whenever AODV::forward() is invoked(in this case).

If you find any discrepancies in this post, please feel free to drop me a mail at micman.manoj@hotmail.com. By doing so, You would be saving the valuable time of many researchers.


Installing Network Simulator(ns2.34) in Ubuntu10.10

Download the following installation steps as a pdf manual <here>. This manual also contains the steps to install ns2.34 in Fedora 12.

Read this article in Scribd <here>


PROCEDURE 1:

The nightmare days are over!

Now you dont have to spend hours on your linux distro(ubuntu) installing and validating ns2.x

Ubuntu 10.10 has greatly simplified things. You can now install ns,nam and xgraph by just a single command in the Terminal:

 $ sudo apt-get install ns2  nam xgraph 

You will be prompted for the user password. Enter it and watch Ubuntu 10.10 do the things for You!

Happy Ubuntuing 😉

PROCEDURE 2:

On heeding to my  blog visitors requests, I would like to update this post with the steps to install ns2.34, the traditional way.

Step1: Download ns-allinone-2.34 package from this <site>. I will be using ns version 2.34.

Step2: Place the ns-allinone-2.34.tar.gz file in your home folder(/home/micman in my case). Right click on the package and extract the contents in the same home folder.

Step3: Next, open the Terminal(Applications–>Accessories–>Terminal in ubuntu)

Step4: Change to ns-allinone-2.34 directory

 $ cd /home/micman/ns-allinone-2.34

Step5: First, Install the dependencies

  $ sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 

Note that we are downgrading the gcc version, as ns2.34 works well with gcc4.3

Edit Makefile.in found at this location ns-allinone-2.34/otcl-1.13/Makefile.in as follows:

Find the line that says:
CC= @CC@
and change it to:
CC= gcc-4.3

Step6: Begin ns2.34 installation

 $ sudo su

 

  # ./install 

Step7: Once the installation is successful i.e. without any errors, we need to add the path information to the file ~/.bashrc

  $ gedit   ~/.bashrc 

Step8: Append the following lines to the file ~/.bashrc

# LD_LIBRARY_PATH
OTCL_LIB=/home/micman/ns-allinone-2.34/otcl-1.13
NS2_LIB=/home/micman/ns-allinone-2.34/lib
X11_LIB=/usr/X11R6/lib
USR_LOCAL_LIB=/usr/local/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB:$X11_LIB:$USR_LOCAL_LIB

# TCL_LIBRARY

TCL_LIB=/home/micman/ns-allinone-2.34/tcl8.4.18/library
USR_LIB=/usr/lib
export TCL_LIBRARY=$TCL_LIB:$USR_LIB

# PATH

XGRAPH=/home/micman/ns-allinone-2.34/bin:/home/micman/ns-allinone-2.34/tcl8.4.18/unix:/home/micman/ns-allinone-2.34/tk8.4.18/unix

# Note: the above two lines starting from XGRAPH should come in the same line

NS=/home/micman/ns-allinone-2.34/ns-2.34/
NAM=/home/micman/ns-allinone-2.34/nam-1.14/
PATH=$PATH:$XGRAPH:$NS:$NAM

Here replace /home/micman with the path to your home folder.

Step9: For the changes to take effect immediately, do the following:

$ source      ~/.bashrc 

Thats all!

type ns to see % and type nam to show the nam startup window. This shows your installation has been successful.

Troubleshooting

  • If the tk compilation failed, especially for tk3d.c, make sure you have installed libx11-dev package.
  • If the otcl configuration failed, make sure you have installed x-dev and xorg-dev packages.

Error:

nsbash: ns: command not found

Solution:

This could be because you have not set the $PATH variable. Therefore, the OS does not know where to look for the command “ns“. more detailed solution <here>

Error:

Segmentation Fault

Solution:

found here

Error:

Undefined reference to vtable

Solution:

found here

This article is sponsored by Evansys Technologies.

Was this post helpful? Then thank me by clicking <this link>

You may also be interested in: