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

📄 rtm_reclass.tcl

📁 CBRP协议(移动adhoc中基于分簇的路由协议)ns2下的源码
💻 TCL
📖 第 1 页 / 共 2 页
字号:
## Main test file for the router mechanisms simulation#Class TestSuitesource mechanisms.tclsource sources.tclsource rtm_plot.tclTestSuite instproc init {} {        $self instvar ns_ defNet_ net_ test_ topo_ node_ testName_	$self instvar scheduler_        set ns_ [new Simulator]	set scheduler_ [$ns_ set scheduler_]        if {$net_ == ""} {                set net_ $defNet_        }#        if ![Topology info subclass Topology/$net_] {#                global argv0#                puts stderr "$argv0: cannot run test $test_ over topology $net_"#                exit 1#        }        set topo_ [new Topology/$net_ $ns_]        foreach i [$topo_ array names node_] {                # This would be cool, but lets try to be compatible                # with test-suite.tcl as far as possible.                #                # $self instvar $i                # set $i [$topo_ node? $i]                #                set node_($i) [$topo_ node? $i]        }        if {$net_ == $defNet_} {                set testName_ "$test_"        } else {                set testName_ "$test_:$net_"        }}#------------------------------------------------------------------# Skeleton topology base classClass SkelTopologySkelTopology instproc init {} {    $self next}SkelTopology instproc node? n {    $self instvar node_    if [info exists node_($n)] {        set ret $node_($n)    } else {        set ret ""    }    set ret}## create:## S1		 S3#   \		 /#    \		/#    R1========R2#    /		\#   /		 \# S2		 S4## - 10Mb/s, 3ms, drop-tail# = 1.5Mb/s, 20ms, CBQ#Class NodeTopology/6nodes -superclass SkelTopologyNodeTopology/6nodes instproc init ns {	$self next	$self instvar node_	set node_(s1) [$ns node]	set node_(s2) [$ns node]	set node_(s3) [$ns node]	set node_(s4) [$ns node]	set node_(s5) [$ns node]	set node_(s6) [$ns node]	set node_(r1) [$ns node]	set node_(r2) [$ns node]}Class Topology/net2 -superclass NodeTopology/6nodesTopology/net2 instproc init ns {	$self next $ns	$self instvar node_ cbqlink_ bandwidth_ rtt_	$ns duplex-link $node_(s1) $node_(r1) 10Mb 2ms DropTail	$ns duplex-link $node_(s2) $node_(r1) 10Mb 3ms DropTail	set cl [new Classifier/Hash/SrcDestFid 33]	$ns simplex-link $node_(r1) $node_(r2) 1.5Mb 30ms "CBQ $cl"        set rtt_ 0.06	set cbqlink_ [$ns link $node_(r1) $node_(r2)]	[$cbqlink_ queue] algorithm "formal"	$ns simplex-link $node_(r2) $node_(r1) 1.5Mb 30ms DropTail	set bandwidth_ 1500	[[$ns link $node_(r2) $node_(r1)] queue] set limit_ 25	$ns duplex-link $node_(s3) $node_(r2) 10Mb 4ms DropTail	$ns duplex-link $node_(s4) $node_(r2) 10Mb 5ms DropTail	$ns duplex-link $node_(s5) $node_(r1) 10Mb 10ms DropTail	$ns duplex-link $node_(s6) $node_(r2) 10Mb 1ms DropTail	return $cbqlink_}Class Topology/net3 -superclass NodeTopology/6nodesTopology/net3 instproc init ns {	$self next $ns	$self instvar node_ cbqlink_ bandwidth_ rtt_	$ns duplex-link $node_(s1) $node_(r1) 10Mb 2ms DropTail	$ns duplex-link $node_(s2) $node_(r1) 10Mb 3ms DropTail	set cl [new Classifier/Hash/SrcDestFid 33]	$ns simplex-link $node_(r1) $node_(r2) 1.5Mb 3ms "CBQ $cl"        set rtt_ 0.006	set cbqlink_ [$ns link $node_(r1) $node_(r2)]	[$cbqlink_ queue] algorithm "formal"	$ns simplex-link $node_(r2) $node_(r1) 1.5Mb 3ms DropTail	set bandwidth_ 1500	[[$ns link $node_(r2) $node_(r1)] queue] set limit_ 25	$ns duplex-link $node_(s3) $node_(r2) 10Mb 4ms DropTail	$ns duplex-link $node_(s4) $node_(r2) 10Mb 5ms DropTail	$ns duplex-link $node_(s5) $node_(r1) 10Mb 10ms DropTail	$ns duplex-link $node_(s6) $node_(r2) 10Mb 1ms DropTail	return $cbqlink_}## prints "time: $time class: $class bytes: $bytes" for the link.#TestSuite instproc linkDumpFlows { linkmon interval stoptime } {	$self instvar ns_ linkflowfile_        set f [open $linkflowfile_ w]puts "linkDumpFlows: opening file $linkflowfile_, fdesc: $f"        TestSuite instproc dump1 { file linkmon interval } {		$self instvar ns_ linkmon_                $ns_ at [expr [$ns_ now] + $interval] \			"$self dump1 $file $linkmon $interval"		foreach flow [$linkmon flows] {			set bytes [$flow set bdepartures_]			if {$bytes > 0} {				puts $file \			    "time: [$ns_ now] class: [$flow set flowid_] bytes: $bytes $interval"     			}		}        }        $ns_ at $interval "$self dump1 $f $linkmon $interval"        $ns_ at $stoptime "flush $f"}#----------------------TestSuite instproc finish {} {	$self instvar post_ scheduler_	$scheduler_ halt	set bandwidth 1500	$post_ plot_bytes $bandwidth}TestSuite instproc config { name } {	$self instvar linkflowfile_ linkgraphfile_	$self instvar goodflowfile_ goodgraphfile_	$self instvar badflowfile_ badgraphfile_	$self instvar label_ post_	set label_ $name	set linkflowfile_ $name.tr	set linkgraphfile_ $name.xgr	set goodflowfile_ $name.gf.tr	set goodgraphfile_ $name.gf.xgr	set badflowfile_ $name.bf.tr	set badgraphfile_ $name.bf.xgr	set post_ [new PostProcess $label_ $linkflowfile_ $linkgraphfile_ \		$goodflowfile_ $goodgraphfile_ \		$badflowfile_ $badgraphfile_]	$post_ set format_ "xgraph"}## Create traffic.#TestSuite instproc traffic1 {} {    $self instvar node_     $self new_tcp 4.2 $node_(s2) $node_(s4) 100 2 0 50 reno 60000    $self new_cbr 18.4 $node_(s1) $node_(s4) 200 0.003 3 0    $self new_tcp 65.4 $node_(s1) $node_(s4) 2 4 0 1500 sack 2700    $self new_tcp 100.2 $node_(s3) $node_(s1) 8 5 0 1000 reno 0    $self new_tcp 122.6 $node_(s5) $node_(s4) 4 6 0 512 sack 4000    $self new_tcp 135.0 $node_(s4) $node_(s2) 100 7 0 1000 reno 0    $self new_tcp 162.0 $node_(s2) $node_(s6) 100 8 0 1000 sack 3300    $self new_tcp 220.0 $node_(s1) $node_(s3) 100 9 0 512 reno 3000    $self new_tcp 260.0 $node_(s3) $node_(s2) 100 10 0 512 sack 0    $self new_cbr 310.0 $node_(s2) $node_(s4) 190 0.1 11 0     $self new_tcp 320.0 $node_(s1) $node_(s4) 100 12 0 1500 reno 500    $self new_tcp 350.0 $node_(s5) $node_(s6) 100 13 0 512 reno 1000    $self new_tcp 370.0 $node_(s3) $node_(s2) 100 14 0 1500 sack 0    $self new_tcp 390.0 $node_(s2) $node_(s3) 100 15 0 512 reno 0    $self new_tcp 420.0 $node_(s5) $node_(s6) 100 16 0 512 reno 0    $self new_tcp 440.0 $node_(s2) $node_(s4) 100 17 0 512  reno 0    $self new_tcp 22.0 $node_(s2) $node_(s6) 100 18 0 1500 sack 6000    $self new_tcp 3.3 $node_(s6) $node_(s2) 100 19 0 500 sack 0    $self new_tcp 28.0 $node_(s5) $node_(s4) 100 20 0 500 reno 8000    $self new_cbr 80.0 $node_(s4) $node_(s2) 200 0.5 21 0    $self new_tcp 1.0  $node_(s1) $node_(s3) 100 25 0 1500 reno 4000}## Create traffic for UNFRIENDLY test.#TestSuite instproc traffic2 {} {    $self instvar node_    $self new_tcp 1.0  $node_(s1) $node_(s3) 50 1 0 1500 sack 0    $self new_tcp 2.2 $node_(s2) $node_(s4) 50 2 0 1500 sack 0    # 66,666 Bps for CBR flow, 187,500 Bps for link.#    $self new_cbr 58.4 $node_(s1) $node_(s4) 200 0.003 3 0    $self new_cbr 58.4 $node_(s1) $node_(s4) 500 0.003 3 0    $self new_tcp 3.4 $node_(s1) $node_(s4) 50 4 0 1500 sack 0    $self new_tcp 34.2 $node_(s3) $node_(s1) 50 5 0 1500 sack 0    $self new_tcp 35.6 $node_(s5) $node_(s4) 50 6 0 1500 sack 0    $self new_tcp 36.0 $node_(s4) $node_(s2) 50 7 0 1500 sack 0    $self new_tcp 37.3 $node_(s2) $node_(s6) 50 8 0 1500 sack 0    $self new_tcp 38.0 $node_(s1) $node_(s3) 50 9 0 1500 sack 0    $self new_tcp 39.5 $node_(s3) $node_(s2) 50 10 0 1500 sack 0    $self new_tcp 35.6 $node_(s2) $node_(s6) 50 11 0 1500 sack 0    $self new_tcp 30.2 $node_(s1) $node_(s4) 50 12 0 1500 sack 0    $self new_tcp 31.3 $node_(s5) $node_(s6) 50 13 0 1500 sack 0    $self new_tcp 32.9 $node_(s3) $node_(s2) 50 14 0 1500 sack 0    $self new_tcp 33.8 $node_(s2) $node_(s3) 50 15 0 1500 sack 0    $self new_tcp 34.0 $node_(s5) $node_(s6) 50 16 0 1500 sack 0    $self new_tcp 35.5 $node_(s2) $node_(s4) 50 17 0 1500  sack 0    $self new_tcp 36.1 $node_(s1) $node_(s4) 50 18 0 1500 sack 0    $self new_tcp 45.6 $node_(s5) $node_(s4) 50 19 0 1500 sack 0    $self new_tcp 47.3 $node_(s2) $node_(s6) 50 20 0 1500 sack 0#     $self new_tcp 48.0 $node_(s1) $node_(s4) 50 21 0 1500 sack 0#     $self new_tcp 42.6 $node_(s5) $node_(s4) 50 22 0 1500 sack 0#     $self new_tcp 43.3 $node_(s2) $node_(s6) 50 23 0 1500 sack 0#     $self new_tcp 46.0 $node_(s1) $node_(s4) 50 24 0 1500 sack 0#     $self new_tcp 42.6 $node_(s5) $node_(s4) 50 25 0 1500 sack 0#     $self new_tcp 43.3 $node_(s2) $node_(s6) 50 26 0 1500 sack 0#     $self new_tcp 41.0 $node_(s1) $node_(s4) 50 27 0 1500 sack 0#     $self new_tcp 46.6 $node_(s5) $node_(s4) 50 28 0 1500 sack 0#     $self new_tcp 48.3 $node_(s2) $node_(s6) 50 29 0 1500 sack 0#     $self new_tcp 45.0 $node_(s1) $node_(s4) 50 30 0 1500 sack 0#    $self new_cbr 38.4 $node_(s2) $node_(s3) 200 0.006 31 0#    $self new_cbr 48.4 $node_(s5) $node_(s6) 200 0.004 32 0#    $self new_cbr 28.4 $node_(s2) $node_(s3) 200 0.005 33 0}## For a 1% drop rate.#TestSuite instproc traffic3 {} {    $self instvar node_#    $self new_cbr 1.0 $node_(s2) $node_(s4) 1500 0.008 1 0    $self new_cbr 1.0 $node_(s2) $node_(s4) 1515 0.008 1 0}## Create traffic.#TestSuite instproc traffic4 {} {    $self instvar node_    $self new_tcp 12.0  $node_(s1) $node_(s3) 50 1 0 1500 sack 0    $self new_tcp 5.2 $node_(s2) $node_(s4) 50 2 0 1500 sack 0    $self new_cbr 1.4 $node_(s1) $node_(s4) 300 0.003 3 0    $self new_tcp 17.4 $node_(s1) $node_(s4) 50 4 0 1500 sack 0

⌨️ 快捷键说明

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