Friday, 1 January 2016

Network Simulator-2
Contents

1. What is NS2
2. Features of NS2

3. Basic Architecture

4. Why Two language? (TCL and C++)

5. Installing NS2 on windows 7

6. Example on NS2

7. Advantages and Disadvantages of NS2

8. References​


How to install Cygwin & NS-2 in windows

1. What is NS2

NS2 stands for Network Simulator Version 2. It is an open-source event-driven simulator designed specifically for research in computer communication networks.


2. Features of NS2
1. It is a discrete event simulator for networking research.

2. It provides substantial support to simulate bunch of protocols like TCP, FTP, UDP, HTTP and DSR.

3. It simulates wired and wireless network.

4. It is primarily Unix based.

5. Uses TCL as its scripting language.

6. Otcl: Object oriented support

7. Tclcl: C++ and otcl linkage

8. Discrete event scheduler

3. Basic Architecture
NS2 consists of two key languages: C++ and Object-oriented Tool Command Language (OTcl). While the C++ defines the internal mechanism (i.e., a backend) of the simulation objects, the OTcl sets up simulation by assembling and configuring the objects as well as scheduling discrete events. The C++ and the OTcl are linked together using TclCL

[​IMG]



4. Why two language? (TCL and C++)
NS2 uses OTcl to create and configure a network, and uses C++ to run simulation. All C++ codes need to be compiled and linked to create an executable file.
Use OTcl

- For configuration, setup, or one time simulation, or

- To run simulation with existing NS2 modules.

This option is preferable for most beginners, since it does not involve complicated internal mechanism of NS2. Unfortunately, existing NS2 modules are fairly limited. This option is perhaps not sufficient for most researchers.



Use C++

- When you are dealing with a packet, or – when you need to modify existing NS2 modules.

This option perhaps discourages most of the beginners from using NS2. This book particularly aims at helping the readers understand the structure of NS2 and feel more comfortable in modifying NS2 modules.

5. Installing NS2 on windows 7
NS2 builds and runs under windows using Cygwin. Cygwin provides Linux like environment under windows.
System Requirements: A computer with C++ compiler. Building full NS2 package requires large memory space approximately 250MB

I. Steps to install NS 2 on windows 7 are given below
1. Download Cygwin from following link http://www.cygwin.com/setup.exe
2. Run the downloaded setup.exe and you will see screen shown below click next.

[​IMG]

3. Select option “Install From Internet”. If you have already downloaded the package select “Install from local directory” and click next

[​IMG]

4. Keep the default installation directory as “C:\cygwin” and click next

[​IMG]

5. Keep default local package directory as your download folder and click next.



[​IMG]





6. Next screen will ask for your Internet connection type keep it as “Direct connection” and click next and in next screen choose one site to download the packages and click next.

[​IMG]

7. In next screen Cygwin will allow to select the packages you want to install

[​IMG]

8. Uncheck the option “Hide obsolete packages” then click on “view” button till the word “category” changes to “Full”

[​IMG]

To install NS2 you need to select and install following packages:
gcc
gcc-g++
gnuplot
make
patch
perl
tar
X-startup-scripts
xorg-x11-base
xorg-x11-bin
xorg-x11-devel
xorg-x11-bin-dlls
xorg-x11-bin-lndir
xorg-x11-etc
xorg-x11-fenc
xorg-x11-fnts
xorg-x11-libs-data
xorg-x11-xwin
libxt-devel
libXmu-devel

To select a package search the package name and click on word “skip” this will change it to version number of the package. Do this for all above packages and click next to start download and installation

[​IMG]

9. Once installation is complete create desktop icons if you need.
[​IMG]

NOTE: If you missed any package while installing Cygwin first time you can install it by running the setup.exe again and selecting the package in step 8.

10. Cygwin installation is complete now you can run Cygwin from desktop and see its interface.





II. Steps is to install NS2
1. Download NS2 from following link: http://www.isi.edu/nsnam/dist/ns-allinone-2.28.tar.gz

2. Decompress the file use winrar. Copy the decompressed folder the Cygwin installation directory under the subdirectory home. It will be C:\cygwin\home\system_name : where system_name is name of your system in above Cygwin installation this path will be C:\Cygwin\home\sys27

3. Run Cygwin from desktop and change the directory to folder you copied just now in step 2 command to change directory:
cd /home/sys27/ns-allinone-2.28

NOTE: please change sys27 to name of your system

4. To start installation type following command: “./install” (WITHOUT qoutes)

This will began the installation process if any Cygwin package is missing it will be reported to you if so the run Cygwin setu.exe and install the missing package and start again from step 2.

Installation is a long process and take quite some time once it is finished you will get a screen as shown below:

[​IMG]

5. Add following lines to the .bashrc

export NS_HOME=/home/sys27/ns-allinone-2.28
export PATH=$NS_HOME/nam-1.11:$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk8.4.5/unix:$NS_HOME/bin:$PATH
export LD_LIBRARY_PATH=$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk8.4.5/unix:$NS_HOME/otcl-1.9:$NS_HOME/lib:$LD_LIBRARY_PATH
export TCL_LIBRARY=$NS_HOME/tcl8.4.5/library

NOTE: replace sys27 with your system name

6. To check if NS2 is installed correctly you can run one sample example given in ns-tutorials folder

To run the example change the directory to examples folder:
cd ./home/sys27/ns-allinone-2.28/ns-tutorial/examples

Then type following command:
ns example2.tcl

[​IMG]

[​IMG]

Tools for generating TCL Script for NS2
NS2 a very common and widely used tool to simulate small and large area networks. Tcl scripts are widely used in NS-2 simulation tool. Tcl scripts are used to set up a wired or wireless communication network, and then run these scripts via the NS-2 for getting the simulation results.
Several tools are available to design networks and generate TCL scripts some of them are discussed below

I. NS2 scenario Generator (NSG):

Its a java based tool that can run on any platform and can generate TCL scripts for wired and Wireless scenarios for NS2.Main features of NSG are:

1. Creating Wired and wireless nodes by drag and drop.

2. Creating Simplex and Duplex links for wired network.

3. Creating Grid, Random and Chain topologies.

4. Creating TCP and UDP agents. Also supports TCP

5. Tahoe, TCP Reno, TCP New-Reno and TCP Vegas.

6. Supports Ad Hoc routing protocols such as DSDV,

7. AODV, DSR and TORA.

8. Supports FTP and CBR applications.

9. Supports node mobility.

10. Setting the packet size, start time of simulation, end

11. Time of simulation, transmission range and interference

12. Range in case of wireless networks, etc.

13.Setting other network parameters such as bandwidth, etc for wireless scenarios

II. Visual Network Simulator (VNS):

This tool is centered on capabilities of NSG. It also provides support to Differentiated Services (DiffServ) scenarios and simple and intuitive set of icons to represent the components of a network. Some features of VNS are given below:

1. Adding and configuration of links, agents and traffic sources.

2. Modeling network scenarios with support to multicast.

3. Selection of a dynamic routing protocol.

4. Definition of the simulation output as an animation and/or graphics.

5. Edition of the Tcl script generated.

6. Saving the defined simulation scenario

III. NS 2 Workbench

Ns Bench makes NS-2 simulation development and analysis faster and easier for students and researchers without losing the flexibility or expressiveness gained by writing a script. Some features are:

1. Nodes, simplex/duplex links and LANs
2. Agents: TCP,UDP, TCPSink, TCP/Fack,TCP/FullTcp, TCP/Newreno, TCP/Reno,TCP/Sack1, TCPSink, TCPSink/Sack1,TCPSink/DelAck,

3. TCPSink/Sack1/DelAck,TCP/Vegas, Null Agent.

4. Applications/Traffic: FTP, Telent, Http/Server,Http/Client, Http/Cache, webtraf, Traffic/CBR,Traffic/Pareto, Traffic/Exponential.

5. Services: Multicast, Packet Scheduling, RED, Diff-Serv.

6. Creating “Groups” concept to compensate for “loops”.

7. Scenario generator.

8. Link Monitors.

9. Loss Models.

10. Routing Protocols

IV. Network Simulation by Mouse (NSBM)

NSBM, developed in java, is a graphical tool that is used to generate TCL script using a mouse. Nodes and links can be created with a single mouse click. You can draw a network topology with multiple nodes with only a few mouse clicks. Afterwards you click on a button and there is the TCL code, almost ready for use with the ns.
NSBM used in order to process the XML configuration data. It must provide many functions, which are specified only in the configuration data at run time. Because the classes are implementation-specific, classes generated by the binding compiler in one JAXB implementation will probably not work with another JAXB implementation. So if you change to another JAXB implementation, you should rebind the schema with the binding compiler provided by that implementation

Trace Files Generated in NS2
NS2 currently supports a number of different types of trace files. In addition to its own format, NS2 also has the Nam trace format, which contains the necessary information from the simulation to drive the Nam visualizer. Both of these trace formats are very specific when it comes to giving details about the events that occur during an NS2 simulation.
Traces and monitors represent the only support for data collection in ns-2. Traces record events related to the generation, enqueueing, forwarding, and dropping of packets. Each event corresponds to a line of ASCII characters, which contains information on the event type and the information stored into the packet
NS-2 provides three kinds of formats for wired networks: Tracing, Monitoring and NAM trace file.

I. Tracing: Trace file format is given below:

[​IMG]1.Operation performed in the simulation
2 Simulation time of event occurrence

3 Node 1 of what is being traced

4 Node 2 of what is being traced

5 Packet type

6 Packet size

7 Flags

8 IP flow identifier

9 Packet source node address

10 Packet destination node address

11 Sequence number

12 Unique packet identifier
II. Monitoring

Queue monitoring refers to the capability of tracking the dynamics of packets at a queue (or other object). A queue monitor tracks packet arrival/departure/drop statistics, and may optionally compute averages of these values. Monitoring was useful tools to find detail information about queue.

