Professional Documents
Culture Documents
Compiling programs:
Compiling Programs:
However, the complexity of OPNET Modeler and lack of useful support material make it
difficult for many users to fully make use of its benefits. The Modeler’s library offers more than
400 out-of-the-box protocols and vendor device models including IPv6, TCP/UDP, UMTS,
VoIP/Video/FTP/HTTP/Email, WiMAX, LTE, WLAN (a/b/g/n) and so on, to support accurate
event-driven simulation scenarios.
The project editor, which reflects the network domain, constitutes network topology and
configures nodes and links. The results of interest are chosen in the project domain and can be
viewed after running the simulation.
The node editor generates models of nodes by identifying internal structures and capabilities
of specific device of architecture.
Creating a Project
From the File menu, choose New.
Select Project and click OK.
Name the project <Project_Name> scenario <Scenario_Name>.
Click OK.
Click Next in the Startup Wizard.
Creating Scenario
In the scenario Wizard dialog, the following can be identified:
Initial Topology
Network Scale
Specify Size
Model Family
Review Check
Adding Components
Assuming that the general network topology has been constructed, it might be needed to add a a
new components, say a server. The second method of creating network objects can be used which
is dragging them from the object palette into the workspace.
If it is not already open, open the object palette by clicking on the Object Palette action
button.
Find the object in the palette and drag it into the workspace.
If additional copies of this model is needed, right-click to turn off node creation.
To link components, a link is drawn, connecting the two objects, then Right-click to turn
off link creation.
Editing Attributes
The properties of objects can be changed such as hubs, switches, work station, eNodes,
UEs, etc. by editing the attributes.
Right click on the object is desired to be edited.
Choose Edit attributes.
Statistics
There are two types of statistics:
o Statistics that are collected from individual nodes in a network (object statistics).
o Statistics that are collected for the entire network as a whole (global statistics).
Global statistics are used to gather information about the network as a whole. They are
averaged values of the object statistics. For example, the delay for the entire network can
be found by collecting the global Delay statistic.
User has to specify the statistics to be collected before simulation from DES Menu.
To run a simulation:
For first time, you need to configure the simulation, duration, random seed and so on.
From the DES Menu, choose Configure\run Discreet Event Simulation.
Instead, you can press “Ctrl+R” in the Keyboard
Type can specify the duration of simulation in the “Duration” box.
Type can specify the random seed in the “Seed” box.
Type can specify the Values per statistic (e.t., the resolution of the simulations, how often
it is collected) in the “Values per statistic” box.
Once the simulation is configured, you want to run with the current configurations,
choose “Run Discreet Event Simulation” from DES Menu.
Instead, you can press “shift+ Ctrl+R” in the keyboard.
While the simulation is running, a window appears showing the simulation’s progress
(progress bar).
Warning: do not try to interact with the simulator while simulation is running, it might
halt the simulation and cause loss of data since you have only one license.
Only one simulation can run at the time per license.
View Results
The results can be viewed after the simulation is finished
To view existing results, go to DES Menu> Result> View Results
Statistics (results) can be exported to spreadsheet files (excel files) and be organized
further for better presentation (MATLAB can be used) since OPNET modeler does not
offer a very flexible presentations of the results.
Debugging
A good debugging tool is the Simulation Log. You can check for warnings and errors.
Click on DES Menu> Result> Open Simulation Log.
Live Debagging can be made for advanced user using the OPNET Simulation Debugger
(ODB) and should be set before running the simulation by checking the box in the
simulation configuration screen.
4. Simulate Shared LAN and Switch LAN using
OPNET.
Create a New Project
To create a new project for the Ethernet network:
1. To create the network configuration, select Topology → Rapid Configuration. From the
drop-down menu choose Star and click OK.
2. Click the Select Models button in the Rapid Configuration dialog box. From the Model List
drop-down menu choose ethernet and click OK.
3. In the Rapid Configuration dialog box, set the following five values Center Node Model =
ethernet16_hub, Periphery Node Model = ethernet_station, Link Model = 10BaseT,
Number=16, Y=50, and Radius = 42 → and click OK.
The prefix ethernet16_ indicates that the device supports up to 16 Ethernet connections.
1. Right-click on node_16, which is the hub Edit Attributes Change the name attribute to
Hub1 and click OK.
2. Now that you have created the network, it should look like the following one.
Make sure to save your project.
1. Right-click on any of the 16 stations (node_0 to node_15) → Select Similar Nodes. Now all
stations in the network are selected.
2. Right-click on any of the 16 stations → Edit Attributes.
A. Check the Apply Changes to Selected Objects check box. This is important to avoid
reconfiguring each node individually.
3. Expand the hierarchies of the Traffic Generation Parameters attribute and the Packet
Generation Arguments attribute → Set the following four values:
Choose Statistics
To choose the statistics to be collected during the simulation:
1. Right-click anywhere in the project workspace and select Choose Individual Statistics from
the pop-up menu.
2. In the Choose Results dialog box, choose the following four statistics:
The Ethernet Delay represents the end to end delay of all packets received by all the stations.
Traffic Received (in packets/sec) by the traffic sinks across all nodes.
Traffic Sent (in packets/sec) by the traffic sources across all nodes.
Collision Count is the total number of collisions encountered by the hub during packet
transmissions.
3. Click OK.
3. Select the Traffic Sent (packets/sec) statistic and click Show. The resulting graph should
resemble the one below. As you can see, the traffic sent in both scenarios is almost identical.
4. Select the Traffic Received (packets/sec) statistic and click Show. The resulting graph
should resemble the one below. As you see, the traffic received with the second scenario,
HubAndSwitch, is higher than that of the OnlyHub scenario.
5. Select the Delay (sec) statistic and click Show. The resulting graph should resemble the one
below. (Note: Result may vary slightly due to different node placement.)
6. Select the Collision Count statistic for Hub1 and click Show.
7. On the resulting graph right-click anywhere on the graph area → Choose Add Statistic →
Expand the hierarchies as shown below Select the → Collision Count Statistic for Hub2 →
Change As Is to time_average → Click Add.
8. The resulting graph should resemble the one below.
5. Simulate RIP with and without failure using OPNET
Simulator.
No_Failure Scenario creation
1. Start OPNET IT Guru → Choose File → New from the file menu → Select Project and Click
OK
2. Enter the name of the project to be RIP_Test, and the scenario to be NO_Failure and Click
OK
3. In the Startup wizard:
Initial Topology Dialog box_ Create Empty Scenario is selected_ Click Next
Network Scale List _ Select Campus_ Click Next three times_ Click OK
4. Right-click Router1_Edit Attributes _ Expand the “IP Routing Routers” hierarchy and set the
value of “Routing Table Export” to Once at the end of the simulation.
5. Make three more copies and make sure that your network look like this
{If the RIP Sim Efficiency is enabled, then RIP will stop after the “RIP Stop Time”. But, we
need RIP to keep updating the routing table in case there is any change in the network.}
In the network we just created, the routers will build their routing tables and then they will
notneed to update them further because we did not simulate any node or link failures.
Click Ok and then save the project_ Run Simulation for the duration of 10 minutes as before.
In Failure scenario, we created a link failure where more traffic is sent and set time is 200
seconds to fail the simulation (200 second equal to3minutes and 20 seconds). In result the RIP in
effected nodes send out an update of their routing table to place that failure.
For further data traffic and update, we find the IP address of the routers for OPNET interface.
1. Select the File menu. Choose Model Files → Refresh Model Directories.
2. From the File menu, choose Open.
3. Instead of “Project”, select “Generic Data File” from the pull-down menu.
4. Select the RIP_Test-No_Failure-ip_addresses (Note that the other file created from the
Failure scenario should also contain the same information). Click OK.
5. The following is a part of the gdf file. It shows the IP addresses assigned to all interfaces in
the network.
6. Introduction to network simulator (ns-2).
The network simulator is discrete event packet level simulator. The network simulator covers a
very large number of application of different kind of protocols of different network types
consisting of different network elements and traffic models. Network simulator is a package of
tools that simulates behavior of networks such as creating network topologies, log events that
happen under any load, analyze the events and understand the network. Well the main aim of our
first experiment is to learn how to use network simulator and to get acquainted with the simulated
objects and understand the operations of network simulation and we also need to analyze the
behavior of the simulation object using network simulation.
Before we get into the program we should consider the following things:
From the above command we get that a variable ns is being initialized by using the set command.
Here the code [new Simulator] is an instantiation of the class Simulator which uses the reserved
word 'new'. So we can call all the methods present inside the class simulator by using the variable
ns.
In the above, we create an output trace file out.tr and a nam visualization file out.nam. But in the
Tcl script they are not called by their names declared, while they are called by the pointers
initialized for them such as tracefile1 and namfile1 respectively. The line which starts with '#' are
commented. The next line opens the file 'out.tr' which is used for writing is declared 'w'. The next
line uses a simulator method trace-all by which we will trace all the events in a particular format.
In the above the word 'proc' is used to declare a procedure called 'finish’. The word 'global' is
used to tell what variables are being used outside the procedure.
'flush-trace' is a simulator method that dumps the traces on the respective files. The command
'close' is used to close the trace files and the command 'exec' is used to execute the nam
visualization. The command 'exit' closes the application and returns 0 as zero (0) is default for
clean exit.
Thus the entire operation ends at 125 seconds.To begin the simulation we will use the command
1 #start the the simulation process
2 $ns run
In the above we created a node that is pointed by a variable n0.While referring the node in the
script we use $n0. Similarly we create another node n2.Now we will set a link between the two
nodes.
1 $ns duplex-link $n0 $n2 10Mb 10ms DropTail
So we are creating a bi-directional link between n0 and n2 with a capacity of 10Mb/sec and a
propagation delay of 10ms.
In NS an output queue of a node is implemented as a part of a link whose input is that node to
handle the overflow at the queue. But if the buffer capacity of the output queue is exceeded then
the last packet arrived is dropped and here we will use a 'DropTail' option. Many other options
such as RED(Random Early Discard) mechanism, FQ(Fair Queuing), DRR(Deficit Round
Robin), SFQ(Stochastic Fair Queuing) are available.
So now we will define the buffer capacity of the queue related to the above link
1 #Set queue size of the link
2 $ns queue-limit $n0 $n2 20
TCP is a dynamic reliable congestion protocol which is used to provide reliable transport of
packets from one host to another host by sending acknowledgements on proper transfer or loss of
packets.Thus TCP requires bi-directional links in order for acknowledgements to return to the
source.
Now we will show how to set up tcp connection between two nodes
1 #setting a tcp connection
2
3 set tcp [new Agent/TCP]
4 $ns attach-agent $n0 $tcp
5 set sink [new Agent/TCPSink]
6 $ns attach-agent $n4 $sink
7 $ns connect $tcp $sink
8 $tcp set fid_1
9 $tcp set packetSize_552
The command 'set tcp [new Agent/TCP]' gives a pointer called 'tcp' which indicates the tcp agent
which is an object of ns. Then the command '$ns attach-agent $n0 $tcp' defines the source node
of tcp connection. Next the command 'set sink [new Agent/TCPSink]' defines the destination of
tcp by a pointer called sink. The next command '$ns attach-agent $n4 $sink' defines the
destination node as n4.Next, the command '$ns connect $tcp $sink' makes the TCP connection
between the source and the destination i.e. n0 and n4.When we have several flows such as TCP,
UDP etc. in a network. So, to identify these flows we mark these flows by using the command
'$tcp set fid_1'. In the last line we set the packet size of tcp as 552 while the default packet size of
tcp is 1000.
File Transfer Protocol (FTP) is a standard mechanism provided by the Internet for transferring
files from one host to another. Well this is the most common task expected from a networking or
a inter networking. FTP differs from other client server applications in that it establishes between
the client and the server. One connection is used for data transfer and other one is used for
providing control information. FTP uses the services of the TCP. It needs two connections. The
well Known port 21 is used for control connections and the other port 20 is used for data
transfer.
Well here we will learn in how to run a FTP connection over a TCP
1 #Initiating FTP over TCP
2
3 set ftp [new Application/FTP]
4 $ftp attach-agent $tcp
In above, the command 'set ftp [new Application/FTP]' gives a pointer called 'ftp' which indicates
the FTP application. Next, we attach the ftp application with tcp agent as FTP uses the services
of TCP.
UDP
The User datagram Protocol is one of the main protocols of the Internet protocol suite. UDP
helps the host to send messages in the form of datagrams to another host which is present in an
Internet protocol network without any kind of requirement for channel transmission setup. UDP
provides a unreliable service and the datagrams may arrive out of order, appear duplicated, or go
missing without notice. UDP assumes that error checking and correction is either not necessary
or performed in the application, avoiding the overhead of such processing at the network
interface level. Time-sensitive applications often use UDP because dropping packets is preferable
to waiting for delayed packets, which may not be an option in a real-time system.
Similarly,the command 'set udp [new Agent/UDP]' gives a pointer called 'udp' which indicates
the udp agent which is a object of ns. Then the command '$ns attach-agent $n1 $udp' defines the
source node of udp connection. Next the command 'set null [new Agent/Null]' defines the
destination of udp by a pointer called null. The next command '$ns attach-agent $n5 $null'
defines the destination node as n5.Next, the command '$ns connect $udp $null' makes the UDP
connection between the source and the destination .i.e. n1 and n5.When we have several flows
such as TCP, UDP etc. in a network. So, to identify these flows we mark these flows by using the
command '$udp set fid_2
Constant Bit Rate (CBR) is a term used in telecommunications, relating to the quality of service.
When referring to codecs, constant bit rate encoding means that the rate at which a codec's output
data should be consumed is constant. CBR is useful for streaming multimedia content on limited
capacity channels since it is the maximum bit rate that matters, not the average, so CBR would be
used to take advantage of all of the capacity. CBR would not be the optimal choice for storage as
it would not allocate enough data for complex sections (resulting in degraded quality) while
wasting data on simple sections.
In the above we define a CBR connection over a UDP one. Well we have already defined the
UDP source and UDP agent as same as TCP. Instead of defining the rate we define the time
interval between the transmission of packets in the command '$cbr set rate_0.01Mb'. Next, with
the help of the command '$cbr set random _false' we can set random noise in cbr traffic. We can
keep the noise by setting it to 'false' or we can set the noise on by the command '$cbr set random
_1'. We can set by packet size by using the command '$cbr set packetSize_(packetsize).We can
set the packet size up to sum value in bytes.
Scheduling Events
In ns the tcl script defines how to schedule the events or in other words at what time which event
will occur and stop. This can be done using the command
$ns at .
We can also define the color of cbr and tcp packets for identification in NAM. For this we use the
following command
1 #Marking the flows
2 $ns color1 Blue
3 $ns color2 Red
To view the network animator we need to type the command: nam
Tracing
Tracing Objects
NS simulation can produce visualization trace as well as ASCII file corresponding to the events
that are registered at the network. While tracing ns inserts four objects: EnqT, DeqT, RecvT &
DrpT. EnqT registers information regarding the arrival of packet and is queued at the input queue
of the link. When overflow of a packet occurs, then the information of the dropped packet is
registered in DrpT. DeqT holds the information about the packet that is dequeued instantly.
RecvT hold the information about the packet that has been received instantly.
1. The first field is event. It gives you four possible symbols '+' '-' 'r' 'd'. These four symbols
correspond respectively to enqueued, dequeued, received and dropped.
2. The second field gives the time at which the event occurs
3. The third field gives you the input node of the link at which the event occurs
4. The fourth field gives you the output node at which the event occurs
5. The fifth field shows the information about the packet type .i.e. whether the packet is UDP or
TCP
6. The sixth field gives the packet size
7. The seventh field give information about some flags
8. The eight field is the flow id(fid) for IPv6 that a user can set for each flow in a tcl script.It is
also used for specifying the color of flow in NAM display
9. The ninth field is the source address
10. The tenth field is the destination address
11. The eleventh field is the network layer protocol's packet sequence number
12. The last field shows the unique id of packet
The package downloaded will be named "ns-allinone-2.35.tar.gz". Copy it to the home folder.
Then in a terminal use the following two commands to extract the contents of the package.:
Once the installation is over, we have to make a change in the "ls.h" file. Use the following steps
to make the changes:
Navigate to the folder "linkstate", use the following command. Here it is assumed that the ns
folder extracted is in the home folder of your system.
cd ~/ns-allinone-2.35/ns-2.35/linkstate
Scroll to the 137th line. In that change the word "error" to "this->error".
The image below shows the line 137 (highlighted in the image below) before making the changes
to the ls.h file.
The image below shows the line 137 (highlighted in the image below) after making the changes to
the ls.h file.
Installation
Now we are ready to install ns2. To do so we first require root privileges and then we can run the
install script. Use the following commands:
Running ns2
Once the system has restarted, open a terminal and start ns2 by using the following command:
ns
If the installation is correct then the terminal looks like the image below :
8. Simulate three nodes point-to-point networks with a
duplex link between them. Set the queue size and vary
the bandwidth and find number of packets dropped.
TCL Script: three_nodes.tcl
set ns [new Simulator]
# open a nam trace file in write mode
set nf [open out1.nam w]
# nf nam filename
$ns namtrace-all $nf
# tf trace filename
set tf [open out.tr w]
$ns trace-all $tf
# creates 3 nodes
set n0 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
# establishing links
$ns duplex-link $n0 $n2 200Mb 10ms DropTail
$ns duplex-link $n2 $n3 1Mb 1000ms DropTail
$ns queue-limit $n0 $n2 10
proc finish { } {
global ns nf tf
# clears trace file contents
$ns flush-trace
close $nf
close $tf
exec nam out1.nam &
exit 0
}
BEGIN{ c=0;}
{
if($1=="d")
{ c++;
printf("%s\t%s\n",$5,$11);
}
}
END{ printf("The number of packets dropped = %d\n",c); }
Here “ns” indicates network simulator. We get the topology shown in the snapshot.
Now press the play button in the simulation window and the simulation will begins.