NS2 Program

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 24

EX NO:6

IMPLEMENTATION OF DISTANCE VECTOR ROUTIG PROTOCOL USING NS2

AIM To simulate a link failure and to observe distance vector routing protocol in action using NS2. ALGORITHM 1. Define new simulator 2. Define different colors for data flows (for NAM) 3. Define a new Trace file and open it 4. Define a new NAM Trace file and open it 5. Define a 'finish' procedure to flush trace record in the `trace and trace output files. 6. Define the routing protocol as Distance Vector (DV) 7. Create six nodes n0,n1,..n5 8. Create links between the nodes with 0.3Mb and 10 ms Link with DropTail option 9. Give node position (for NAM) to place six nodes in the layout 10.Setup a TCP connection attach TCP Source Agent to node n0 and TCP sink agent to node n5 11.Setup a FTP over TCP connection 12.Define configuration such that link between nodes n1 and n4 to be failed at 1.0 interval, and up again at 4.5 interval 13.Start the simulation

PROGRAM #distvect.tcl #Create a simulator object set ns [new Simulator] #Tell the simulator to use dynamic routing $ns rtproto DV #Open the nam trace file set nf [open out.nam w] $ns namtrace-all $nf #Define finish procedure proc finish {} { global ns nf $ns flush-trace #Close the trace file close $nf #Execute nam on the trace file exec nam a out.nam & exit 0 } #Create seven nodes for {set i 0} {$i < 7} {incr i} { set n($i) [$ns node] } #Create links between the nodes for {set i 0} {$i < 7} {incr i} { $ns duplex-link $n($i) $n([expr ($i+1)%7]) 1Mb 10ms DropTail } #Create a UDP agent and attach it to node n(0) set udp0 [new Agent/UDP] $ns attach-agent $n(0) $udp0 #Create a CBR traffic source and attach it to udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 #Create a Null agent (traffic sink) and attach it to node n(3) set null0 [new Agent/Null] $ns attach-agent $n(3) $null0 #Connect the traffic source with the traffic sink $ns connect $udp0 $null0 #Schedule events for the CBR agent and the network dynamics

$ns at 0.0 "$n(0) label Source" $ns at 0.0 "$n(3) label Destination" $ns at 0.5 "$cbr0 start" $ns rtmodel-at 1.0 down $n(1) $n(2) $ns rtmodel-at 2.0 up $n(1) $n(2) $ns at 4.5 "$cbr0 stop" #Call the finish procedure after 5 seconds of simulation time $ns at 5.0 "finish" #Run the simulation $ns run Output $ ns distvect.tcl

RESULT Thus the performance of distance vector protocol and complex constructs were studied using NS2.

EXNO.7 AIM

IMPLEMENTATION OF UDP PERFORMANCE USING NS2

To implement the performance of UDP by simulating a simple network using NS2. ALGORITHM 1. Create a simulator object 2. Define different flows for data flows 3. Open the NAM trace file in write mode 4. Create nodes n0, n1, n2 and n3 5. Specify the link between nodes 6. Describe their layout topology 7. Monitor queue on the link n2 to n3 vertically 90 8. Create a UDP agents udp0, udp1 and attach it to nodes n0 and n1 respectively 9. Create a CBR traffic cbr0, cbr1 and attach it to udp0 and udp1 respectively 10. Create a traffic sink and attach it to node n3 11. Connect sources to the sink 12. Label the nodes 13. Schedule cbr0 to start at 0.5 and stop at 4.5 seconds 14. Schedule cbr1 to start at 1.0 and stop at 4.0 seconds 15. Call finish procedure at 5.0 seconds 16. Run the simulation 17. Execute NAM on the trace file 18. Observe simulated events on the NAM and packet flow on link n2-n3 19. Stop

PROGRAM #udp.tcl #Create a simulator object set ns [new Simulator] #Define different colors for data flows $ns color 1 Blue $ns color 2 Red #Open the nam trace file set nf [open out.nam w] $ns namtrace-all $nf #Define finish procedure proc finish {} { global ns nf $ns flush-trace #Close the trace file close $nf #Execute nam on the trace file exec nam -a out.nam & exit 0 } #Create four nodes set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] #Create links between the nodes

$ns duplex-link $n0 $n2 1Mb 10ms DropTail $ns duplex-link $n1 $n2 1Mb 10ms DropTail $ns duplex-link $n3 $n2 1Mb 10ms SFQ #Create links between the nodes $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n2 $n3 orient right #Monitor the queue for the link between node 2 and node 3 $ns duplex-link-op $n2 $n3 queuePos 0.5 #Create a UDP agent and attach it to node n0 set udp0 [new Agent/UDP] $udp0 set class_ 1 $ns attach-agent $n0 $udp0 # Create a CBR traffic source and attach it to udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 #Create a UDP agent and attach it to node n1 set udp1 [new Agent/UDP] $udp1 set class_ 2 $ns attach-agent $n1 $udp1 # Create a CBR traffic source and attach it to udp1 set cbr1 [new Application/Traffic/CBR] $cbr1 set packetSize_ 500 $cbr1 set interval_ 0.005 $cbr1 attach-agent $udp1

#Create a Null agent (a traffic sink) and attach it to node n3 set null0 [new Agent/Null] $ns attach-agent $n3 $null0 #Connect traffic sources with the traffic sink $ns connect $udp0 $null0 $ns connect $udp1 $null0 #Schedule events for the CBR agents $ns at 0.0 "$n0 label Sender1" $ns at 0.0 "$n1 label Sender2" $ns at 0.0 "$n2 label Router" $ns at 0.0 "$n3 label Receiver" $ns at 0.5 "$cbr0 start" $ns at 1.0 "$cbr1 start" $ns at 4.0 "$cbr1 stop" $ns at 4.5 "$cbr0 stop" #Call finish procedure after 5 seconds of simulation time $ns at 5.0 "finish" #Run the simulation $ns run

Output $ ns udp.tcl

RESULT Thus the performance of UDP and basic network parameters was studied using NS2.

EX.NO.8 PERFORMANCE COMPARISION OF MAC PROTOCOLS USING NS2 AIM To implement two MAC protocols and compare their performance using network simulator (NS2) ALGORITHM A ) UNSLOTTED ALOHA 1. Define new simualtor 2. Define different colors for data flows (for NAM) 3. Define a new Trace file and open it 4. Define a new NAM Trace file and open it 5. Define the MAC protocol as Unslotted ALOHA 6. Create four nodes n0,n1,..n4 7. Create links between the nodes with 2Mb and 10 ms Link and 1.7Mb and 20 ms with DropTail option 8. Give node position (for NAM) to place six nodes in the layout 9. Set Queue Size of link between node n2 and n3 as 10 10.Setup a TCP connection attach TCP Source Agent to node n0 and TCP sink agent to node n3 11.Setup a FTP over TCP connection 12.Setup a UDP connection attach UDP Source Agent to node n0 and UDP sink agent to node n3 13.Setup CBR traffic over TCP connection 14.Define a 'finish' procedure to flush trace record in the `trace and trace output files. 15.Schedule events for simulation 16.Run the simulation

