test-suite-quickstart.tcl
来自「一款用来进行网络模拟的软件」· TCL 代码 · 共 1,116 行 · 第 1/3 页
TCL
1,116 行
$tcp1 set window_ 10000 $tcp1 set rate_request_ 20 set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns_ at 0.0 "$ftp1 start" $ns_ at $stopTime "$self cleanupAll $testName_ $stopTime" $ns_ run}# The request isn't limited by the TCP window, but# the actual sending rate is.Class Test/rate_request1 -superclass TestSuiteTest/rate_request1 instproc init {} { $self instvar net_ test_ guide_ sndr rcvr qs set net_ net3 set test_ rate_request1 set guide_ "Quick-Start, request not limited by TCP window." set qs ON Agent/TCP set qs_request_mode_ 1 $self next pktTraceFile}Test/rate_request1 instproc run {} { global quiet $self instvar ns_ node_ testName_ guide_ sndr rcvr qs puts "Guide: $guide_" $ns_ node-config -QS $qs $self setTopo set stopTime 2 if {$quiet == "false"} { Agent/TCP set print_request_ true } set tcp1 [$ns_ create-connection TCP/Newreno $node_(s1) TCPSink $node_(s3) 0] $tcp1 set window_ 10 $tcp1 set rate_request_ 20 set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns_ at 0.0 "$ftp1 start" $ns_ at $stopTime "$self cleanupAll $testName_ $stopTime" $ns_ run}# Only make requesst if at least qs_thresh_ packets to send.Class Test/rate_request3 -superclass TestSuiteTest/rate_request3 instproc init {} { $self instvar net_ test_ guide_ sndr rcvr qs set net_ net3 set test_ rate_request3 set guide_ "Quick-Start, no request because of insufficient data." set qs ON Agent/TCP set qs_request_mode_ 1 Agent/TCP set qs_thresh_ 20 Agent/TCP set qs_rtt_ 1000 $self next pktTraceFile}Test/rate_request3 instproc run {} { global quiet $self instvar ns_ node_ testName_ guide_ sndr rcvr qs puts "Guide: $guide_" $ns_ node-config -QS $qs $self setTopo set stopTime 2 if {$quiet == "false"} { Agent/TCP set print_request_ true } set tcp1 [$ns_ create-connection TCP/Newreno $node_(s1) TCPSink $node_(s3) 0] $tcp1 set window_ 100 $tcp1 set rate_request_ 2000 set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns_ at 0.0 "$ftp1 produce 10" $ns_ at $stopTime "$self cleanupAll $testName_ $stopTime" $ns_ run}# Requesst limited by available data.Class Test/rate_request4 -superclass TestSuiteTest/rate_request4 instproc init {} { $self instvar net_ test_ guide_ sndr rcvr qs set net_ net3 set test_ rate_request4 set guide_ "Quick-Start, rate request limited by available data." set qs ON Agent/TCP set qs_request_mode_ 1 Agent/TCP set qs_thresh_ 5 Agent/TCP set qs_rtt_ 1000 $self next pktTraceFile}Test/rate_request4 instproc run {} { global quiet $self instvar ns_ node_ testName_ guide_ sndr rcvr qs puts "Guide: $guide_" $ns_ node-config -QS $qs $self setTopo set stopTime 2 if {$quiet == "false"} { Agent/TCP set print_request_ true } set tcp1 [$ns_ create-connection TCP/Newreno $node_(s1) TCPSink $node_(s3) 0] $tcp1 set window_ 100 $tcp1 set rate_request_ 2000 set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns_ at 0.0 "$ftp1 produce 10" $ns_ at $stopTime "$self cleanupAll $testName_ $stopTime" $ns_ run}Class Test/routers1 -superclass TestSuiteTest/routers1 instproc init {} { $self instvar net_ test_ guide_ sndr rcvr qs set net_ net3 set test_ routers1 set guide_ "Quick-Start, rate request 100KBps." set qs ON set sndr TCP/Newreno set rcvr TCPSink Agent/QSAgent set algorithm_ 3 Agent/QSAgent set threshold_ 0.9 Agent/QSAgent set alloc_rate_ 0.9 $self next pktTraceFile}Test/routers1 instproc run {} { global quiet $self instvar ns_ node_ testName_ guide_ sndr rcvr qs puts "Guide: $guide_" $ns_ node-config -QS $qs $self setTopo set stopTime 6 if {$quiet == "false"} { Agent/TCP set print_request_ true } Agent/TCP set window_ 10000 set tcp1 [$ns_ create-connection TCP/Newreno $node_(s1) TCPSink $node_(s3) 0] $tcp1 set rate_request_ 100 set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns_ at 1.0 "$ftp1 produce 100" $ns_ at $stopTime "$self cleanupAll $testName_ $stopTime" $ns_ run}Class Test/routers2 -superclass TestSuiteTest/routers2 instproc init {} { $self instvar net_ test_ guide_ sndr rcvr qs set net_ net3 set test_ routers2 set guide_ "Quick-Start, routers approve only 62 KBps" # 100 Mbps * 0.005 = 500 Kbps = 62 KBps. set qs ON set sndr TCP/Newreno set rcvr TCPSink Agent/QSAgent set algorithm_ 3 Agent/QSAgent set threshold_ 0.005 Agent/QSAgent set alloc_rate_ 0.005 Test/routers2 instproc run {} [Test/routers1 info instbody run ] $self next pktTraceFile}Class Test/routers3 -superclass TestSuiteTest/routers3 instproc init {} { $self instvar net_ test_ guide_ sndr rcvr qs set net_ net3 set test_ routers3 set guide_ "Quick-Start, log-scale for rate encoding" # 100 Mbps * 0.005 = 500 Kbps = 62 KBps. set qs ON set sndr TCP/Newreno set rcvr TCPSink Agent/QSAgent set algorithm_ 3 Agent/QSAgent set threshold_ 0.9 Agent/QSAgent set alloc_rate_ 0.9 Agent/QSAgent set rate_function_ 2 Test/routers3 instproc run {} [Test/routers1 info instbody run ] $self next pktTraceFile}# This router allocates the full link bandwidth for QS,# and the sender requests the full bandwidth for QS.Class Test/routers4 -superclass TestSuiteTest/routers4 instproc init {} { $self instvar net_ test_ guide_ sndr rcvr qs set net_ net3 set test_ routers4 set guide_ "Quick-Start, request for full link bandwidth." set qs ON set sndr TCP/Newreno set rcvr TCPSink Agent/QSAgent set algorithm_ 3 Agent/QSAgent set threshold_ 1.0 Agent/QSAgent set alloc_rate_ 1.0 Agent/QSAgent set rate_function_ 2 $self next pktTraceFile}Test/routers4 instproc run {} { global quiet $self instvar ns_ node_ testName_ guide_ sndr rcvr qs puts "Guide: $guide_" $ns_ node-config -QS $qs $self setTopo set stopTime 4 if {$quiet == "false"} { Agent/TCP set print_request_ true } $ns_ at 0.0 "$ns_ bandwidth $node_(r1) $node_(r2) 0.64Mbps duplex" Agent/TCP set window_ 10000 set tcp1 [$ns_ create-connection TCP/Newreno $node_(s1) TCPSink $node_(s3) 0] $tcp1 set rate_request_ 80 set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns_ at 1.0 "$ftp1 produce 100" $ns_ at $stopTime "$self cleanupAll $testName_ $stopTime" $ns_ run}# This router allocates the full link bandwidth for QS,Class Test/routers5 -superclass TestSuiteTest/routers5 instproc init {} { $self instvar net_ test_ guide_ sndr rcvr qs set net_ net3 set test_ routers5 set guide_ "Quick-Start, two requests, total for full link bandwidth." set qs ON set sndr TCP/Newreno set rcvr TCPSink Agent/QSAgent set algorithm_ 3 Agent/QSAgent set threshold_ 1.0 Agent/QSAgent set alloc_rate_ 1.0 Agent/QSAgent set rate_function_ 2 $self next pktTraceFile}Test/routers5 instproc run {} { global quiet $self instvar ns_ node_ testName_ guide_ sndr rcvr qs puts "Guide: $guide_" $ns_ node-config -QS $qs $self setTopo set stopTime 4 if {$quiet == "false"} { Agent/TCP set print_request_ true } $ns_ at 0.0 "$ns_ bandwidth $node_(r1) $node_(r2) 0.64Mbps duplex" Agent/TCP set window_ 10000 set tcp1 [$ns_ create-connection TCP/Newreno $node_(s1) TCPSink $node_(s3) 0] $tcp1 set rate_request_ 40 set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns_ at 1.0 "$ftp1 produce 100" set tcp2 [$ns_ create-connection TCP/Newreno $node_(s1) TCPSink $node_(s3) 1] $tcp2 set rate_request_ 40 set ftp2 [new Application/FTP] $ftp2 attach-agent $tcp2 $ns_ at 1.1 "$ftp2 produce 100" $ns_ at $stopTime "$self cleanupAll $testName_ $stopTime" $ns_ run}# This router allocates the full link bandwidth for QS,Class Test/routers6 -superclass TestSuiteTest/routers6 instproc init {} { $self instvar net_ test_ guide_ sndr rcvr qs set net_ net3 set test_ routers6 set guide_ "Quick-Start, three requests, total for more than link bandwidth." set qs ON set sndr TCP/Newreno set rcvr TCPSink Agent/QSAgent set algorithm_ 3 #Agent/QSAgent set algorithm_ 2 Agent/QSAgent set threshold_ 1.0 Agent/QSAgent set alloc_rate_ 1.0 Agent/QSAgent set rate_function_ 2 $self next pktTraceFile}Test/routers6 instproc run {} { global quiet $self instvar ns_ node_ testName_ guide_ sndr rcvr qs puts "Guide: $guide_" $ns_ node-config -QS $qs $self setTopo set stopTime 4 if {$quiet == "false"} { Agent/TCP set print_request_ true } $ns_ at 0.0 "$ns_ bandwidth $node_(r1) $node_(r2) 0.64Mbps duplex" Agent/TCP set window_ 10000 set tcp1 [$ns_ create-connection TCP/Newreno $node_(s1) TCPSink $node_(s3) 0] $tcp1 set rate_request_ 40 set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns_ at 1.0 "$ftp1 produce 100" set tcp2 [$ns_ create-connection TCP/Newreno $node_(s1) TCPSink $node_(s3) 1] $tcp2 set rate_request_ 40 set ftp2 [new Application/FTP] $ftp2 attach-agent $tcp2 $ns_ at 1.1 "$ftp2 produce 100" set tcp3 [$ns_ create-connection TCP/Newreno $node_(s1) TCPSink $node_(s3) 2] $tcp3 set rate_request_ 40 set ftp3 [new Application/FTP] $ftp3 attach-agent $tcp3 $ns_ at 1.2 "$ftp3 produce 100" $ns_ at $stopTime "$self cleanupAll $testName_ $stopTime" $ns_ run}Class Test/small-request -superclass TestSuiteTest/small-request instproc init {} { $self instvar net_ test_ guide_ sndr rcvr qs set net_ net3 set test_ small-request set guide_ "Quick-Start, a very small request." set qs ON set sndr TCP/Newreno set rcvr TCPSink $self next pktTraceFile}Test/small-request instproc run {} { global quiet $self instvar ns_ node_ testName_ guide_ sndr rcvr qs puts "Guide: $guide_" $ns_ node-config -QS $qs $self setTopo set stopTime 6 if {$quiet == "false"} { Agent/TCP set print_request_ true } Agent/TCP set window_ 10000 set tcp1 [$ns_ create-connection TCP/Newreno $node_(s1) TCPSink $node_(s3) 0] $tcp1 set rate_request_ 4 set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns_ at 1.0 "$ftp1 produce 100" $ns_ at $stopTime "$self cleanupAll $testName_ $stopTime" $ns_ run}# We still need a test that tests state_delay_:# Agent/QSAgent set state_delay_ 0.3TestSuite runTest
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?