Aim:
To
write a ns2 program for implementing carrier sense multiple access.
Algorithm:
Step
1: start the program.
Step
2: declare the global variables ns for creating a new simulator.
Step
3: set the color for packets.
Step
4: open the network animator file in the write mode.
Step
5: open the trace file and the win file in the write mode.
Step
6: transfer the packets in network.
Step
7: create the capable no of nodes.
Step
8: create the duplex-link between the nodes including the delay
time,bandwidth and dropping
. queue mechanism.
Step
9: give the position for the links between the nodes.
Step
10: set a tcp connection for source node.
Step
11: set the destination node using tcp sink.
Step
12: set the window size and the packet size for the tcp.
Step
13: set up the ftp over the tcp connection.
Step
14:.set the udp and tcp connection for the source and destination.
Step
15: create the traffic generator CBR for the source and destination
files.
Step
15: define the plot window and finish procedure.
Step
16: in the definition of the finish procedure declare the global
variables.
Step
17: close the trace file and namefile and execute the network
animation file.
Step
18: at the particular time call the finish procedure.
Step
19: stop the program.
Program:
set
ns [new Simulator]
$ns
color 1 blue
$ns
color 2 red
set
fi1 [open out.tr w]
set
winfile [open WinFile w]
$ns
trace-all $fi1
set
fi2 [open out.nam w]
$ns
namtrace-all $fi2
proc
finish {} {
global
ns fi1 fi2
$ns
flush-trace
close
$fi1
close
$fi2
exec
nam out.nam &
exit
0
}
set
n0 [$ns node]
set
n1 [$ns node]
set
n2 [$ns node]
set
n3 [$ns node]
set
n4 [$ns node]
set
n5 [$ns node]
$n1
color red
$n1
shape box
$ns
duplex-link $n0 $n2 2Mb 10ms DropTail
$ns
duplex-link $n1 $n2 2Mb 10ms DropTail
$ns
simplex-link $n2 $n3 0.3Mb 100ms DropTail
$ns
simplex-link $n3 $n2 0.3Mb 100ms DropTail
set
lan [$ns newLan "$n3 $n4 $n5" 0.5Mb 40ms LL Queue/DropTail
MAC/Csma/Cd Channel]
set
tcp [new Agent/TCP/Newreno]
$ns
attach-agent $n0 $tcp
set
sink [new Agent/TCPSink/DelAck]
$ns
attach-agent $n4 $sink
$ns
connect $tcp $sink
$tcp
set fid_ 1
$tcp
set window_ 8000
$tcp
set packetsize_ 552
set
ftp [new Application/FTP]
$ftp
attach-agent $tcp
$ftp
set type_ FTP
set
udp [new Agent/UDP]
$ns
attach-agent $n1 $udp
set
null [new Agent/Null]
$ns
attach-agent $n5 $null
$ns
connect $udp $null
$udp
set fid_ 2
set
cbr [new Application/Traffic/CBR]
$cbr
attach-agent $udp
$cbr
set type_ CBR
$cbr
set packet_size_ 1000
$cbr
set rate_ 0.01mb
$cbr
set random_ false
$ns
at 0.1 "$cbr start"
$ns
at 1.0 "$ftp start"
$ns
at 24.0 "$ftp stop"
$ns
at 24.5 "$cbr stop"
proc
plotwindow { tcpSource file } {
global
ns
set
time 0.1
set
now [$ns now]
set
cwnd [$tcpSource set cwnd_]
set
wnd [$tcpSource set window_]
puts
$file "$now $cwnd"
$ns
at [expr $now+$time] "plotwindow $tcpSource $file"
}
$ns
at 1.0 "plotwindow $tcp $winfile"
$ns
at 5 "$ns trace-annotate \"packet drop\""
$ns
at 125.0 "finish"
$ns
run