B ) SLOTTED ALOHA 1. Define new simualtor 2. Define different colors for data flows (for NAM) 3. Define a new Trace file and open it 4. Define a new NAM Trace file and open it 5. Define the MAC protocol as Slotted ALOHA 6. Create four nodes n0,n1,..n4 7. Create links between the nodes with 2Mb and 10 ms Link and 1.7Mb and 20 ms with DropTail option 8. Give node position (for NAM) to place six nodes in the layout 9. Set Queue Size of link between node n2 and n3 as 10 10.Setup a TCP connection attach TCP Source Agent to node n0 and TCP sink agent to node n3 11.Setup a FTP over TCP connection 12.Setup a UDP connection attach UDP Source Agent to node n0 and UDP sink agent to node n3 13.Setup CBR traffic over TCP connection 14.Define a 'finish' procedure to flush trace record in the `trace and trace output files. 15.Schedule events for simulation 16.Run the simulation

PROGRAM #Create a simulator object set ns [new Simulator] #Tell the simulator to use dynamic routing $ns rtproto DV $ns macType Mac/Sat/UnslottedAloha #Open the nam trace file set nf [open aloha.nam w] $ns namtrace-all $nf #Open the output files set f0 [open aloha.tr w] $ns trace-all $f0 #Define a 'finish' procedure proc finish {} { global ns f0 nf $ns flush-trace #Close the trace file close $f0 close $nf #Call xgraph to display the results exec nam aloha.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] # Create duplex links between nodes with bandwidth and distance $ns duplex-link $n0 $n4 1Mb 50ms DropTail $ns duplex-link $n1 $n4 1Mb 50ms DropTail $ns duplex-link $n2 $n5 1Mb 1ms DropTail $ns duplex-link $n3 $n5 1Mb 1ms DropTail $ns duplex-link $n4 $n5 1Mb 50ms DropTail $ns duplex-link $n2 $n3 1Mb 50ms DropTail # Create a duplex link between nodes 4 and 5 as queue position $ns duplex-link-op $n4 $n5 queuePos 0.5 #Create a UDP agent and attach it to node n(0) set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 # Create a CBR traffic source and attach it to udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0

#Create a Null agent (a traffic sink) and attach it to node n(3) set null0 [new Agent/Null] $ns attach-agent $n2 $null0 #Connect the traffic source with the traffic sink $ns connect $udp0 $null0 #Schedule events for the CBR agent and the network dynamics $ns at 0.5 "$cbr0 start" $ns rtmodel-at 1.0 down $n5 $n2 $ns rtmodel-at 2.0 up $n5 $n2 $ns at 4.5 "$cbr0 stop" #Call the finish procedure after 5 seconds of simulation time $ns at 5.0 "finish"

OUTPUT #Run the simulation $ns run

RESULT Thus the implementation of two MAC protocols and their performance are done successfully using network simulator (NS2).

EX.NO. 9 AIM

IMPLEMENTATION OF TCP PERFORMANCE USING NS2

To implement the performance of a TCP network with drop tail queue mechanism on the Gateway using NS2. ALGORITHM 1. Create a simulator object 2. Define different flows for data flows 3. Open NAM trace file and drop-tail trace file in write mode 4. Create source nodes (s1, s2, s3), gateway (G) and receiver (r) 5. Specify the link between nodes 6. Describe their layout topology 7. Define the queue size between nodes G and r as 5 8. Monitor queue on all links vertically 90 9. Create TCP agents tcp1, tcp2, tcp3 and attach it to nodes s1, s2 and s3 respectively 10. Create three TCP sinks and attach it to node r 11. Connect traffic sources to the sink 12. Create FTP agents ftp1, ftp2, ftp3 and attach it to tcp1, tcp2 and tcp3 respectively 13. Label the nodes at start time 14. Schedule ftp1, ftp2, ftp3 to start at 0.1 and stop at 5.0 seconds 15. Call finish procedure at 5.25 seconds 16. Run the simulation 17. Execute NAM on the trace file 18. Observe the simulated events on the NAM editor and packet flow on link n2-n3 19. View the trace file and analyse the events 20. Stop

PROGRAM #tcp.cl #Create a simulator object set ns [new Simulator] #Open trace files set f [open droptail-queue-out.tr w] $ns trace-all $f #Open the nam trace file set nf [open droptail-queue-out.nam w] $ns namtrace-all $nf #s1, s2 and s3 act as sources. set s1 [$ns node] set s2 [$ns node] set s3 [$ns node] #G acts as a gateway. set G [$ns node] #r acts as a receiver. set r [$ns node] #Define different colors for data flows $ns color 1 red ;# the color of packets from s1 $ns color 2 SeaGreen ;# the color of packets from s2 $ns color 3 blue ;# the color of packets from s3 #Create links between the nodes $ns duplex-link $s1 $G 6Mb 10ms DropTail $ns duplex-link $s2 $G 6Mb 10ms DropTail $ns duplex-link $s3 $G 6Mb 10ms DropTail $ns duplex-link $G $r 3Mb 10ms DropTail

#Define the queue size for the link between node G and r $ns queue-limit $G $r 5 #Define the layout of the topology $ns duplex-link-op $s1 $G orient right-up $ns duplex-link-op $s2 $G orient right $ns duplex-link-op $s3 $G orient right-down $ns duplex-link-op $G $r orient right #Monitor the queues for links $ns duplex-link-op $s1 $G queuePos 0.5 $ns duplex-link-op $s2 $G queuePos 0.5 $ns duplex-link-op $s3 $G queuePos 0.5 $ns duplex-link-op $G $r queuePos 0.5 #Create a TCP agent and attach it to node s1 set tcp1 [new Agent/TCP/Reno] $ns attach-agent $s1 $tcp1 $tcp1 set window_ 8 $tcp1 set fid_ 1 #Create a TCP agent and attach it to node s2 set tcp2 [new Agent/TCP/Reno] $ns attach-agent $s2 $tcp2 $tcp2 set window_ 8 $tcp2 set fid_ 2 #Create a TCP agent and attach it to node s3 set tcp3 [new Agent/TCP/Reno] $ns attach-agent $s3 $tcp3 $tcp3 set window_ 4 $tcp3 set fid_ 3

#Create TCP sink agents and attach them to node r set sink1 [new Agent/TCPSink] set sink2 [new Agent/TCPSink] set sink3 [new Agent/TCPSink] $ns attach-agent $r $sink1 $ns attach-agent $r $sink2 $ns attach-agent $r $sink3 #Connect the traffic sources with the traffic sinks $ns connect $tcp1 $sink1 $ns connect $tcp2 $sink2 $ns connect $tcp3 $sink3 #Create FTP applications and attach them to agents set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 set ftp2 [new Application/FTP] $ftp2 attach-agent $tcp2 set ftp3 [new Application/FTP] $ftp3 attach-agent $tcp3 #Define a 'finish' procedure proc finish {} { global ns $ns flush-trace puts "running nam..." exec nam -a droptail-queue-out.nam & exit 0 }

#Schedule labels $ns at 0.0 "$s1 label Sender1" $ns at 0.0 "$s2 label Sender2" $ns at 0.0 "$s3 label Sender3" $ns at 0.0 "$G label Gateway" $ns at 0.0 "$r label Receiver" #Schedule ftp events $ns at 0.1 "$ftp1 start" $ns at 0.1 "$ftp2 start" $ns at 0.1 "$ftp3 start" $ns at 5.0 "$ftp1 stop" $ns at 5.0 "$ftp2 stop" $ns at 5.0 "$ftp3 stop" #Call finish procedure after 5 seconds of simulation time $ns at 5.25 "finish" #Run the simulation $ns run

OUTPUT $ ns tcp.tcl

RESULT: Thus the behavior of TCP sessions was observed and the basic components of TCP Transmissions were understood.

You might also like