⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test-suite-delaybox.tcl

📁 一款用来进行网络模拟的软件
💻 TCL
字号:
# test-suite-DelayBox.tcl## Based on ns/tcl/test/test-suite-full.tcl## Modified by Michele Weigle, UNC-Chapel Hill, Dec 2003##*************************************************************************# Tests to validate DelayBox##  oneway - one-way TCP#  oneway-asymmetric - one-way TCP and delay only on the data path#  full - Full-TCP#  full-asymmetric - Full-TCP and delay only on the data path#*************************************************************************source misc.tclTestSuite instproc finish testname {	$self instvar ns_	$ns_ halt}Class SkelTopologyClass Topology -superclass SkelTopologyTopology instproc node? num {    $self instvar node_    return $node_($num)}Class Topology/DB -superclass Topology## DelayBox test topology##           s1                      k1#             \                    /#  100Mb, 1ms  \    100Mb, 1ms    / 100Mb, 1ms#               r1 ----------- r2 #  100Mb, 1ms  /                 \ 100Mb, 1ms#             /                   \#          s2                       k2#Topology/DB instproc init ns {    $self instvar node_    set node_(s1) [$ns node]    set node_(s2) [$ns node]    set node_(r1) [$ns DelayBox]    set node_(r2) [$ns DelayBox]    set node_(k1) [$ns node]    set node_(k2) [$ns node]    $self next    $ns duplex-link $node_(s1) $node_(r1) 100Mb 1ms DropTail    $ns duplex-link $node_(s2) $node_(r1) 100Mb 1ms DropTail    $ns duplex-link $node_(r1) $node_(r2) 100Mb 1ms DropTail    $ns duplex-link $node_(k1) $node_(r2) 100Mb 1ms DropTail    $ns duplex-link $node_(k2) $node_(r2) 100Mb 1ms DropTail}TestSuite instproc setup tcptype {    $self instvar ns_ node_ testName_    # clear output files    exec rm -f temp.rands    Trace set show_tcphdr_ 1     Agent/TCP set minrto_ 1;     # ns-2.27 value    set stopt 10    # create TCP Agents    if {$tcptype == "FullTcp"} {        set src(0) [new Agent/TCP/FullTcp]        set sink(0) [new Agent/TCP/FullTcp]        set src(1) [new Agent/TCP/FullTcp]        set sink(1) [new Agent/TCP/FullTcp]    } elseif {$tcptype == "oneway"} {        set src(0) [new Agent/TCP]        set sink(0) [new Agent/TCPSink]        set src(1) [new Agent/TCP]        set sink(1) [new Agent/TCPSink]    }    # setup TCP Agents and connections    $ns_ attach-agent $node_(s1) $src(0)    $src(0) set fid_ 0    $ns_ attach-agent $node_(k1) $sink(0)    $sink(0) set fid_ 0    $ns_ attach-agent $node_(s2) $src(1)    $src(1) set fid_ 1    $ns_ attach-agent $node_(k2) $sink(1)    $sink(1) set fid_ 1    # make the connections    $ns_ connect $src(0) $sink(0)    $sink(0) listen    $ns_ connect $src(1) $sink(1)    $sink(1) listen        # schedule flows    $ns_ at 0.7 "$src(0) advance 50"    $ns_ at 0.8 "$src(1) advance 50"    $ns_ at 2.0 "$src(0) close"    $ns_ at 2.0 "$src(1) close"    $ns_ at $stopt "$self finish $testName_"   # setup tracing    set trace_file [open temp.rands w]    $ns_ trace-queue $node_(s1) $node_(r1) $trace_file    $ns_ trace-queue $node_(r1) $node_(s1) $trace_file    $ns_ trace-queue $node_(s2) $node_(r1) $trace_file    $ns_ trace-queue $node_(r1) $node_(s2) $trace_file    $ns_ trace-queue $node_(r1) $node_(r2) $trace_file    $ns_ trace-queue $node_(r2) $node_(r1) $trace_file    $ns_ trace-queue $node_(k1) $node_(r2) $trace_file    $ns_ trace-queue $node_(r2) $node_(k1) $trace_file    $ns_ trace-queue $node_(k2) $node_(r2) $trace_file    $ns_ trace-queue $node_(r2) $node_(k2) $trace_file    # create random variables    set srcd_rng [new RNG];    set src_delay [new RandomVariable/Uniform];   # delay 20-50 ms    $src_delay set min_ 20    $src_delay set max_ 50    $src_delay use-rng $srcd_rng    set srcbw_rng [new RNG];    set src_bw [new RandomVariable/Uniform];      # bw 1-20 Mbps    $src_bw set min_ 1    $src_bw set max_ 20    $src_delay use-rng $srcbw_rng    set sinkd_rng [new RNG];    set sink_delay [new RandomVariable/Uniform];   # delay 1-20 ms    $sink_delay set min_ 1    $sink_delay set max_ 20    $sink_delay use-rng $sinkd_rng    set sinkbw_rng [new RNG];    set sink_bw [new RandomVariable/Constant];      # bw 100 Mbps    $sink_bw set val_ 100    $sink_bw use-rng $sinkbw_rng    set loss_rng [new RNG];    set loss_rate [new RandomVariable/Uniform];    # loss 0-1%    $loss_rate set min_ 0    $loss_rate set max_ 0.01    $loss_rate use-rng $loss_rng        # setup rules for DelayBoxes    $node_(r1) add-rule [$node_(s1) id] [$node_(k1) id] $src_delay \	    $loss_rate $src_bw    $node_(r1) add-rule [$node_(s2) id] [$node_(k2) id] $src_delay \	    $loss_rate $src_bw    $node_(r2) add-rule [$node_(s1) id] [$node_(k1) id] $sink_delay \	    $loss_rate $sink_bw    $node_(r2) add-rule [$node_(s2) id] [$node_(k2) id] $sink_delay \	    $loss_rate $sink_bw}## oneway#Class Test/oneway -superclass TestSuiteTest/oneway instproc init topo {        global defaultRNG	$self instvar net_ defNet_ test_        $defaultRNG seed 9999        set net_ $topo	set defNet_ DB	set test_ oneway	$self next 0}Test/oneway instproc run {} {	$self instvar ns_         $self setup oneway	$ns_ run}## oneway-asymmetric#Class Test/oneway-asymmetric -superclass TestSuiteTest/oneway-asymmetric instproc init topo {        global defaultRNG	$self instvar net_ defNet_ test_        $defaultRNG seed 9999        set net_ $topo	set defNet_ DB	set test_ oneway-asymmetric	$self next 0}Test/oneway-asymmetric instproc run {} {	$self instvar ns_ node_         $self setup oneway        $node_(r1) set-asymmetric        $node_(r2) set-asymmetric	$ns_ run}## full#Class Test/full -superclass TestSuiteTest/full instproc init topo {        global defaultRNG	$self instvar net_ defNet_ test_        $defaultRNG seed 9999        set net_ $topo	set defNet_ DB	set test_ full	$self next 0}Test/full instproc run {} {	$self instvar ns_        $self setup FullTcp	$ns_ run}## full-asymmetric#Class Test/full-asymmetric -superclass TestSuiteTest/full-asymmetric instproc init topo {        global defaultRNG	$self instvar net_ defNet_ test_        $defaultRNG seed 9999        set net_ $topo	set defNet_ DB	set test_ full-asymmetric	$self next 0}Test/full-asymmetric instproc run {} {	$self instvar ns_ node_        $self setup FullTcp        $node_(r1) set-asymmetric        $node_(r2) set-asymmetric	$ns_ run}TestSuite runTest

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -