List of Network Simulators provides an integrated, versatile, easy-to-use GUI-based network designer tool to design and also simulate a network with SNMP, TL1, TFTP, FTP, Telnet and also Cisco IOS device.
List of Network Simulators:
There are different network simulators which also offers different features. we also 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 also a discrete event simulator that provides substantial support for simulation of TCP, routing, and also multicast protocols over wired and wireless networks.
- Also It use C++ and also OTcl languages.
- Sample ns2 code. In which there are also 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 runNS3 (Network Simulator 3):
- Ns3 uses C++ and also Python languages for simulating the script.
- C++ used for implementation of simulation and also 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 also 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 also open architecture discrete event simulator framework.
- The most common use of OMNeT++ is also 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 also 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 also distributed systems.
- Both behavior and performance of modeled systems can also analyzed by performing discrete event simulations.
- C is a main programming language in OPNET and also 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 #endifQualNet:
- It is also a commercial network simulator from Scalable Network Technologies.
- Also It is ultra high-fidelity network simulation software that predicts wireless, wired and mixed-platform network and also networking device performance.
- A simulator for large, heterogeneous networks and also the distributed applications that execute on such networks
- It use C++ for implementing new protocols and also follows a procedural paradigm.
JSIM:
- It’s also 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>[java 1="drcl.inet.Link" language="::new"][/java]</pre> $link_ setPropDelay 0.3; # 300ms set adjMatrix_ <pre>[java 1="{int[" language="::new"][/java]</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