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 + -
显示快捷键?