Ns3 Projects for B.E/B.Tech M.E/M.Tech PhD Scholars.  Phone-Number:9688312542   E-mail:ns3simulation@gmail.com

List of Network Simulators

Network Simulator provides an integrated, versatile, easy-to-use GUI-based network designer tool to design and simulate a network with SNMP, TL1, TFTP, FTP, Telnet and Cisco IOS device.

List of Network Simulators:

There are different network simulators which offers different features. we have listed different network simulators and sample program code

  • Ns2 (Network Simulator 2).
  • Ns3 (Network Simulator 3).
  • OPNET.
  • OMNeT++.
  • NetSim.
  • REAL.
  • QualNet.
  • J-Sim.

NS2 (Network Simulator 2):

  • It is a discrete event simulator that provides substantial support for simulation of TCP, routing, and multicast protocols over wired and wireless networks.
  • It use C++ and OTcl languages.
  • Sample ns2 code. In which there are four different nodes are available and two different routers.
set node(s1) [$ns node]
set node(s2) [$ns node]
set node(r1) [$ns node]
set node(r2) [$ns node]
set node(s3) [$ns node]
set node(s4) [$ns node]
$ns duplex-link $node(s1) $node(r1) 15Mb 2.5ms DropTail
$ns duplex-link $node(s2) $node(r1) 15Mb 3.2ms DropTail
$ns duplex-link $node(r1) $node(r2) 2.5Mb 22ms RED
$ns queue-limit $node(r1) $node(r2) 28
$ns queue-limit $node(r2) $node(r1) 28
$ns duplex-link $node(s3) $node(r2) 15Mb 4.2ms DropTail
$ns duplex-link $node(s4) $node(r2) 15Mb 5ms DropTail
$ns duplex-link-op $node(s1) $node(r1) orient right-down
$ns duplex-link-op $node(s2) $node(r1) orient right-up
$ns duplex-link-op $node(r1) $node(r2) orient right
$ns duplex-link-op $node(r1) $node(r2) queuePos 0
$ns duplex-link-op $node(r2) $node(r1) queuePos 0
$ns duplex-link-op $node(s3) $node(r2) orient left-down
$ns duplex-link-op $node(s4) $node(r2) orient left-up
set tcp1 [$ns create-connection TCP/Reno $node(s1) TCPSink
$node(s3) 0]
$tcp1 set window_ 15
set tcp2 [$ns create-connection TCP/Reno $node(s2) TCPSink
$node(s3) 1]
$tcp2 set window_ 15
set ftp1 [$tcp1 attach-source FTP]
set ftp2 [$tcp2 attach-source FTP]
$ns at 0.0 "$ftp1 start"
$ns at 3.0 "$ftp2 start"
$ns at 15 "finish"
$ns run

NS3 (Network Simulator 3):

  • Ns3 uses C++ and Python languages for simulating the script.
  • C++ used for implementation of simulation and core model. Ns-3 is built as a library which may be statically or dynamically linked to a C++ main program.
  • Python: C++ wrapped by Python. Python programs to import an “ns3” module
  • Sample code for ns3.

int main (int argc, char *argv[])
{
LogComponentEnable ("UdpEchoClientApplication",
LOG_LEVEL_INFO);
LogComponentEnable ("UdpEchoServerApplication",
LOG_LEVEL_INFO);
RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
NodeContainer nodes; nodes.Create (2);
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute("DataRate",StringValue("5Mbps”));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
InternetStackHelper stack; stack.Install (nodes);
Ipv4AddressHelper address;
address.SetBase ("10.1.1.0", "255.255.255.0");
Ipv4InterfaceContainer interfaces = address.Assign (devices);
UdpEchoServerHelper echoServer (9);
ApplicationContainer serverApps = echoServer.Install (nodes.Get(1));
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));
UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);
echoClient.SetAttribute ("MaxPackets", UintegerValue (1));
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.)));
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));
ApplicationContainer clientApps = echoClient.Install (nodes.Get(0));
clientApps.Start (Seconds (2.0)); clientApps.Stop (Seconds (10.0));
Simulator::Run (); Simulator::Destroy (); return 0;}

 

OMNeT++:

  • It is a component-based, modular and open architecture discrete event simulator framework.
  • The most common use of OMNeT++ is for simulation of computer networks, but it is also used for queuing network simulations and other areas as well.
  • C++ is a class library, eclipse based simulation IDE is used for designing, running and evaluating simulations.
  • Sample code for OMNeT++

