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

📄 jobs-cn2002.tcl

📁 无线个域网(WPAN)就是在个人周围空间形成的无线网络
💻 TCL
📖 第 1 页 / 共 2 页
字号:
puts "Gateway Buffer Size: $GW_BUFF (packs)"# Utilization factor for all core linksset utilz 0.0005puts "Per source utilization (cross-traffic): $utilz"# Packet Size (in bytes); assume common for all sourcesset PKTSZ      500set MAXWIN     50puts "Packet Size: $PKTSZ (bytes)"# Number of monitored flows (equal to # of classes)set N_CL	4	puts "Number of classes: $N_CL"set N_USERS_TCP	3	set N_USERS	4puts "Number of flows: $N_USERS"# Number of cross-traffic sources set N_C_TCP	6set N_CT	10	puts "Number of cross-traffic sources (per hop) $N_CT"# Peak Rate of a cross-traffic source (set to link bandwidth, # because a cross-traffic source models an incoming link's aggregate traffic)set PEAK_RT_C	$EDGE_BW	puts "Peak rate of cross-traffic sources: $PEAK_RT_C (kbps)"# Average Rate of a cross-traffic source (kbps); there is some algebra here set AVG_RT_C	[expr $utilz * $EDGE_BW / ($N_CT*1.)] puts "Average cross-traffic rate (per source): $AVG_RT_C (kbps)"# Average idle duration for cross-traffic sources (msec)set IDLE_TM_C 	[expr ($PEAK_RT_C-$AVG_RT_C)/($PEAK_RT_C*$AVG_RT_C) * $PKTSZ*8] puts "Average cross-traffic idle time: $IDLE_TM_C (ms)"# Alpha parameter of the Pareto distribution for cross-traffic sourcesset PARETO_ALPHA_C	1.9puts "Alpha pareto parameter of cross-traffic sources: $PARETO_ALPHA_C"set START_TM 	10.0puts "Monitored flows start at: $START_TM"set max_time 	70.0puts "Max time: $max_time (sec)"# Statistics-related parametersset STATS_INTR  2; # interval between reporting statistics set START_STATS 0; # start-time for reporting statistics # Marker Types# Deterministic (for user traffic)set DETERM	1	# Statistical (for cross-traffic)set STATIS	2	# Demarker Types# Create a trace file for each class (for user traffic)set VERBOSE	1# Do not create trace files set QUIET	2# 1. Core nodes ($hops nodes)for {set i 1} {$i <= $hops} {incr i} {	set core_node($i) [$ns node]}puts "Core nodes: OK"# 2. User traffic nodes and sinks (N_USERS sources and sinks)for {set i 1} {$i <= $N_USERS} {incr i} {	set user_source($i) [$ns node]	set user_sink($i) [$ns node]	if {$i <= $N_USERS_TCP} {		set user_source_agent($i) [new Agent/TCP/Newreno]    		set user_sink_agent($i) [new Agent/TCPSink/DelAck]	} else {		set user_source_agent($i) [new Agent/UDP]		set user_sink_agent($i) [new Agent/LossMonitor]	}	}puts "User traffic nodes and sinks: OK"# 3. Cross traffic nodes and sinks ($hops-1 sources, $hops-1 sinks)for {set i 1} {$i < $hops} {incr i} {	for {set j 1} {$j <= $N_CT} {incr j} {		set cross_source([expr ($i-1)*$N_CT+$j]) [$ns node]		set cross_sink([expr ($i-1)*$N_CT+$j]) [$ns node]		if {$j > $N_C_TCP} {			set cross_source_agent([expr ($i-1)*$N_CT+$j]) [new Agent/UDP]			set cross_sink_agent([expr ($i-1)*$N_CT+$j]) [new Agent/LossMonitor]		} else { 			set cross_source_agent([expr ($i-1)*$N_CT+$j]) [new Agent/TCP/Newreno]			set cross_sink_agent([expr ($i-1)*$N_CT+$j]) [new Agent/TCPSink/DelAck]		}		puts "Creating cross_source/sink_agent [expr ($i-1)*$N_CT+$j] ($i,$j)"	}}puts "Cross traffic nodes and sink: OK"# 4. Core links (JoBS)for {set i 1} {$i < $hops} {incr i} {	build-jobs-link $core_node($i) $core_node([expr $i+1]) $CORE_BW $CORE_DEL $GW_BUFF    	set q [$ns get-queue $core_node($i) $core_node([expr $i+1])]	set l [$ns get-link $core_node($i) $core_node([expr $i+1])]    	if {$i == 1} {		$q copyright-info    	}        	$q init-rdcs -1 4 4 4    	$q init-rlcs 2 2 2 2     	$q init-alcs 0.005 -1 -1 -1    	$q init-adcs 0.002 -1 -1 -1    	$q trace-file jobs-cn2002/hoptrace.$i	$q link [$l link]	$q sampling-period 1    	$q id $i    	$q initialize    	# It's a duplex link    	set q [$ns get-queue $core_node([expr $i+1]) $core_node($i)]    	set l [$ns get-link $core_node([expr $i+1]) $core_node($i)]    	$q init-rdcs -1 4 4 4    	$q init-rlcs 2 2 2 2     	$q init-alcs 0.005 -1 -1 -1     	$q init-adcs 0.002 -1 -1 -1	$q trace-file null    	$q link [$l link]	$q sampling-period 1    	$q id [expr $i+$hops]	$q initialize}puts "Core links: OK"# 5. Cross-traffic links (marker)for {set i 1} {$i < $hops} {incr i} {	for {set j 1} {$j <= $N_CT} {incr j} {		build-marker-link $cross_source([expr ($i-1)*$N_CT+$j]) $core_node($i) [expr $EDGE_BW/(1.*$N_CT)] $EDGE_DEL [expr $GW_BUFF*100]		set q [$ns get-queue $cross_source([expr ($i-1)*$N_CT+$j]) $core_node($i)]		if {$j == 1} {			$q marker_type $DETERM			$q marker_class 1		} elseif {($j >=2) && ($j <= 3)} {			$q marker_type $DETERM			$q marker_class 2		} elseif {($j >= 4) && ($j <= 6)} {			$q marker_type $DETERM			$q marker_class 3		} else {			$q marker_type $DETERM			$q marker_class 4		}		set q [$ns get-queue $core_node($i) $cross_source([expr ($i-1)*$N_CT+$j])]		$q id 99		$q trace-file null		build-marker-link  $cross_sink([expr ($i-1)*$N_CT+$j]) $core_node([expr $i+1]) [expr $EDGE_BW/(1.*$N_CT)] $EDGE_DEL [expr $GW_BUFF*100]		set q [$ns get-queue $cross_sink([expr ($i-1)*$N_CT+$j]) $core_node([expr $i+1])]		if {$j == 1} {			$q marker_type $DETERM			$q marker_class 1		} elseif {($j >=2) && ($j <= 3)} {			$q marker_type $DETERM			$q marker_class 2	 	} elseif {($j >= 4) && ($j <= 6)} {			$q marker_type $DETERM			$q marker_class 3		} else {			$q marker_type $DETERM			$q marker_class 4		}		set q [$ns get-queue $core_node([expr $i+1]) $cross_sink([expr ($i-1)*$N_CT+$j])]		$q id 99		$q trace-file null	}}   puts "Cross traffic links: OK"# 6. Edge links (marker)for {set i 1} {$i <= $N_USERS} {incr i} {	build-marker-link    $user_source($i) $core_node(1) $EDGE_BW $EDGE_DEL $GW_BUFF    	set q [$ns get-queue $user_source($i) $core_node(1)]   	$q marker_type $DETERM	$q marker_class $i    	set q [$ns get-queue $core_node(1) $user_source($i)]	# assign a bogus id    	$q id 99    	build-demarker-link  $core_node($hops) $user_sink($i) $EDGE_BW $EDGE_DEL $GW_BUFF    	set q [$ns get-queue $core_node($hops) $user_sink($i)]    	$q id $i	$q trace-file jobs-cn2002/e2edelay    	set q [$ns get-queue $user_sink($i) $core_node($hops)]    	$q marker_type $DETERM	$q marker_class $i}puts "Edge marker/demarker links: OK" ## Create traffic## Cross-traffic (UDP, on/off Pareto)for {set i 1} {$i < $hops} {incr i} {	for {set j 1} {$j <= $N_CT} {incr j} {		if {$j > $N_C_TCP} {			set cross_flow([expr ($i-1)*$N_CT+$j]) [new Application/Traffic/Pareto]			build-pareto-on-off [expr ($i-1)*$N_CT+$j+$N_USERS] $cross_source([expr ($i-1)*$N_CT+$j]) $cross_source_agent([expr ($i-1)*$N_CT+$j]) $cross_sink([expr ($i-1)*$N_CT+$j]) $cross_sink_agent([expr ($i-1)*$N_CT+$j]) $cross_flow([expr ($i-1)*$N_CT+$j]) 2200.0 $PKTSZ $PARETO_ALPHA_C 0.0 100.0 120.0		} else {			set cross_flow([expr ($i-1)*$N_CT+$j]) [new Application/FTP]			init_mouse [expr ($i-1)*$N_CT+$j+$N_USERS] $cross_source([expr ($i-1)*$N_CT+$j]) $cross_source_agent([expr ($i-1)*$N_CT+$j]) $cross_sink([expr ($i-1)*$N_CT+$j]) $cross_sink_agent([expr ($i-1)*$N_CT+$j]) $cross_flow([expr ($i-1)*$N_CT+$j]) $MAXWIN $PKTSZ 0.0 0.2 300 1000		}		puts "Connecting cross_source/sink_agent [expr ($i-1)*$N_CT+$j] ($i,$j) - via flow [expr ($i-1)*$N_CT+$j+$N_USERS]"	}}   puts "Cross-traffic sources: OK"# User traffic (TCP/FTP and UDP)for {set i 1} {$i <= $N_USERS} {incr i} {	if {$i <= $N_USERS_TCP} {		set user_flow($i) [new Application/FTP]		inf_ftp $i $user_source($i) $user_source_agent($i) $user_sink($i) $user_sink_agent($i) $user_flow($i) $MAXWIN $PKTSZ $START_TM    } else {		set user_flow($i) [new Application/Traffic/Pareto]		build-pareto-on-off $i $user_source($i) $user_source_agent($i) $user_sink($i) $user_sink_agent($i) $user_flow($i) 5000.0 $PKTSZ $PARETO_ALPHA_C $START_TM 10.0 10.0	}}puts "TCP flows: OK"for {set i 1} {$i <= $N_USERS} {incr i} {	if {$i <= $N_USERS_TCP} {    		set cwnd_file($i) [open jobs-cn2002/cwnd$i.tr w]	}	set thru_file($i) [open jobs-cn2002/thru$i.tr w]}set thru_file([expr $N_USERS + 1]) [open jobs-cn2002/thru_sum.tr w]## Queue Monitors#for {set i 1} {$i < $hops} {incr i} {	set qmon_xy($i) [$ns monitor-queue $core_node($i) $core_node([expr $i+1]) ""]	$ns at $START_STATS  "$qmon_xy($i) reset"    	set bing_xy($i) [$qmon_xy($i) get-bytes-integrator]    	set ping_xy($i) [$qmon_xy($i) get-pkts-integrator]    	$ns at $START_STATS  "$bing_xy($i) reset"    	$ns at $START_STATS  "$ping_xy($i) reset"    	$ns at [expr $START_STATS+$STATS_INTR] "linkDump [$ns link $core_node($i) $core_node([expr $i+1])] $bing_xy($i) $ping_xy($i) $qmon_xy($i) $STATS_INTR N($i)-N([expr $i+1])"   }# Stats dumpfor {set i 1} {$i < $hops} {incr i} {	set flow_file($i) [open jobs-cn2002/flows-hop$i.tr w]    	set fm [$ns makeflowmon Fid]    	$ns attach-fmon [$ns get-link $core_node($i) $core_node([expr $i+1])] $fm    	$ns at $START_TM "flowDump [$ns get-link $core_node($i) $core_node([expr $i+1])] $fm $flow_file($i) 0.5"}for {set i 1} {$i <= $N_USERS} {incr i} {    	set tot_drop($i) 0    	set old_arv($i) 0    	set total_drops_file($i) [open jobs-cn2002/totaldrops-flow$i.tr w]    	$ns at $START_TM "totalDrops $i 0.5"}$ns at $START_TM "record_thru"$ns at $START_TM "record_cwnd"$ns at $max_time "finish"proc finish {} {        puts "\nSimulation End"	global N_CT N_USERS user_source core_node cross_source cross_sink user_sink ns hops	puts "\nMonitored Flows (send):"	for {set i 1} {$i <= $N_USERS} {incr i} {		set q [$ns get-queue $user_source($i) $core_node(1)]		puts "$i:   arrivals class-1 = [$q set marker_arrvs1_]" 		puts "$i:   arrivals class-2 = [$q set marker_arrvs2_]" 		puts "$i:   arrivals class-3 = [$q set marker_arrvs3_]" 		puts "$i:   arrivals class-4 = [$q set marker_arrvs4_]" 	}	puts "\nMonitored Flows (receive):"	for {set i 1} {$i <= $N_USERS} {incr i} {		set q [$ns get-queue $core_node($hops) $user_sink($i)]		puts "$i:   arrivals class-1 = [$q set demarker_arrvs1_]" 		puts "$i:   arrivals class-2 = [$q set demarker_arrvs2_]" 		puts "$i:   arrivals class-3 = [$q set demarker_arrvs3_]" 		puts "$i:   arrivals class-4 = [$q set demarker_arrvs4_]" 	}	for {set i 1} {$i < $hops} {incr i} {		for {set j 1} {$j <= $N_CT} {incr j} {			set q [$ns get-queue $cross_source([expr ($i-1)*$N_CT+$j]) $core_node($i)]			puts "\nCore Input Link ($i,$j):"			puts "    cross-arrivals class-1 = [$q set marker_arrvs1_]" 			puts "    cross-arrivals class-2 = [$q set marker_arrvs2_]" 			puts "    cross-arrivals class-3 = [$q set marker_arrvs3_]" 			puts "    cross-arrivals class-4 = [$q set marker_arrvs4_]" 			set q [$ns get-queue $core_node([expr $i+1]) $cross_sink([expr ($i-1)*$N_CT+$j])]			puts "\nCore Output Link ($i,$j):"			puts "    cross-arrivals class-1 = [$q set demarker_arrvs1_]" 			puts "    cross-arrivals class-2 = [$q set demarker_arrvs2_]" 			puts "    cross-arrivals class-3 = [$q set demarker_arrvs3_]" 			puts "    cross-arrivals class-4 = [$q set demarker_arrvs4_]" 		}	}	exit 0}puts "\ngo!\n"$ns run

⌨️ 快捷键说明

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