0% found this document useful (0 votes)
11 views9 pages

Ex - No 7

lab manual

Uploaded by

rmsnekaas786
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views9 pages

Ex - No 7

lab manual

Uploaded by

rmsnekaas786
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

Ex.

No:7 Study of Network simulator (NS) and Simulation of Congestion Control


Algorithms using NS.

Aim:

To simulate the behaviour of TCP congestion control using NS 2 simulator.

Algorithm:

Step 1:Create a network simulator object ns to invoke simulation

Step 2:Using an object open a file in write mode

Step 3:Using the aforesaid object write all the trace output into the file

Step 4:Using an object create a file to write all nam window output into it

Step 5:Set color to represent each flow

Step 6:Create 6 nodes

Step 7: Create duplex-link from node 0 to node n2 of bandwidth 2Mb with delay 10ms
using DropTail Queue

Step 8: Create duplex-link from node 1 to node n2 of bandwidth 2Mb with delay 10ms
using DropTail Queue

Step 9:Create duplex-link from node 2 to node n3 of bandwidth 0.3Mb with delay 200ms
using DropTail Queue

Step 10:Create duplex-link from node 3 to node n4 of bandwidth 0.5Mb with delay 40ms
using DropTail Queue

Step 11:Create duplex-link from node 3 to node n5 of bandwidth 0.5Mb with delay 30ms
using DropTail Queue

Step 12:Attach tcp reno agents to node 0 as tcp1

Step 13:Attach tcp reno agents to node 1 as tcp2

Step 14:Attach tcp reno agents to node 2 as tcp3

Step 15:Attach tcp reno agents to node 1 as tcp4

Step 16:Set fid 1 for tcp 1

Step 17:Set fid 2 for tcp 2

Step 18:Set fid 3 for tcp 3

Step 19:Set fid 4 for tcp 4


Step 20:Attach sink agents to node 4, node 5, node 3 and node 4

Step 21:Establish the traffic between the source and sink

Step 22:Setup a FTP traffic generator on "tcp"

Step 23:Attach ping agent to node 0 and node 4 ,connect it to calculate RTT

Step 24:Create a method to call ping.cc file

Step 25:Initiate the start and stop of the traffic profiles

Step 26:Set the end of simulation at 80 th second

Step 27:P lot the congestion window # cwnd_ used from tcp-reno.cc file

Step 28:Call the finish procedure to execute the nam window file and congestion trace file

Step 30:Run the simulation.


Program:

set ns [new Simulator]

set f [ open congestion.tr w ]

$ns trace-all $f

set nf [ open congestion.nam w ]

$ns namtrace-all $nf

$ns color 1 Red

$ns color 2 Blue

$ns color 3 White

$ns color 4 Green

#to create 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]

# to create the link between the nodes with bandwidth, delay and queue

$ns duplex-link $n0 $n2 2Mb 10ms DropTail

$ns duplex-link $n1 $n2 2Mb 10ms DropTail

$ns duplex-link $n2 $n3 0.3Mb 200ms DropTail

$ns duplex-link $n3 $n4 0.5Mb 40ms DropTail

$ns duplex-link $n3 $n5 0.5Mb 30ms DropTail

# Sending node with agent as Reno Agent

set tcp1 [new Agent/TCP/Reno]

$ns attach-agent $n0 $tcp1

set tcp2 [new Agent/TCP/Reno]


$ns attach-agent $n1 $tcp2

set tcp3 [new Agent/TCP/Reno]

$ns attach-agent $n2 $tcp3

set tcp4 [new Agent/TCP/Reno]

$ns attach-agent $n1 $tcp4

$tcp1 set fid_ 1

$tcp2 set fid_ 2

$tcp3 set fid_ 3

$tcp4 set fid_ 4

# receiving (sink) node

set sink1 [new Agent/TCPSink]

$ns attach-agent $n4 $sink1

set sink2 [new Agent/TCPSink]

$ns attach-agent $n5 $sink2

set sink3 [new Agent/TCPSink]

$ns attach-agent $n3 $sink3

set sink4 [new Agent/TCPSink]

$ns attach-agent $n4 $sink4

# establish the traffic between the source and sink

$ns connect $tcp1 $sink1

$ns connect $tcp2 $sink2

$ns connect $tcp3 $sink3

$ns connect $tcp4 $sink4

# Setup a FTP traffic generator on "tcp"

set ftp1 [new Application/FTP]

$ftp1 attach-agent $tcp1

$ftp1 set type_ FTP


set ftp2 [new Application/FTP]

$ftp2 attach-agent $tcp2

$ftp2 set type_ FTP

set ftp3 [new Application/FTP]

$ftp3 attach-agent $tcp3

$ftp3 set type_ FTP

set ftp4 [new Application/FTP]

$ftp4 attach-agent $tcp4

$ftp4 set type_ FTP

# RTT Calculation Using Ping ------------------------------------------------

set p0 [new Agent/Ping]

$ns attach-agent $n0 $p0

set p1 [new Agent/Ping]

$ns attach-agent $n4 $p1

#Connect the two agents

$ns connect $p0 $p1

# Method call from ping.cc file

Agent/Ping instproc recv {from rtt} {

$self instvar node_

puts "node [$node_ id] received ping answer from \

$from with round-trip-time $rtt ms."

# ---------------------------------------------------------------------------

# start/stop the traffic

$ns at 0.2 "$p0 send"

$ns at 0.3 "$p1 send"

$ns at 0.5 "$ftp1 start"


$ns at 0.6 "$ftp2 start"

$ns at 0.7 "$ftp3 start"

$ns at 0.8 "$ftp4 start"

$ns at 66.0 "$ftp4 stop"

$ns at 67.0 "$ftp3 stop"

$ns at 68.0 "$ftp2 stop"

$ns at 70.0 "$ftp1 stop"

$ns at 70.1 "$p0 send"

$ns at 70.2 "$p1 send"

# Set simulation end time

$ns at 80.0 "finish"

# procedure to plot the congestion window

# cwnd_ used from tcp-reno.cc file

proc plotWindow {tcpSource outfile} {

global ns

set now [$ns now]

set cwnd_ [$tcpSource set cwnd_]

# the data is recorded in a file called congestion.xg.

puts $outfile "$now $cwnd_"

$ns at [expr $now+0.1] "plotWindow $tcpSource $outfile"

set outfile [open "congestion.xg" w]

$ns at 0.0 "plotWindow $tcp1 $outfile"

proc finish {} {

exec nam congestion.nam &

exec xgraph congestion.xg -geometry 300x300 &

exit 0
}

# Run simulation

$ns run
Output:
Result:

Thus the program to simulate the behaviour of TCP congestion control using NS 2
simulator.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy