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

📄 parking_lot_topo.tcl

📁 ns-2的文件包。多多下载
💻 TCL
📖 第 1 页 / 共 2 页
字号:
	    foreach queue "[set q$i] [set rq$i]" {		set-red-params $queue $qMinTh $qMaxTh $qWeight $qLinterm	    }	}	"Vq" {	    foreach link "[set l$i] [set rl$i]" {		set queue                   [$link queue]		$queue set ecnlim_          0.98		$queue set limit_           $qSize		$queue link_capacity_bits   [[$link set link_] set bandwidth_];		$queue set queue_in_bytes_  1		$queue set buflim_          1000		$queue set alpha_           0.15	    }	}	"REM" {	    foreach link "[set l$i] [set rl$i]" {		set queue                [$link queue]		$queue set reminw_       0.01		$queue set remgamma_     0.001 		$queue set remphi_       1.001 		set cap_in_bits          [[$link set link_] set bandwidth_]		$queue set remupdtime_   [expr 0.01 / ($cap_in_bits/8000000.0)] 		$queue set rempktsize_   1000		$queue set rempbo_       [expr $qSize * 0.33]	    }	}	    "DropTail" { }	    "XCP" {		foreach link "[set l$i] [set rl$i]" {		    set queue                   [$link queue]		    #set-red-params $queue $qMinTh $qMaxTh $qWeight $qLinterm			$queue set-link-capacity [[$link set link_] set bandwidth_];		}	}	    "CSFQ" {		    foreach link "[set l$i]" {		set queue   [$link queue]		set ff      0		while {$ff < $nAllHopsTCPs} {		    # Second argument is the flow's wait		    $queue init-flow $ff 1.0 [expr 1000 * $delay * 2 * 4]		    incr ff		}		set j [expr (1000 * $i) + 1000 ]; 		while { $j < [expr [lindex $nTCPsPerHop_list $i] + ($i + 1) * 1000]  } {		    $queue init-flow $j 1.0 [expr 1000 * $delay * 2 * 4]		    incr j		}		set kLink [expr 1000 * $delay * 2 * 4]		set queueSize   [expr  $qSize * 1000 * 8]		set qsizeThresh [expr  $queueSize * 0.4]		    $queue init-link 1 $kLink $queueSize $qsizeThresh [[$link set link_] set bandwidth_] 	    }		foreach link "[set rl$i]" {		set queue   [$link queue]		set ff      $nAllHopsTCPs		while {$ff < [expr $rTCPs + $nAllHopsTCPs ] } {		    # Second argument is the flow's wait		    $queue init-flow $ff 1.0 [expr 1000 * $delay * 2 * 4]		    incr ff		}		set kLink [expr 1000 * $delay * 2 * 4]		set queueSize   [expr  $qSize * 1000 * 8]		set qsizeThresh [expr  $queueSize * 0.7]		$queue init-link 1 $kLink $queueSize $qsizeThresh [[$link set link_] set bandwidth_] 		}	}	    default {}    }	incr i}# Create sources: 1) Long TCPsset i 0while { $i < $nAllHopsTCPs  } {	set StartTime     [expr [$rtg integer 1000] * 0.001 * (0.01 * $numHops * $delay) + $SimStartTime] 	if {$qType == "XCP" } {		set rcvr_TCP      [new Agent/XCPSink]		$ns attach-agent  [set n$numHops] $rcvr_TCP		set src$i         [new GeneralSender $i $n0 $rcvr_TCP "$StartTime TCP/Reno/XCP"]		puts "starttime=$StartTime"	} else {		set rcvr_TCP      [new Agent/TCPSink]		$ns attach-agent  [set n$numHops] $rcvr_TCP		set src$i         [new GeneralSender $i $n0 $rcvr_TCP "$StartTime TCP/Reno"]    }    [[set src$i] set tcp_]  set  window_     [expr $qSize * 10]    incr i}# 2) jth Hop TCPs; start at j*1000set i 0;while {$i < $numHops} {    set j [expr (1000 * $i) + 1000 ];     while { $j < [expr [lindex $nTCPsPerHop_list $i] + ($i + 1) * 1000]  } {	set StartTime     [expr [lindex $StartTime_list $i]+[$rtg integer 1000] * 0.001 * (0.01 * $numHops * $delay)+ $SimStartTime] 	if {$qType == "XCP" } {	    set rcvr_TCP      [new Agent/XCPSink]		$ns attach-agent  [set  n[expr $i + 1]] $rcvr_TCP	    set src$j         [new GeneralSender $j [set n$i] $rcvr_TCP "$StartTime TCP/Reno/XCP"]		puts "starttime=$StartTime"	} else {	    set rcvr_TCP      [new Agent/TCPSink]	    $ns attach-agent  [set  n[expr $i + 1]] $rcvr_TCP	    set src$j         [new GeneralSender $j [set n$i] $rcvr_TCP "$StartTime TCP/Reno"]	}	[[set src$j] set tcp_]  set  window_     [expr $qSize * 10]	incr j    }    incr i}# 3) reverse TCP; ids follow directly allhops TCPsset i 0while {$i < $numHops} {    set l 0    while { $l < $rTCPs} {	set s [expr $l + $nAllHopsTCPs + ( $i * $rTCPs ) ] 	#puts "s=$s  rTCPs=$rTCPs  l=$l  All=$nAllHopsTCPs"	set StartTime     [expr [$rtg integer 1000] * 0.001 * (0.01 * $numHops * $delay)+ 0.0] 	if {$qType == "XCP" } {	    set rcvr_TCP      [new Agent/XCPSink]	    $ns attach-agent  [set  n$i] $rcvr_TCP		set src$s         [new GeneralSender $s [set  n[expr $i + 1]] $rcvr_TCP "$StartTime TCP/Reno/XCP"]		puts "starttime=$StartTime"	} else {	    set rcvr_TCP      [new Agent/TCPSink]	    $ns attach-agent  [set  n$i]  $rcvr_TCP	    set src$s         [new GeneralSender $s [set  n[expr $i + 1]] $rcvr_TCP "$StartTime TCP/Reno"]	}	[[set src$s] set tcp_]  set  window_     [expr $qSize * 10]	incr l    }    incr i}#---------- Trace --------------------## General#set f_all [open TR/out.tr w]#$ns trace-queue $n0 $n1 $f_all#$ns trace-queue $n1 $n2 $f_all#$ns trace-queue $n2 $n3 $f_all#$ns trace-queue $n3 $n4 $f_all#$ns trace-queue $n4 $n5 $f_all#$ns trace-queue $n5 $n6 $f_all#$ns trace-queue $n6 $n7 $f_all#$ns trace-queue $n7 $n8 $f_all#$ns trace-queue $n8 $n9 $f_all# Trace sourcesforeach i $tracedXCPs {	[set src$i] trace-xcp "cwnd seqno"}# Trace Queuesset i 0;while { $i < $numHops } {    set qtype [lindex $qType_list $i]    foreach queue_name "q$i rq$i" {	set queue [set "$queue_name"]	switch $qtype {	    "DropTail" {}	    "Vq" {}	    "REM" {}	    "CSFQ" {}	    #"RED/XCP" {}	    default { #RED and XCP		global "ft_red_$queue_name"		    set "ft_red_$queue_name" [open TR/ft_red_[set queue_name].tr w]		$queue attach       [set ft_red_$queue_name]		#$queue trace curq_		#$queue trace ave_		#$queue trace prob1_	    }	}    }        #The following is done in the Queue Class    foreach queue_name "q$i" {	puts "attaching a file to $queue_name $qType"	set queue [set "$queue_name"]	$queue queue-sample-everyrtt $qEffective_RTT	    #global ft_trace_$queue_name	    #set    ft_trace_$queue_name [open TR/ft_trace_[set queue_name].tr w]	    #$queue queue-attach   [set ft_trace_$queue_name]	    #$queue queue-trace-drops  	    #$queue queue-trace-curq    }	### Trace Utilization	#[set q$i] queue-set-link-capacity [[[$ns link [set n$i] [set n[expr $i +1]]] set link_] set bandwidth_]	incr i}#---------------- Run the simulation ------------------------#set files "f_all ";set i 0;while { $i < $numHops } {    set files "$files ft_trace_q$i ft_trace_rq$i ft_q$i ft_rq$i  ft_red_q$i ft_red_rq$i "    incr i}foreach i $tracedXCPs {    set file [set src$i tcpTrace_]    set files "$files $file"}proc finish {} {    global ns     if {[info exists f]} {	$ns flush-trace	close $f    }       $ns halt}$ns at $SimStopTime "finish"$ns runflush-files $files#----------------- Post Processing---------------------------#if { $PostProcess } {    #--- Traced Flows    set TraceName "Flows --$qType-QS$qSize"    plot-xcp      $TraceName  $tracedXCPs  0.0  "cwnd_"    plot-xcp      $TraceName  $tracedXCPs  0.0  "t_seqno_"}if { $PostProcess } {        #---- Queue 1 - Data    set i 0;    foreach i $tracedQueues {	puts "Q$i"	set TraceName "q$i--QS$qSize-Max$qMaxTh-Min$qMinTh"	switch $qType {	    "DropTail" {}	    "Vq" {		#plot-function-of-time $TraceName  0   TR/ft_trace_q$i.tr "vq_len"		plot-function-of-time $TraceName  0   TR/ft_trace_q$i.tr "virtual_cap"	    }	    "XCP" {		plot-function-of-time $TraceName  0   TR/ft_trace_q$i.tr "input_traffic_bytes_ BTA_ BTF_"		plot-function-of-time $TraceName  0   TR/ft_trace_q$i.tr "BTA_not_allocated BTF_not_reclaimed"		plot-red-queue1    $TraceName     0   TR/ft_red_q$i.tr		plot-function-of-time $TraceName  0   TR/ft_trace_q$i.tr "Queue_bytes_"  		plot-function-of-time $TraceName  0   TR/ft_trace_q$i.tr "avg_rtt_ Tq_"  	    }	    "RED" {		plot-red-queue1       $TraceName  0  TR/ft_red_q$i.tr	    }	    "CSFQ" {		plot-function-of-time $TraceName  0   TR/ft_trace_q$i.tr "rateAlpha_ rateTotal_"		plot-function-of-time $TraceName  0   TR/ft_trace_q$i.tr "congested_"		plot-function-of-time $TraceName  0   TR/ft_trace_q$i.tr "alpha_"		plot-function-of-time $TraceName  0   TR/ft_trace_q$i.tr "qsizeCrt_"		plot-function-of-time $TraceName  0   TR/ft_trace_q$i.tr "label"	    }	    default {}	}	queue-plot            $TraceName  0  [set ft_trace_q$i]  TR/ft_trace_q$i.tr	plot-function-of-time $TraceName  0   TR/ft_trace_q$i.tr "u"	incr i    }}set i 0 while { $i < $numHops} {    puts " q$i drops = [[set q$i]  queue-read-drops]"    puts " r$i drops = [[set rq$i] queue-read-drops]"    incr i}

⌨️ 快捷键说明

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