#Create a simulator object
set ns [new Simulator]
#Open a nam trace file
set nf [open PING.nam w]
$ns namtrace-all $nf
#Open a trace file
set nt [open PING.tr w]
$ns trace-all $nt
#Define a finish procedure
proc finish {} {
global ns nf nt
$ns flush-trace
close $nf
close $nt
exec nam PING.nam &
exit 0
}
#Create six nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
# Connect the nodes with two links
$ns duplex-link $n0 $n1 1Mb 10ms DropTail
$ns duplex-link $n2 $n1 1Mb 10ms DropTail
$ns duplex-link $n3 $n1 1Mb 10ms DropTail
$ns duplex-link $n4 $n1 1Mb 10ms DropTail
$ns duplex-link $n5 $n1 1Mb 10ms DropTail
#Set queue length
$ns queue-limit $n0 $n1 5
$ns queue-limit $n2 $n1 2
$ns queue-limit $n3 $n1 5
$ns queue-limit $n4 $n1 2
$ns queue-limit $n5 $n1 2
#Label the nodes
$n0 label "ping0"
$n1 label "Router"
$n2 label "ping2"
$n3 label "ping3"
$n4 label "ping4"
$n5 label "ping5"
#Color the flow
$ns color 2 Blue
$ns color 3 Red
$ns color 4 Yellow
$ns color 5 Green
#Define s ‘recv’ function for the class ‘Agent/Ping’
Agent/Ping instproc recv {from rtt} {
$self instvar node_
puts "node [$node_ id] received ping answer from \
$from with round-trip-time $rtt ms."
}
#Create ping agents and attach them to the nodes
set p0 [new Agent/Ping]
$ns attach-agent $n0 $p0
$p0 set class_ 1
set p2 [new Agent/Ping]
$ns attach-agent $n2 $p2
$p2 set class_ 2
set p3 [new Agent/Ping]
$ns attach-agent $n3 $p3
$p3 set class_ 3
set p4 [new Agent/Ping]
$ns attach-agent $n4 $p4
$p4 set class_ 4
set p5 [new Agent/Ping]
$ns attach-agent $n5 $p5
$p5 set class_ 5
#Connect the two agents
$ns connect $p2 $p5
$ns connect $p3 $p5
proc SendPingPacket { } {
global ns p2 p3
set intervalTime 0.001
set now [$ns now]
$ns at [expr $now+$intervalTime] "$p2 send"
$ns at [expr $now+$intervalTime] "$p3 send"
$ns at [expr $now+$intervalTime] "SendPingPacket"
}
$ns at 0.1 "SendPingPacket"
$ns at 2.0 "finish"
$ns run
AWK FILE:(Open a new editor using “gedit command” and write awk file and save with “.awk” extension)
BEGIN{
count=0;
}
{
if($1==”d”)
count++;
}
END
{
printf (“No. of packets dropped is= %d\n”, count);
}
Steps for execution Open gedit editor and type program. Program name should have the extension “ .tcl ” [root@localhost ~]# gedit lab2.tcl Save the program and close the file. Open gedit editor and type awk program. Program name should have the extension “.awk ” [root@localhost ~]# gedit lab2.awk Save the program and close the file. Run the simulation program [root@localhost~]# ns lab2.tcl 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. After simulation is completed run awk file to see the output , [root@localhost~]# awk –f lab2.awk lab2.tr To see the trace file contents open the file as , [root@localhost~]# gedit lab2.tr