Flow monitor trace format is given below:

[​IMG]

III. NAM trace files which are used by NAM for visualization of ns simulations. The NAM trace file should contain topology information like nodes, links, queues, node connectivity etc as well as packet trace information. A NAM trace file has a basic format to it. Each line is a NAM event. The first character on the line defines the type of event and is followed by several flags to set options on that event. There are 2 sections in that file, static initial configuration events and animation events. All events with -t * in them are configuration events and should be at the beginning of the file.

Example of NAM file is:

[​IMG]

6. Example on NS2
NS workbench is used in following examples to create scenarios and generate TCL scripts, which are then run in NS2 to generate trace file and NAM file

To use NS workbench you will need Java Sdk installed on your system then download ns-bench jar file and execute it to start ns workbench

Example 1:

The network consists of five nodes n0 to n4. In this scenario, node n0 sends constant bit-rate (CBR) traffic to node n3, and node n1 transfers data to node n4 using a file transfer protocol (FTP). These two carried traffic sources are carried by transport layer protocols User Datagram Protocol (UDP) and Transmission Control Protocol (TCP), respectively. In NS2, the transmitting object of these two protocols are a UDP agent and a TCP agent, while the receivers are a Null agent and a TCP sink agent, respectively.

Network created by ns workbench is shown below

[​IMG]Then Generate the TCL script and save it. Script generated is given below:

# Creating New Simulator
set ns [new Simulator]

# Setting up the traces
set f [open outEx1.tr w]
set nf [open outEx1.nam w]
$ns namtrace-all $nf
$ns trace-all $f

proc finish {} {

global ns nf f
$ns flush-trace
puts “Simulation completed.”
close $nf
close $f
exit 0
}

#
#Create Nodes
#

set n0 [$ns node]
puts “n0: [$n0 id]”
set n1 [$ns node]
puts “n1: [$n1 id]”
set n2 [$ns node]
puts “n2: [$n2 id]”
set n3 [$ns node]
puts “n3: [$n3 id]”
set n4 [$ns node]
puts “n4: [$n4 id]”

#
#Setup Connections
#

$ns duplex-link $n0 $n2 100Mb 5ms DropTail
$ns duplex-link $n2 $n4 54Mb 10ms DropTail
$ns duplex-link $n1 $n2 100Mb 5ms DropTail
$ns duplex-link $n2 $n3 54Mb 10ms DropTail
$ns queue-limit $n2 $n3 40
$ns simplex-link $n3 $n4 10Mb 15ms DropTail
$ns simplex-link $n4 $n3 10Mb 15ms DropTail
#
#Set up Transportation Level Connections
#

set tcp0 [new Agent/TCP]
$ns attach-agent $n1 $tcp0

set udp1 [new Agent/UDP]
$udp1 set dst_addr_ Unicast
$udp1 set fid_ 1
$ns attach-agent $n0 $udp1

set null0 [new Agent/Null]
$ns attach-agent $n3 $null0

set sink0 [new Agent/TCPSink]
$ns attach-agent $n4 $sink0

#
#Setup traffic sources
#

set ftp0 [new Application/FTP]
$ftp0 attach-agent $tcp0

set cbr0 [new Application/Traffic/CBR]
$cbr0 set rate_ 2Mb
$cbr0 set packetSize_ 1000
$cbr0 attach-agent $udp1
$ns connect $udp1 $null0
$udp1 set fid_ 0
$ns connect $tcp0 $sink0
$tcp0 set fid_ 1

#
#Start up the sources
#

$ns at 0.05 “$ftp0 start”
$ns at 0.1 “$cbr0 start”
$ns at 60.0 “$ftp0 stop”
$ns at 60.5 “$cbr0 stop”
$ns at 61.0 “finish”
$ns run

Then to run the script in NS2 start Cygwin and change directory path to folder you saved your TCL script in and then use ns command to run the script.

[​IMG]

Once the simulation is completed two files OutEx1.tr and OutEx1.nam will be generated in the same folder.

Content of Nam file

[​IMG]
To run the Network Animator in the finish procedure of the script call nam.exe with name file name as

proc finish {} {

global ns nf f

$ns flush-trace

close $nf

close $f

exec nam outEx1.nam &

exit 0

}

[​IMG]

7. Advantages and Disadvantages of NS2
Advantages

1. Cheap- Does not require costly equipment

2. Complex scenarios can be easily tested.

3. Results can be quickly obtained – more ideas can be tested in a smaller time frame.

4. Supported protocols

5. Supported platforms

6. Modularity

7. Popular

Disadvantages

1. Real system too complex to model. i.e. complicated structure.

2. Bugs are unreliable

8. References
1. The Network Simulator – ns-2. [Online]. Available: ttp://www.isi.edu/nsnam/ns/

2. Tools-for-Creating-TCL-Script-in-Network Simulator-2-NS-2

No comments:

Post a Comment