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

📄 helper.tcl

📁 无线个域网(WPAN)就是在个人周围空间形成的无线网络
💻 TCL
字号:
REDPDSim instproc init { ns redpdq redpdflowmon redpdlink id enable } { 	$self instvar ns_	set ns_ $ns	$self instvar last_reward_ last_detect_#	$self instvar Reward_interval_ reward_pending_	$self instvar detect_pending_	$self instvar id_	set id_ $id				#for testing identification	global testIdent_	$self instvar testIdentOnly_ counter_	set testIdentOnly_ $testIdent_	set counter_ 0	$self instvar verbose_	global verbosity_	set verbose_ $verbosity_	; #-1 means no messages		$self instvar redpdq_ redpdflowmon_ redpdlink_	set redpdq_ $redpdq	set redpdflowmon_ $redpdflowmon	set redpdlink_ $redpdlink		# the amount of history to be kept for each monitored flow	$self instvar Hist_Max_ 	set Hist_Max_ 5	set MinTimeToUnmonitor_ 15	set MaxDropRateToUnmonitor_ 0.005	#maximum reduction in probability in one step	$self instvar maxPReduction_ maxPReductionUnresp_	set maxPReduction_ 0.05	set maxPReductionUnresp_ 0.05	#whether unresponsive testing is ON	$self instvar unresponsiveTestOn_	global unresponsive_test_	set unresponsiveTestOn_ $unresponsive_test_		#set MaxDropList_ to infinity (greater than total number of flows) to get infinite memory list. 	$self instvar MaxDropList_ 	set MaxDropList_ 50	#the lists - number of lists, "regular", history	$self instvar MaxHighDRFlowHist_ XinRegular_ high_dr_flow_hist_	global listMode_	if {$testIdent_ == 1 && $listMode_ == "single"} {		set MaxHighDRFlowHist_ 1		set XinRegular_ 1	} else {		set MaxHighDRFlowHist_ 5		set XinRegular_ 3	}	#the number of elements in the drop rate history at the router	$self instvar dropRateHist_  drop_rate_list_ avg_drop_rate_	set dropRateHist_ 8	set avg_drop_rate_ -1	set detect_pending_ false	set reward_pending_ false	set last_reward_ 0.0	set last_detect_ 0.0	#all 3 quantities below in seconds	$self instvar Mintime_ Maxtime_ TargetRTT_	global target_rtt_ 	set TargetRTT_ $target_rtt_	set Mintime_  [expr 2*$TargetRTT_] 	set Maxtime_  [expr 10*$TargetRTT_]		$self instvar BList_ Bindex_ minBtoConsider_ minTimetoConsider_	set Bindex_ 0	set minBtoConsider_ 4	set minTimetoConsider_ 0.400	for {set i 0} {$i < $MaxHighDRFlowHist_} {incr i} {	    set BList_($i) 0	}	#turn to -1 to switch the test off.	$self instvar P_testTFRp_ 	set P_testTFRp_ [$redpdq_ set P_testFRp_]		if { $enable == "true" || $enable == 1 } {	    # start detect after 11s of simulation start	    $self sched-detect-reward 10.1	} else {	    $self sched-print-stats 0.1	    puts stderr "(red-pd disabled)"	}}      REDPDSim instproc monitor-link {} {		$self instvar redpdlink_	set fmon [new QueueMonitor/ED/Flowmon]	set cl [new Classifier/Hash/Fid 33]	$fmon classifier $cl	$cl proc unknown-flow { src dst fid } {		set nflow [new QueueMonitor/ED/Flow]		set slot [$self installNext $nflow]		## puts "here1"		$self set-hash auto $src $dst $fid $slot	}	$cl proc no-slot slotnum {		puts stderr "classifier $self, no-slot for slotnum $slotnum"	}	$redpdlink_ attach-monitors [new SnoopQueue/In] [new SnoopQueue/Out] \		[new SnoopQueue/Drop] $fmon	return $fmon}REDPDSim instproc frac { num denom } {	if { $denom == 0 } {		return 0.0	}	return [expr double($num) / $denom]}REDPDSim instproc vprint args {	$self instvar verbose_ id_	set level [lindex $args 0]	set a [lrange $args 1 end]	if { $level <= $verbose_ } {		$self instvar ns_		puts "[$ns_ now] ($id_) $a"		flush stdout	}}REDPDSim instproc vprint-nonewline args {	$self instvar verbose_ id_	set level [lindex $args 0]	set a [lrange $args 1 end]	if { $level <= $verbose_ } {		$self instvar ns_		puts -nonewline "[$ns_ now] ($id_) $a"		flush stdout	}}##generic function to print a list of lists #REDPDSim instproc printListOfLists {level listOfLists} {    $self instvar verbose_    if { $level <= $verbose_ } {	$self instvar ns_    	foreach i $listOfLists {	    puts -nonewline "{ "	    foreach j $i {		puts -nonewline "$j "	    }	    puts -nonewline " } "	}	puts ""	flush stdout    }}

⌨️ 快捷键说明

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