📄 readme
字号:
Some notes on the test suite---------------------------To run the test suites in this directory:./test-all-red./test-all-sack./test-all-schedule./test-all-tcp./test-all-red-v1./test-all-cbq-v1./test-all-sack-v1./test-all-v1./test-all-mcastOR, just for validation purposes:./test-all-red quiet./test-all-sack quiet./test-all-schedule quiet./test-all-tcp quiet./test-all-red-v1 quiet./test-all-cbq-v1 quiet./test-all-sack-v1 quiet ./test-all-v1 quiet./test-all-mcast----------------------------Each of the test suites has been split off into three parts, two ofwhich are common to all of them. The common parts are:I) The topologies library, stored in topologies.tcl This contains a catalogue of topologies used in the test suite. Currently, four topologies are defined (net0 through net3). Variants of the topology are classified according to the following criteria: Name of Qs on Fall- Dynamic Routing MultiPath Variant back links Links? Protocol? Forwarding? ----------------------------------------------------------------------------- <none> DropTail no Static NO net#- DropTail yes Static NO net#-Session DropTail yes Session NO net#-DV DropTail yes DV NO net#RED-Session RED yes Session NO net#RED-DV RED yes DV NO net#-DVm0 DropTail no DV YES net#-DVm1 DropTail yes DV YES net#RED-DVm0 DropTail no DV YES net#RED-DVm1 DropTail yes DV YES Note that the RED variants are only defined if the backbone links themselves use RED queues.NOTE: All tests that use dynamic links (otehr than net#-) use atracefile to generate the dynamics events. The variant net#- currentlyuses an Exponential distribution to decide link failure and recoverytimes. It also writes out the trace file `dyn.tr' that is used by theother variants.The initialiser for each topology also invokes the instance procedure``config''. Each test-suite that is defined could individuallyreconfigure a particular topology to suite its needs. As an example,this feature is used by the RED test suites to redefine ``linterm_''for the backbone links in the net2 topology.The class hierarchy for the topologies is: SkelTopology | +----- NodeTopology/4nodes | | | +----- Topology/net0 | | | | | +----- Topology/net0- | | +----- Topology/net0-Session | | . | . . | . +----- Topology/net0-DVm1 | . | +----- NodeTopology/6nodes | | . . .The base class for all topologies is the Class SkelTopology. Itprovides one ``useful'' method: add-fallback-links. The method adds fallback paths between pairs of nodes, each link in the pathhaving identical characteristics.Different node topology classes are derived from the skeleton topologyclass. There are three currently defined, NodeTopology/4nodes,NodeTopology/6nodes, and NodeTopology/8nodes. The node countindicates the number of nodes in the topology, less those used foralternate (fallback) paths. The constructor for each classinstantiates each of the nodes in that topology.Each topology is then derived from the appropriate NodeTopology.Four basic topologies are currently defined, Topology/net0 throughTopology/net4. 1. net0: Simple 4 node topology (+1 fallback node) shown as: s1 __ b1 __ \ / 0.8Mb \ 8Mb,5ms \ / 100ms \ r1 ------------ k1 8Mb,5ms / 0.8Mb, 100ms / s2 Queue limit on <r1, k1> = 6 Variants defined: net0-, net0-Session, net0-DV, net0-DVm0, and net0-DVm1. Cost on link <r1, k1> = 2 for net0-DVm0 and net0-DVm1.2. net1: Another simple 4 node topology (+1 fallback node) shown as: s1 __ b1 __ \ / 1.5Mb \ 10Mb,5ms \ / 100ms \ r1 ------------ k1 10Mb,5ms / 1.5Mb, 100ms / s2 Queue limit on <r1, k1> = 23 Variants defined: net1-, net1-Session, net1-DV, net1-DVm0, net1-DVm1. Cost on link <r1, k1> = 2 for net1-DVm0 and net1-DVm1.3. net2: Simple 6 node topology (+1 fallback node) shown as: s1 __b1__ s3 \ /1.5 Mb\ / 10Mb,2ms \ / 10ms \ / 10Mb,4ms r1 ---------- r2 10Mb,3ms / 1.5Mb 20ms \ 10Mb,5ms / RED \ s2 s4 Variants defined: net2-, net2-Session, net2-DV, net2-DVm0, net2-DVm1, net2RED-Session, net2RED-DV, net2RED-DVm0, net2RED-DVm1. Cost on link <r1, r2> = 2 for *-DVm0, *-DVm1 topology variants. Note that, unlike the earlier topologies, the delay on the fallback path is the same as the main path, i.e. delay(r1,b1) + delay(b1,r2) = delay(r1,r2).4. net3: Simple 8 node topology (+3 fallback nodes) shown as: s1 __b1__ __b2__ __b3__ s3 \ /1.5 Mb\ /1.5 Mb\ /1.5 Mb\ / 10Mb,2ms \ / 10ms \ / 10ms \ / 10ms \ / 10Mb,4ms r1 ---------- r2 ---------- r3 ---------- r4 10Mb,3ms / 1.5Mb,20ms 1.5Mb 20ms 1.5Mb 20ms \ 10Mb,5ms / RED RED RED \ s2 s4 Variants defined: net2-, net2-Session, net2-DV, net2-DVm0, net2-DVm1, net2RED-Session, net2RED-DV, net2RED-DVm0, net2RED-DVm1. Cost on link <r1, r2>, <r2, r3>, <r3, r4> = 2 for *-DVm0, *-DVm1 topology variants.II) misc.tcl defines the base class TestSuite for the tests.It also defines the routines common to all the test suites.The class hierarchy for TestSuite is: TestSuite | +----- Test/tahoe | +----- Test/phaseSack1 . . .The constructor instantiates the appropriate topology. It willcheck that the test will run on the specified topology (or itsvariant). The testName is set to "test:topology". It alsoenables a global trace file, all.tr.Other routines defined includes the procedure finish. Unlike inthe ns-1 test suites, this routine does not process the tracefile. It is upto an external test suite driver to process theoutput traces appropriately. This permits us to flexibly useeither gnuplot, xgraph, or nam as desired.tcpDump and tcpDumpAll are identical to the ns-1 test suite.openTrace differs, only in that, it adds the line "v testName$testName_" to the trace file, out.tr. Most of the tests gathertraces at the node `r1'.New routines traceQueues, usage, and runTest are also defined. - traceQueues will trace the queues of all links incident on a specified now. This allows us to trace tcp acks, as well as traffic through alternate paths conveniently. - usage is a global procedure that simple prints out the usage relevant for the particular test suite being used. - runTest is a static (?) procedure that should be invoked by the test suite. It checks that the specified test and topology are correctly defined. It instantiates the test, and then "run"s the test. In addition, misc.tcl will source tcl/test/redefines.tcl, if present.This allows us (allowed me) to selectively redefine proceduresembedded in ns for debugging, or additional tracing.III) The test suites themselves are in individual files. Currently,the three are routed, red, and sack. `routed' is identical to the v2test suite. Each of these define a series of tests. The format of atest-suite file is: set dir [pwd] catch "cd tcl/test" source misc.tcl source topologies.tcl catch "cd $dir" define test 1 define test 2 . . . TestSuite runTestThe template for a typical test is:---------------------------------------------------------------------------Class Test/tahoe1 -superclass TestSuiteTest/tahoe1 instproc init topo { $self instvar net_ defNet_ test_ set net_ $topo ;# topology variant to run test on set defNet_ net0 ;# default topology, used in 2 ways # 1. topology used, if $topo == "" # 2. to verify that variant is derived # from $defNet_ set test_ tahoe ;# identity of test. really an # ns-1 compatibility artifact. $self next}Test/tahoe1 instproc run {} { $self instvar ns_ ;# handle for the simulator $self instvar node_ ;# array of nodes, key = name, val = handle $self instvar testName_ ;# usually $test_:$net_ # various Transport configurations, elided for brevity. # See actual test suites for details. # Trace only the bottleneck link # # Actually, we now trace all activity at the node around the # bottleneck link. This allows us to track acks, as well # packets taking any alternate paths around the bottleneck # link. # $self traceQueues $node_(r1) [$self openTrace 5.0 $testName_] $ns_ run}---------------------------------------------------------------------------STATUS OF THE CURRENT TEST SUITES:test-suite-routed.tcl This suite is identical to the basic ns-2 test suite. This name is a very bad misnomer, as there is no separate routed test suite. The telnet test requires a TELNET source, therefore cannot currently run. Hence, it is X'd out.test-suite-red.tcl This suite adds additional configuration to the net2 topology. Queue plotting is still untested in ns-2. Unlike the finish routine, we have left the trace processing routines in plotQueue in the suite. This suite also redefines the tcpDumpAll procedure for its use. Tests red_twoway, red_twowaybytes require the TELNET source. The flow tests have not even been converted into ns-2 format. The tests themselves have been X'd out.test-suite-sack.tcl The tests in this routing previously used a different tracing routine, openTraces. It looks like this was done to gather traces of returning acks. The new traceQueues procedure should supercede this routine? Tests delayedSack and timersSack are commented out. Is this right?IV) In addition, there are driver routines to run these tests, or processthe results. 1. ktest-all <suite> [<test> ...] Given a <suite>, ktest-all will run all the specified <test>s from test-suite-<suite>.tcl, against all the topologies defined in topologies in tcl. If no test is specified, then it will run all the tests defined in test-suite-<suite>.tcl. The suite will compare the results of all.tr against a previously computed result stored in test-output-raw (The result is stored the first time the test is run). It will also plot the results stored in out.tr. If $DISPLAY is set, then xgraph is used to show on the screen. Otherwise, gnuplot is used to generate a postscript file that is stored in ps-files. The program also checks if a new result differs from the previously computed result. Core dumps are saved in the crash subdirectory.2. rt <suite> <test> [<topology>] `rt' will run one <test> from test-suite-<suite>.tcl, for a particular <topology>. If the topology is unspecified, the default topology applicable for that test will be used.The next set of programs are useful in processing trace files.1. getrc [-b] [-o outfile] -s node1 [-d node2] [tracefile] Extract trace lines that match certain characteristics. -s node1 extract all packets from node1. -b -s node1 extract all packets to or from node1. -s node1 -d node2 extract packets on link <node1 -> node2> -b -s node1 -d node2 extract pkts. on link <node1 <-> node2>.2. raw2xg [-a] [tracefile] Translate the trace file into a format palatable to xgraph. The -a option will extract acks in addition to tcp traffic. The conversion algorithms used to be in the finish procedures of the ns-1 test suite.3. raw2gp [-a] [tracefile] Translate the trace file into a format palatable to gnuplot. The output data is placed into separate files called `packets', `drops', `acks', `link-fails', and `link-recovery'. The output from raw2gp is a set of commands that can processed by gnuplot. Other useful aliases are: alias xg 'xgraph -bb -tk -nl -m -x time -y packets' alias raw2nam 'awk -f tcl/nam-demo/nstonam.awk' alias gvl 'ghostview -landscape -'As an example, % getrc -s 2 -d 3 test-output-raw/tahoe | raw2xg | xgwill generate the graph of tahoe1, similar to that produced by % ./ns test-suite.tcl tahoe1in the ns-1 test suites.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -