Basics of NS2 and Otcl/tcl script
Simulation is the process of learning by doing. Whenever there is something new in the world, we try to analyze it first by examining it and in the process get to learn a lot of things. This entire course is called Simulation.
Correlating to this process, in order to understand all the complexities one needs to model the entire role-play in form of computer simulation, the need is to build artificial objects and assign them roles dynamically.
Computer simulation is the designing of a theoretical physical system on a digital computer with emphasis on model designing, execution, and analysis. After the creation of the mathematical model, the most important step is to create a computer program for updating the state and event variables through time (by time slicing or event scheduling). If this simulation is carried out successively in parallel computers, it is called Parallel or Distributed simulation.
Network simulation (NS) is one of the types of simulation, which is used to simulate the networks such as in MANETs, VANETs, etc. It provides simulation for routing and multicast protocols for both wired and wireless networks. NS is licensed for use under version 2 of the GNU (General Public License) and is popularly known as NS2. It is an object-oriented, discrete event-driven simulator written in C++ and Otcl/Tcl.
NS-2 can be used to implement network protocols such as TCP and UPD, traffic source behavior such as FTP, Telnet, Web, CBR, and VBR, router queues management mechanism such as Drop Tail, RED, and CBQ, routing algorithms, and many more. In ns2, C++ is used for detailed protocol implementation and Otcl is used for the setup. The compiled C++ objects are made available to the Otcl interpreter and in this way, the ready-made C++ objects can be controlled from the OTcl level.
Install NS-2 using this command :
sudo apt-get install ns2
Nam is also needed to install. Nam (Network Animator) is an animation tool to graphically represent the network and packet traces. Use this command :
sudo apt-get install nam
Some basic Otcl script syntax :
Basic Command :
Explanation: In the first line, the variable a is assigned the value 8. In the second line, the result of the command [expr $a/8], which equals 1, is then used as an argument to another command, which in turn assigns a value to the variable b. The “$” sign is used to obtain a value contained in a variable and square brackets are an indication of command substitution.
Define new procedures with proc command :
To open a file for reading :
Similarly, put command is used to write data into the file
To call subprocesses within another process, exec is used, which creates a subprocess and waits for it to complete.
To be able to run a simulation scenario, a network topology must first be created. In ns2, the topology consists of a collection of nodes and links.
The simulator object has member functions that enable the creation of the nodes and define the links between them. The class simulator contains all the basic functions. Since ns was defined to handle the Simulator object, the command $ns is used for using the functions belonging to the simulator class.
In the network topology nodes can be added in the following manner :
Traffic agents (TCP, UDP, etc.) and traffic sources (FTP, CBR, etc.) must be set up if the node is not a router. It enables to creation CBR traffic source using UDP as transport protocol or an FTP traffic source using TCP as a transport protocol.
CBR traffic source using UDP :
FTP traffic source using TCP :
Below is the implementation of creating links between the source and destination using both FTP and TCP :