#include <omnetpp.h>
class Sink: public cSimpleModule
{ Module_Class_Members(Sink, cSimpleModule, 8192);
virtual void activity(); };
Define_Module(Sink);
void Sink::activity()
{ while(1)
{ cMessage *msg = receive(); int pkt_type = msg -> kind();
if (pkt_type ==1) ev << “Received data packet\n”;
else ev << “Received voice packet\n”; delete msg;} }

 

OPNET:

  • It provides a comprehensive development environment supporting the modeling of communication networks and distributed systems.
  • Both behavior and performance of modeled systems can be analyzed by performing discrete event simulations.
  • C is a main programming language in OPNET and use GUI for initial configurations. The simulation scenario requires c or C++
  • Sample code for OPNET

ifndef OMSC_EXPORT
#define OMSC_EXPORT
#endif
#ifndef _OMS_DATA_DEF_H_INCL_
#define _OMS_DATA_DEF_H_INCL_
/* Include the database data structures. */
#include "/home/juan/op_models/aplicaciones/oms_data_def_ds_defs.h"
#if defined (__cplusplus)
extern "C" {
#endif
/** -------- Data Structures --------- **/
/** ------ External Functions --------- **/
OMSC_EXPORT void
oms_data_def_entry_insert (const char* category_name, const char* entry_name, void* entry_ds_ptr);
OMSC_EXPORT void*
oms_data_def_entry_access (const char* category_name, const char* entry_name);
#if defined (__cplusplus)
} /* end of 'extern "C" {' */
#endif
#endif

QualNet:

  • It is a commercial network simulator from Scalable Network Technologies.
  • It is ultra high-fidelity network simulation software that predicts wireless, wired and mixed-platform network and networking device performance.
  • A simulator for large, heterogeneous networks and the distributed applications that execute on such networks
  • It use C++ for implementing new protocols and follows a procedural paradigm.

 

JSIM:

  • It’s a java based simulator tool.
  • Java is easy to learn and easy to use. In case of any problems, source texts provided with J-Sim can be used to generate new code, compiled in the target environment, thus 100-percent compatible with JVM used
  • Use java and Tcl languages
  • Sample code for JSIM.

# echoer.tcl
cd [mkdir -q drcl.comp.Component /test]
puts "create topology..."
set link_
<pre></pre>
$link_ setPropDelay 0.3; # 300ms
set adjMatrix_
<pre></pre>
[]} 3 {{1} {0 2} {1}}]
java::call drcl.inet.InetUtil createTopology [! .] $adjMatrix_
$link_
puts "create builders..."
set nb [mkdir drcl.inet.NodeBuilder .nodeBuilder]
$nb setBandwidth 1.0e7; puts "build..."
$nb build [! n?]
$nb build [! h?] {
Udp drcl.inet.transport.UDP
echo 101/udp new_echoer }
! h?/udp setTTL 3
! n1 setBandwidth 1 1.0e4;! n1 setBufferSize 1 6000;
puts "setup static routes..."
java::call drcl.inet.InetUtil setupRoutes [! h0] [! h2]
"bidirection"
puts "set up simulator..."
set sim [attach_simulator .]
puts "Done!"

NetSim:

  • It has an object-oriented system modeling and simulation (M&S) environment to support simulation and analysis of voice and data communication scenarios for High Frequency Global Communication Systems (HFGCS).
  • NetSim use java as a programming language it creates applet and linked into HTML document for viewable on the java-compatible browser.

 

REAL:

  • REAL is a simulator for studying the dynamic behavior of flow and congestion control schemes in packet switch data networks.
  • It provides users with a way of specifying such networks and to observe their behavior.
  • REAL uses C as a programming languge.
  • Sample code for REAL simulator

#include "../kernel/real.h"
ecn_dummy() { PKT_PTR pkt; int node, num_pkts_sent = 0;
ident destn, sender, sink; long key; timev now;
int seq_no = 0; node = get_node_id();
sink = assigned_sink[node];
abs_advance(node_start_time[node]); now = runtime();
if(node is 1) { make_pkt(pkt); pkt->dest = sink;
pkt->data[0] = num_pkts[node]; sendm(sink, 0, pkt);
printf("Node 1 sent request packet\n");}
for (ever) { sender = recvm(&destn, &key, &pkt);
now = runtime(); switch (pkt->type){ case ACK: free(pkt);
break;
case INT: free(pkt); break;
case DATA: pkt->type = ACK;
pkt->dest = pkt->source; pkt->source= node;
sendm(pkt->dest, 0, pkt); break