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

📄 fast-test2.tcl

📁 关于ns2的一些源码和资料
💻 TCL
字号:
############################################################## Dawn Choe 		Caltech 12-18-2003# Bartek Wydrowski 	Caltech 03-18-2004#  ############################################################# ---------- HELPER FUNCTIONS ------------# Create a FAST Tcp connectionproc create_tcp_fast { idx src dst start stop } {	global tcps	global ftps	global ns	global sinks	global tcps_start	global tcps_stop	puts "New TCP connection";	# set source agent and application	set tcps($idx) [new Agent/TCP/Fast]	$tcps($idx) set class_ 2 	$tcps($idx) set window_ 100000	$tcps($idx) set alpha_ 1000	$tcps($idx) set beta_ 1000	$ns attach-agent $src $tcps($idx)	set ftps($idx) [new Application/FTP]	$ftps($idx) attach-agent $tcps($idx)	# set sink 	set sinks($idx) [new Agent/TCPSink/Sack1]	$ns attach-agent $dst $sinks($idx)	$ns connect $tcps($idx) $sinks($idx)	set tcps_start($idx) [expr $start]	set tcps_stop($idx)  [expr $stop]	$ns at $start "$ftps($idx) start"	$ns at $stop  "$ftps($idx) stop"}# Record Procedureproc record {} {	global tcps ntcps	global f0    	global queueMoni1F queueMoni1B queueMoni2F queueMoni2B queueMoni3F queueMoni3B	global tcps_start tcps_stop	#get an instance of the simulator	set ns [Simulator instance]	#set the time afterwhich the procedure should be called again	set time 0.005	set now [$ns now]	set queueF1 [$queueMoni1F set pkts_]	set queueB1 [$queueMoni1B set pkts_]	set queueF2 [$queueMoni2F set pkts_]	set queueB2 [$queueMoni2B set pkts_]	set queueF3 [$queueMoni3F set pkts_]	set queueB3 [$queueMoni3B set pkts_]	set rate 0	for {set i 0} {$i < $ntcps} {incr i} {		if { ($now > $tcps_start($i)) && ($now < $tcps_stop($i)) } {			set window      [expr [$tcps($i) set cwnd_]];			set rtt 	[expr [$tcps($i) set avgRTT_]];			set bRTT	[expr [$tcps($i) set baseRTT_]];			set old_window 	[expr [$tcps($i) set avg_cwnd_last_RTT_]];			if { $rtt > 0 }  {		        	set rate	[expr $window/$rtt]			}			if { $bRTT < 9999999 } {		  		puts $f0 "$i $now $queueF1 $queueB1 $rate $window $rtt $bRTT $old_window $queueF2 $queueB2 $queueF3 $queueB3"  			}		}	}        	# Re-schedule the procedure	$ns at [expr $now+$time] "record"}# Define 'finish' procedure (include post-simulation processes)proc finish {} {	global ns	global f0	global f_all	$ns flush-trace	close $f_all		close $f0	puts "Finished."	exit 0}# ------ SIMULATION SPECIFIC SCRIPT -----------# The preambleset ns [new Simulator]$ns use-scheduler Heap# Predefine tracingset Name "fast-test2-record.dat";set Q1 "fast-test2-queue1F.dat";set Q2 "fast-test2-queue1B.dat";set Q3 "fast-test2-queue2F.dat";set Q4 "fast-test2-queue2B.dat";set Q5 "fast-test2-queue3F.dat";set Q6 "fast-test2-queue3B.dat";set f0 [open $Name w]set f1 [open $Q1 w]set f2 [open $Q2 w]set f3 [open $Q3 w]set f4 [open $Q4 w]set f5 [open $Q5 w]set f6 [open $Q6 w]set f_all [open nstrace.dat w]#$ns trace-all $f_all# Define the topologyset Cap1 1000set Cap2 1000set Cap3 1000set Del1 20set Del2 20set Del3 20set r1 [$ns node]set r2 [$ns node]set r3 [$ns node]set r4 [$ns node]$ns duplex-link $r1 $r2  [expr $Cap1]Mbps [expr $Del1]ms DropTail$ns duplex-link $r2 $r3  [expr $Cap2]Mbps [expr $Del2]ms DropTail$ns duplex-link $r3 $r4  [expr $Cap3]Mbps [expr $Del3]ms DropTailset botqF1 [[$ns link $r1 $r2] queue]set botqB1 [[$ns link $r2 $r1] queue]set botqF2 [[$ns link $r1 $r2] queue]set botqB2 [[$ns link $r2 $r1] queue]set botqF3 [[$ns link $r1 $r2] queue]set botqB3 [[$ns link $r2 $r1] queue]$ns queue-limit $r1 $r2 2000000; $ns queue-limit $r2 $r1 2000000; $ns queue-limit $r2 $r3 2000000; $ns queue-limit $r3 $r2 2000000; $ns queue-limit $r3 $r4 2000000; $ns queue-limit $r4 $r3 2000000; # Create Sources and Start & Stop timesset ntcps    4;set SimDuration 100;create_tcp_fast 0 $r1 $r4 0  100create_tcp_fast 1 $r1 $r2 20 100 create_tcp_fast 2 $r2 $r4 40 100create_tcp_fast 3 $r3 $r4 60 100#$ns create-connection TCP $r1 TCPSink $r2 1set starttime 0.0set finishtime $SimDuration# Monitor the queue between source switch and destination switchset queueMoni1F [$ns monitor-queue $r1 $r2 $f1 0.1]set queueMoni1B [$ns monitor-queue $r2 $r1 $f2 0.1]set queueMoni2F [$ns monitor-queue $r2 $r3 $f3 0.1]set queueMoni2B [$ns monitor-queue $r3 $r2 $f4 0.1]set queueMoni3F [$ns monitor-queue $r3 $r4 $f5 0.1]set queueMoni3B [$ns monitor-queue $r4 $r3 $f6 0.1]# Run the Simulation$ns at 0.0 "record"$ns at $SimDuration "finish"puts "Simulating $SimDuration Secs."$ns run

⌨️ 快捷键说明

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