Studying TCP's Congestion Window using NS
2020-12-13 13:41
标签:des style http color io os ar for strong that contains the congestion window size of the TCP module So you can use the procedure to plot the CWND from any number of TCP flows. You should first open an output file (or use "stdout") in the main program (New code is colored as magenta ) To run the program, use the command: To plot the window progressing from "winfile", do: Add the following statements to the simulation to get the one I used in class: Plot data of TCP 1 will be store in file "WinFile1" Plot data of TCP 2 will be store in file "WinFile2" http://www.mathcs.emory.edu/~cheung/Courses/558-old/Syllabus/90-NS/3-Perf-Anal/TCP-CWND.html Studying TCP's Congestion Window using NS 标签:des style http color io os ar for strong 原文地址:http://www.cnblogs.com/forcheryl/p/4053028.htmlStudying TCP‘s Congestion Window using NS
cwnd_
set tcp1 [new Agent/TCP/Reno]
set cwnd1 [ $tcp1 set cwnd_ ] // read variable "cwnd_"
proc plotWindow {tcpSource outfile} {
global ns
set now [$ns now]
set cwnd [$tcpSource set cwnd_]
# Print TIME CWND for gnuplot to plot progressing on CWND
puts $outfile "$now $cwnd"
$ns at [expr $now+0.1] "plotWindow $tcpSource $outfile"
}
#Make a NS simulator
set ns [new Simulator]
# Define a ‘finish‘ procedure
proc finish {} {
exit 0
}
# Create the 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 the links:
$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
# Add a TCP sending module to node n0
set tcp1 [new Agent/TCP/Reno]
$ns attach-agent $n0 $tcp1
# Add a TCP receiving module to node n4
set sink1 [new Agent/TCPSink]
$ns attach-agent $n4 $sink1
# Direct traffic from "tcp1" to "sink1"
$ns connect $tcp1 $sink1
# Setup a FTP traffic generator on "tcp1"
set ftp1 [new Application/FTP]
$ftp1 attach-agent $tcp1
$ftp1 set type_ FTP (no necessary)
# Schedule start/stop times
$ns at 0.1 "$ftp1 start"
$ns at 100.0 "$ftp1 stop"
# Set simulation end time
$ns at 125.0 "finish" (Will invoke "exit 0")
##################################################
## Obtain CWND from TCP agent
##################################################
proc plotWindow {tcpSource outfile} {
global ns
set now [$ns now]
set cwnd [$tcpSource set cwnd_]
###Print TIME CWND for gnuplot to plot progressing on CWND
puts $outfile "$now $cwnd"
$ns at [expr $now+0.1] "plotWindow $tcpSource $outfile"
}
$ns at 0.0 "plotWindow $tcp1 stdout" // Start the probe !!
# Run simulation !!!!
$ns run
In case you wonder why the CWND plot look so different, it‘s because the setting of some parameters.
# ########################################################
# Set Queue Size of link (n2-n3) to 10 (default is 50 ?)
# ########################################################
$ns queue-limit $n2 $n3 10
# ########################################################
# TCP parameters:
# ########################################################
$tcp1 set window_ 8000
$tcp1 set packetSize_ 552
set tcp1 [new Agent/TCP/Reno]
...
set tcp2 [new Agent/TCP/Reno]
...
set outfile1 [open "WinFile1" w]
set outfile2 [open "WinFile2" w]
$ns at 0.0 "plotWindow $tcp1 $outfile1"
$ns at 0.0 "plotWindow $tcp2 $outfile2"
文章标题:Studying TCP's Congestion Window using NS
文章链接:http://soscw.com/essay/33181.html