📄 ramodel.tcl
字号:
##set seed 0set packetsize 245set nn 300 ;# number of nodesset cnn [expr $nn -2 ] ;# number of clientsset plottime 15000.0ns-random $seed##user start time from a poisson distributionset starttime(2) 0#set tmp [new RandomVariable/Exponential] ;# Poisson process#$tmp set avg_ 5.4674 ;# average arrival interval#artificially syncronize flow start time#every flow starts at multiple of 1.8sset tmp [new RandomVariable/Empirical]$tmp loadCDF userintercdf1for {set i 3} {$i < $nn} {incr i} { set p [$tmp value] set i1 [expr $i - 1 ] set starttime($i) [expr $starttime($i1) + $p ]}##number of sequential flow per userset rv0 [new RandomVariable/Empirical]$rv0 loadCDF sflowcdf##flow durationset rv1 [new RandomVariable/Empirical]$rv1 loadCDF flowdurcdffor {set i 2} {$i < $nn} {incr i} { set q [$rv0 value] set sflow($i) [expr int($q) ] puts "node $i has $sflow($i) flow " set p [$rv1 value] set dur($i) [expr $p * 60 ] puts "node $i duration : $dur($i)"}for {set i 2} {$i < $nn} {incr i} { set flowstoptime($i) [expr $starttime($i) + $dur($i) ]}set ns [new Simulator]for {set i 0} {$i < $nn} {incr i} {set n($i) [$ns node]}set f [open /usr/RAtrace/newout.tr w]$ns trace-all $f$ns duplex-link $n(0) $n(1) 1.5Mb 10ms DropTailfor {set j 2} {$j < $nn} {incr j} { $ns duplex-link $n(0) $n($j) 10Mb 5ms DropTail}set rv2 [new RandomVariable/Empirical]$rv2 loadCDF ontimecdfset rv3 [new RandomVariable/Empirical]$rv3 loadCDF fratecdffor {set i 2} {$i < $nn} {incr i} { set s($i) [new Agent/UDP] $ns attach-agent $n(1) $s($i) set null($i) [new Agent/Null] $ns attach-agent $n($i) $null($i) $ns connect $s($i) $null($i) set realaudio($i) [new Application/Traffic/RealAudio] $realaudio($i) set packetSize_ $packetsize $realaudio($i) set burst_time_ 0.05ms $realaudio($i) set idle_time_ 1800ms set flow_rate [$rv3 value] set r [ format "%fk" $flow_rate ] puts "node $i flow rate $r" $realaudio($i) set rate_ $r $realaudio($i) attach-agent $s($i)}for {set i 2} {$i < $nn} {incr i} { $ns at $starttime($i) "$realaudio($i) start" $ns at $flowstoptime($i) "$realaudio($i) stop" puts "node $i starttime $starttime($i)" puts "node $i stoptime $flowstoptime($i)" ##schedule for next flow for {set h 2} {$h <= $sflow($i)} {incr h} { set starttime($i) [expr $flowstoptime($i) + 0.001 ] set p [$rv1 value] set dur($i) [expr $p * 60 ] puts "node $i duration : $dur($i)" set flowstoptime($i) [expr $starttime($i) + $dur($i) ] set realaudio($i) [new Application/Traffic/RealAudio] $realaudio($i) set packetSize_ $packetsize $realaudio($i) set burst_time_ 0.05ms $realaudio($i) set idle_time_ 1800ms set flow_rate [$rv3 value] set r [ format "%fk" $flow_rate ] puts "node $i flow rate $r" $realaudio($i) set rate_ $r $realaudio($i) attach-agent $s($i) }}$ns at $plottime "close $f"$ns at $plottime "finish tg"proc finish file { #exec rm -f out.time.tr # # exec awk { { if (($1 == "+") && ($3 == 1) ) \ print $2, $10 } } /usr/RAtrace/newout.tr > RA.time.tr}$ns runexit 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -