> > How to Install Network Simulator (NS2) & nam in Ubuntu 14.04

How to Install Network Simulator (NS2) & nam in Ubuntu 14.04

NS or Network Simulator is a well known open source tool for simulating wired or wireless computer networks. Nam or Network animator is an animator tool for graphical representation of network traces and real world packet traces. NS and nam can be used together to create a simulated network and analyze it manually or graphically.

But with Ubuntu 14.04 the latest version of nam won’t work well and most of the times it terminates with an error: Segmentation fault (core dumped)

In this post we will see how to get rid of these errors and how to install NS2 and Nam properly. We will also see how to run a simple TCL/Tk simulation program using NS2 and animate it’s output using Nam.

  1. Install NS2
    Run the following commands in a terminal:

    sudo apt-get install ns2
  2. Install Nam
    sudo apt-get purge nam
    wget --user-agent="Mozilla/5.0 (Windows NT 5.2; rv:2.0.1) Gecko/20100101 Firefox/4.0.1" "http://technobytz.com/wp-content/uploads/2015/11/nam_1.14_amd64.zip"
    unzip nam_1.14_amd64.zip
    sudo dpkg -i nam_1.14_amd64.deb
    sudo apt-mark hold nam
    

This will install nam and ns2 on your Ubuntu / Mint. Now lets check if everything is functional by executing a small TCL/Tk simulation script.

#Create a simulator object
set ns [new Simulator]

#Define different colors for data flows
$ns color 1 Blue
$ns color 2 Red

#Open the nam trace file
set nf [open out.nam w]
$ns namtrace-all $nf

#Define a 'finish' procedure
proc finish {} {
global ns nf
$ns flush-trace
#Close the trace file
close $nf
#Execute nam on the trace file
exec nam out.nam &
exit 0
}

#Create four nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]

#Create links between the nodes
$ns duplex-link $n0 $n2 1Mb 10ms DropTail
$ns duplex-link $n1 $n2 1Mb 10ms DropTail
$ns duplex-link $n3 $n2 1Mb 10ms SFQ

$ns duplex-link-op $n0 $n2 orient right-down
$ns duplex-link-op $n1 $n2 orient right-up
$ns duplex-link-op $n2 $n3 orient right

#Monitor the queue for the link between node 2 and node 3
$ns duplex-link-op $n2 $n3 queuePos 0.5

#Create a UDP agent and attach it to node n0
set udp0 [new Agent/UDP]
$udp0 set class_ 1
$ns attach-agent $n0 $udp0

# Create a CBR traffic source and attach it to udp0
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0

#Create a UDP agent and attach it to node n1
set udp1 [new Agent/UDP]
$udp1 set class_ 2
$ns attach-agent $n1 $udp1

# Create a CBR traffic source and attach it to udp1
set cbr1 [new Application/Traffic/CBR]
$cbr1 set packetSize_ 500
$cbr1 set interval_ 0.005
$cbr1 attach-agent $udp1

#Create a Null agent (a traffic sink) and attach it to node n3
set null0 [new Agent/Null]
$ns attach-agent $n3 $null0

#Connect the traffic sources with the traffic sink
$ns connect $udp0 $null0  
$ns connect $udp1 $null0

#Schedule events for the CBR agents
$ns at 0.5 "$cbr0 start"
$ns at 1.0 "$cbr1 start"
$ns at 4.0 "$cbr1 stop"
$ns at 4.5 "$cbr0 stop"
#Call the finish procedure after 5 seconds of simulation time
$ns at 5.0 "finish"

#Run the simulation
$ns run

 

Save it into example.tcl and run the following command:

ns example.tcl
Network Animator - Simulated Network
Network Animator – Simulated Network

If everything goes fine, you will see the animation of network on Nam.

Enjoy simulating!

The following two tabs change content below.

Vipin Raj

Vipin Raj is a software developer specialized in PostgreSQL Database and Data Modeling, the man behind technobytz and an IoT and Security enthusiast. Having 3+ years of experience in the IT industry, he is currently pursuing his masters in computer science and information security. He spend his free time writing blog posts with the intension of sharing his knowledge to the tech community.

5 thoughts on “How to Install Network Simulator (NS2) & nam in Ubuntu 14.04

  • May 5, 2016 at 10:22 pm
    Permalink

    this works perfectly fine, thanks you so much.

    Reply
  • September 15, 2016 at 9:52 am
    Permalink

    Help please, Terminal showing the below ,when I run it

    wrong # args: should be “_o3 self class proc src dst”
    (Simulator connect line 1)
    invoked from within
    “$ns connect $udp0 $null0 &nbsp”
    (file “ok.tcl” line 68)

    Reply
  • January 24, 2017 at 3:15 pm
    Permalink

    this the error show in terminal when the program runned .So can can any one tell me whats the problem.

    wrong # args: should be “_o3 self class proc src dst”
    (Simulator connect line 1)
    invoked from within
    “$ns connect $udp0 $null0 &nbsp”
    (file “example.tcl” line 68)

    Reply
  • May 7, 2017 at 2:48 pm
    Permalink

    True Code is here, there’s some mistake in above

    #Create a simulator object
    set ns [new Simulator]

    #Define different colors for data flows
    $ns color 1 Blue
    $ns color 2 Red

    #Open the nam trace file
    set nf [open out.nam w]
    $ns namtrace-all $nf

    #Define a ‘finish’ procedure
    proc finish {} {
    global ns nf
    $ns flush-trace
    #Close the trace file
    close $nf
    #Execute nam on the trace file
    exec nam out.nam;
    exit 0
    }

    #Create four nodes
    set n0 [$ns node]
    set n1 [$ns node]
    set n2 [$ns node]
    set n3 [$ns node]

    #Create links between the nodes
    $ns duplex-link $n0 $n2 1Mb 10ms DropTail
    $ns duplex-link $n1 $n2 1Mb 10ms DropTail
    $ns duplex-link $n3 $n2 1Mb 10ms SFQ

    $ns duplex-link-op $n0 $n2 orient right-down
    $ns duplex-link-op $n1 $n2 orient right-up
    $ns duplex-link-op $n2 $n3 orient right

    #Monitor the queue for the link between node 2 and node 3
    $ns duplex-link-op $n2 $n3 queuePos 0.5

    #Create a UDP agent and attach it to node n0
    set udp0 [new Agent/UDP]
    $udp0 set class_ 1
    $ns attach-agent $n0 $udp0

    # Create a CBR traffic source and attach it to udp0
    set cbr0 [new Application/Traffic/CBR]
    $cbr0 set packetSize_ 500
    $cbr0 set interval_ 0.005
    $cbr0 attach-agent $udp0

    #Create a UDP agent and attach it to node n1
    set udp1 [new Agent/UDP]
    $udp1 set class_ 2
    $ns attach-agent $n1 $udp1

    # Create a CBR traffic source and attach it to udp1
    set cbr1 [new Application/Traffic/CBR]
    $cbr1 set packetSize_ 500
    $cbr1 set interval_ 0.005
    $cbr1 attach-agent $udp1

    #Create a Null agent (a traffic sink) and attach it to node n3
    set null0 [new Agent/Null]
    $ns attach-agent $n3 $null0

    #Connect the traffic sources with the traffic sink
    $ns connect $udp0 $null0
    $ns connect $udp1 $null0

    #Schedule events for the CBR agents
    $ns at 0.5 “$cbr0 start”
    $ns at 1.0 “$cbr1 start”
    $ns at 4.0 “$cbr1 stop”
    $ns at 4.5 “$cbr0 stop”
    #Call the finish procedure after 5 seconds of simulation time
    $ns at 5.0 “finish”

    #Run the simulation
    $ns run

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *