📄 test-suite-cbq-v1.tcl
字号:
# puts $file "$timenow 1 [$lnk stat 1 mean-qsize]"# puts $file "$timenow 2 [$lnk stat 2 mean-qsize]"# puts $file "$timenow 3 [$lnk stat 3 mean-qsize]"# puts $file "$timenow 4 [$lnk stat 4 mean-qsize]"# }# set f1 [open temp.q w]# puts $f1 "delay"# ns at $stopTime "cdump $linkno $f1"# ns at $stopTime "close $f1"# }proc openTrace2 { stopTime testName } { global r1 k1 ns at $stopTime \ "finish1 $testName; exit"}proc openTrace4 { stopTime testName } { global r1 k1 ns at $stopTime \ "finish2 $testName; exit"}## Make graph of transmitted packets.#proc openTrace3 { stopTime testName } { exec rm -f out.tr temp.rands global r1 k1 set traceFile [open out.tr w] ns at $stopTime \ "close $traceFile ; finish $testName" set T [ns trace] $T attach $traceFile return $T} ## Create three CBR connections.#proc three_cbrs {} { global s1 s2 s3 s4 r1 k1 set cbr0 [ns_create_cbr $s1 $k1 190 0.001 1] set cbr1 [ns_create_cbr $s2 $k1 500 0.002 2] set cbr2 [ns_create_cbr $s3 $k1 1000 0.005 3] ns at 0.0 "$cbr0 start" ns at 20.0 "$cbr0 stop" ns at 24.0 "$cbr0 start" ns at 0.0 "$cbr1 start" ns at 12.0 "$cbr1 stop" ns at 18.0 "$cbr1 start" ns at 0.0 "$cbr2 start" ns at 4.0 "$cbr2 stop" ns at 8.0 "$cbr2 start"}## Create four CBR connections.#proc four_cbrs {} { global s1 s2 s3 s4 r1 k1 set cbr0 [ns_create_cbr $s1 $k1 190 0.001 1] set cbr1 [ns_create_cbr $s2 $k1 1000 0.005 2] set cbr2 [ns_create_cbr $s3 $k1 500 0.002 3] set cbr3 [ns_create_cbr $s4 $k1 1000 0.005 4] ns at 0.0 "$cbr0 start" ns at 12.0 "$cbr0 stop" ns at 16.0 "$cbr0 start" ns at 36.0 "$cbr0 stop" ns at 0.0 "$cbr1 start" ns at 20.0 "$cbr1 stop" ns at 24.0 "$cbr1 start" ns at 0.0 "$cbr2 start" ns at 4.0 "$cbr2 stop" ns at 8.0 "$cbr2 start" ns at 36.0 "$cbr2 stop" ns at 0.0 "$cbr3 start" ns at 28.0 "$cbr3 stop" ns at 32.0 "$cbr3 start"}## Figure 10 from the link-sharing paper. # ~/newr/rm/testB.com# proc test_cbqWRR {} { global s1 s2 s3 s4 r1 k1 set qlen 20 set stopTime 28.1 set CBQalgorithm 1 create_graph $stopTime wrr-cbq $qlen create_flat [ns link $r1 $k1] $qlen three_cbrs [ns link $r1 $k1] set algorithm $CBQalgorithm openTrace2 $stopTime test_cbqWRR ns run}## Figure 10, but packet-by-packet RR, and Formal.# proc test_cbqPRR {} { global s1 s2 s3 s4 r1 k1 set qlen 20 set stopTime 28.1 set CBQalgorithm 2 create_graph $stopTime cbq $qlen create_flat [ns link $r1 $k1] $qlen three_cbrs [ns link $r1 $k1] set algorithm $CBQalgorithm openTrace2 $stopTime test_cbqPRR ns run}# Figure 12 from the link-sharing paper.# WRR, Ancestor-Only link-sharing.# ~/newr/rm/testA.com# proc test_cbqAO {} { global s1 s2 s3 s4 r1 k1 set qlen 20 set stopTime 40.1 set CBQalgorithm 0 create_graph $stopTime wrr-cbq $qlen create_twoAgency [ns link $r1 $k1] $CBQalgorithm $qlen four_cbrs [ns link $r1 $k1] set algorithm $CBQalgorithm openTrace2 $stopTime test_cbqAO ns run}## Figure 13 from the link-sharing paper.# WRR, Top link-sharing.# ~/newr/rm/testA.com#proc test_cbqTL {} { global s1 s2 s3 s4 r1 k1 set qlen 20 set stopTime 40.1 set CBQalgorithm 1 create_graph $stopTime wrr-cbq $qlen create_twoAgency [ns link $r1 $k1] $CBQalgorithm $qlen four_cbrs [ns link $r1 $k1] set algorithm $CBQalgorithm openTrace2 $stopTime test_cbqTL ns run}## Figure 11 from the link-sharing paper.# WRR, Formal (new) link-sharing.# ~/newr/rm/testA.com#proc test_cbqFor {} { global s1 s2 s3 s4 r1 k1 set qlen 20 set stopTime 40.1 set CBQalgorithm 2 create_graph $stopTime wrr-cbq $qlen create_twoAgency [ns link $r1 $k1] $CBQalgorithm $qlen four_cbrs [ns link $r1 $k1] set algorithm $CBQalgorithm openTrace2 $stopTime test_cbqFor ns run}## Figure 11 from the link-sharing paper, but Formal (old) link-sharing.# WRR. # ~/newr/rm/testA.com#proc test_cbqForOld {} { global s1 s2 s3 s4 r1 k1 set qlen 20 set stopTime 40.1 set CBQalgorithm 3 create_graph $stopTime wrr-cbq $qlen create_twoAgency [ns link $r1 $k1] $CBQalgorithm $qlen four_cbrs [ns link $r1 $k1] set algorithm $CBQalgorithm openTrace2 $stopTime test_cbqForOld ns run}## To send five back-to-back packets for $audClass, # maxidle should be 0.004 seconds# To send 50 back-to-back packets, maxidle should be 0.25 secondsproc test_cbqMax1 {} { global s1 s2 s3 s4 r1 k1 ns_link set Mbps 1.5 set stopTime 2.1 set CBQalgorithm 2 set ns_link(queue-limit) 1000 set queue 1000 create_graph $stopTime cbq $queue set link [ns link $r1 $k1] set topClass [ns_create_class none none 0.97 1.0 -1.0 8 1 0] set audClass [ns_create_class1 $topClass none 0.3 0.25 auto 1 0 0 $Mbps] set dataClass [ns_create_class1 $topClass $topClass 0.3 auto auto 2 \ 0 0 $Mbps] $link insert $topClass $link insert $audClass $link insert $dataClass set qdisc [$audClass qdisc] $qdisc set queue-limit $queue set qdisc [$dataClass qdisc] $qdisc set queue-limit $queue $link bind $audClass 1 $link bind $dataClass 2 set cbr0 [ns_create_cbr $s1 $k1 1000 0.001 1] set cbr1 [ns_create_cbr $s2 $k1 1000 0.01 2] ns at 0.0 "$cbr0 start" ns at 0.002 "$cbr0 stop" ns at 1.0 "$cbr0 start" ns at 1.08 "$cbr0 stop" ns at 0.0 "$cbr1 start" [ns link $r1 $k1] set algorithm $CBQalgorithm [ns link $r1 $k1] trace [openTrace3 $stopTime test_Max1,_25_pkts] ns run}## To send five back-to-back packets for $audClass, # maxidle should be 0.004 seconds# To send 50 back-to-back packets, maxidle should be 0.25 secondsproc test_cbqMax2 {} { global s1 s2 s3 s4 r1 k1 ns_link set Mbps 1.5 set stopTime 2.1 set CBQalgorithm 2 set ns_link(queue-limit) 1000 set queue 1000 create_graph $stopTime cbq $queue set link [ns link $r1 $k1] set topClass [ns_create_class none none 0.97 1.0 -1.0 8 1 0] set audClass [ns_create_class1 $topClass none 0.3 0.004 auto 1 0 0 $Mbps] set dataClass [ns_create_class1 $topClass $topClass 0.3 auto auto \ 2 0 0 $Mbps] $link insert $topClass $link insert $audClass $link insert $dataClass set qdisc [$audClass qdisc] $qdisc set queue-limit $queue set qdisc [$dataClass qdisc] $qdisc set queue-limit $queue $link bind $audClass 1 $link bind $dataClass 2 set cbr0 [ns_create_cbr $s1 $k1 1000 0.001 1] set cbr1 [ns_create_cbr $s2 $k1 1000 0.01 2] ns at 0.0 "$cbr0 start" ns at 0.002 "$cbr0 stop" ns at 1.0 "$cbr0 start" ns at 1.08 "$cbr0 stop" ns at 0.0 "$cbr1 start" [ns link $r1 $k1] set algorithm $CBQalgorithm [ns link $r1 $k1] trace [openTrace3 $stopTime test_Max2,_5_pkts] ns run}## Set "extradelay" to 0.024 seconds for a steady-state burst of 2 #proc test_cbqExtra1 {} { global s1 s2 s3 s4 r1 k1 ns_link set Mbps 1.5 set stopTime 2.1 set CBQalgorithm 2 set ns_link(queue-limit) 1000 set queue 1000 create_graph $stopTime cbq $queue set link [ns link $r1 $k1] set topClass [ns_create_class none none 0.97 1.0 -1.0 8 1 0] set audClass [ns_create_class1 $topClass none 0.3 auto auto \ 1 0 0.024 $Mbps] set dataClass [ns_create_class1 $topClass $topClass 0.3 auto auto \ 2 0 0 $Mbps] $link insert $topClass $link insert $audClass $link insert $dataClass set qdisc [$audClass qdisc] $qdisc set queue-limit $queue set qdisc [$dataClass qdisc] $qdisc set queue-limit $queue $link bind $audClass 1 $link bind $dataClass 2 set cbr0 [ns_create_cbr $s1 $k1 1000 0.015 1] set cbr1 [ns_create_cbr $s2 $k1 1000 0.01 2] ns at 0.0 "$cbr0 start" ns at 0.0 "$cbr1 start" [ns link $r1 $k1] set algorithm $CBQalgorithm [ns link $r1 $k1] trace [openTrace3 $stopTime test_Extra1_burst_2] ns run}## Set "extradelay" to 0.12 seconds for a steady-state burst of 8 #proc test_cbqExtra2 {} { global s1 s2 s3 s4 r1 k1 ns_link set Mbps 1.5 set stopTime 2.1 set CBQalgorithm 2 set ns_link(queue-limit) 1000 set queue 1000 create_graph $stopTime cbq $queue set link [ns link $r1 $k1] set topClass [ns_create_class none none 0.97 1.0 -1.0 8 1 0] set audClass [ns_create_class1 $topClass none 0.3 auto auto \ 1 0 0.12 $Mbps] set dataClass [ns_create_class1 $topClass $topClass 0.3 auto auto \ 2 0 0 $Mbps] $link insert $topClass $link insert $audClass $link insert $dataClass set qdisc [$audClass qdisc] $qdisc set queue-limit $queue set qdisc [$dataClass qdisc] $qdisc set queue-limit $queue $link bind $audClass 1 $link bind $dataClass 2 set cbr0 [ns_create_cbr $s1 $k1 1000 0.015 1] set cbr1 [ns_create_cbr $s2 $k1 1000 0.01 2] ns at 0.0 "$cbr0 start" ns at 0.0 "$cbr1 start" [ns link $r1 $k1] set algorithm $CBQalgorithm [ns link $r1 $k1] trace [openTrace3 $stopTime test_Extra2_burst_8] ns run}# With Packet-by-Packet Round-robin, it is necessary either to# set a positive value for extradelay, or a negative value for minidle#proc test_cbqMin1 {} { global s1 s2 s3 s4 r1 k1 set queue 20 set Mbps 1.5 set stopTime 4.1 set CBQalgorithm 2 create_graph $stopTime cbq $queue set link [ns link $r1 $k1] set topClass [ns_create_class1 none none 0.98 auto -1.0 8 1 0 $Mbps] set audioClass [ns_create_class1 $topClass none 0.03 auto auto \ 1 0 0 $Mbps] set vidClass [ns_create_class1 $topClass $topClass \ 0.32 auto auto 1 0 0 $Mbps] set dataClass [ns_create_class1 $topClass $topClass \ 0.65 auto auto 2 0 0 $Mbps] $link insert $topClass $link insert $vidClass $link insert $audioClass $link insert $dataClass set qdisc [$audioClass qdisc] $qdisc set queue-limit $queue
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -