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

📄 asym.tcl

📁 ns gpsr路由协议 在ns2平台下实现的 对大家很有好处
💻 TCL
字号:
# Scripts for bandwidth-asymmetry simulations.  Uses util.tcl (must be in# this directory).source util.tcl# set up simulationset ns [new Simulator]set n0 [$ns node]set n1 [$ns node]set n2 [$ns node]set n3 [$ns node]set f [open out.tr w]$ns trace-all $f#$ns use-scheduler Listset tcptrace [open tcp.tr w] set sinktrace [open sink.tr w]set redtrace [open red.tr w]set qtrace [open q.tr w]set graph 0set connGraphFlag("") 0set maxdelack 25set maxburst 0set upwin 0set downwin 100set tcpTick 0.1set ackSize 6set rbw 28.8Kbset rqsize 10set qsize 10set rgw "DropTail"set nonfifo 1set acksfirst falseset filteracks falseset reconsacks falseset replace_head falseset q_wt 0.1set rand_drop falseset prio_drop falseset randomize 1set startTime 0set midtime 0set stop 50Agent/AckReconsClass set deltaAckThresh_ 2Agent/AckReconsClass set ackInterArr_ 0.010Agent/AckReconsClass set ackSpacing_ 0.010Agent/AckReconsClass set delack_ 2Agent/AckReconsClass set adaptive_ 1Agent/AckReconsClass set alpha_ 0.25Agent/AckReconsClass set lastTime_ 0Agent/AckReconsClass set lastAck_ 0Agent/AckReconsClass set lastRealTime_ 0Agent/AckReconsClass set lastRealAck_ 0Queue set limit_ $qsize proc printUsage {} {	puts "Usage: "	exit}proc finish {ns traceall tcptrace graph connGraphFlag midtime} { #	upvar $connGraphFlag graphFlag 	 	$ns flush-trace	close $traceall	flush $tcptrace	close $tcptrace#	exec perl ~/src/ns-2/bin/trsplit -f -pt tcp out.tr#	exec perl ~/src/ns-2/bin/trsplit -f -pt ack out.tr	exit 0}# read user options and act accordinglyset count 0while {$count < $argc} {	set arg [lindex $argv $count]	incr count 2	switch -exact '$arg' {		'-graph' {			set graph 1			incr count -1			continue		}		'-r' {			set randomize 1			incr count -1			continue		}		'-mda' {			set maxdelack [lindex $argv [expr $count-1]]			continue		}		'-acksz' {			set ackSize [lindex $argv [expr $count-1]]			continue		}		'-mb' {			set maxburst [lindex $argv [expr $count-1]]			continue		}		'-win' {			set downwin [lindex $argv [expr $count-1]]			continue		}		'-upwin' {			set upwin [lindex $argv [expr $count-1]]			continue		}		'-tk' {			set tcpTick [lindex $argv [expr $count-1]]			continue		}		'-rbw' {			 set rbw [lindex $argv [expr $count-1]]			continue		}		'-rq' {			set rqsize [lindex $argv [expr $count-1]]			continue		}		'-q' {			set qsize [lindex $argv [expr $count-1]]			Queue set limit_ $qsize 			continue		}		'-nonfifo' {			set nonfifo 1			incr count -1			continue		}		'-noecn' {			Agent/TCP set disable_ecn_ 1			incr count -1			continue		}		'-red' {			set rgw "RED"			incr count -1			continue		}		'-rd' {			set rand_drop true			incr count -1			continue		}		'-pd' {			set prio_drop true			incr count -1			continue		}		'-g' {			set g [lindex $argv [expr $count-1]]			Agent/TCP/Asym set g_ g			continue		}		'-qwt' {			set q_wt [lindex $argv [expr $count-1]]			continue		}		'-acksfirst' {			set acksfirst true			incr count -1			continue		}		'-afil' {			set filteracks true			incr count -1			continue		}		'-recons' {			set reconsacks true			incr count -1			continue		}		'-noadap' {			Agent/AckReconsClass set adaptive_ 0			incr count -1			continue		}		'-replace_head' {			set replace_head true			incr count -1			continue		}		'-mid' {			set midtime [lindex $argv [expr $count-1]]			continue		}		'-stop' {			set stop [lindex $argv [expr $count-1]]			continue		}		default {			incr count -2		} 	}	switch -exact '$arg' {		'-dn' {			set direction "down"		}		'-up' {			set direction "up"		}		'-2way' {			set direction "2way"		}		default {			puts "arg $arg"			printUsage			exit		}	}	incr count 1	set arg [lindex $argv $count]	switch -exact '$arg' {		'-asym' {			set type "asym"		}		'-asymsrc' {			set type "asymsrc"		}		'-reno' {			set type "reno"		}		'-reno2' {			set type "reno2"		}		default {			printUsage			puts "arg $arg"			exit		}	}	incr count 1	set arg [lindex $argv $count]	set startTime $arg	incr count 1		set connGraph 0 	set arg [lindex $argv $count]	if { $arg == "-graph" } {		set connGraph 1		incr count 1	}	if { $direction == "down" } {		set src $n0		set dst $n3	} elseif { $direction == "up" } {		set src $n3		set dst $n0	} elseif { $direction == "2way" } {		puts "2-way"		set src $n0		set dst $n3		set src2 $n3		set dst2 $n0	}		if { $randomize } { 		ns-random 0	}	for { set i 0 } { $i < 2 } { incr i } {		if { $type == "asym" } {			set tcp($i) [createTcpSource "TCP/Reno/Asym" $maxburst $tcpTick $downwin]			set rgw "RED"			$tcp($i) set damp_ 0			$tcp($i) set g_ 0.125			set sink($i) [createTcpSink "TCPSink/Asym" $sinktrace $ackSize $maxdelack]		} elseif { $type == "asymsrc" } {			 set tcp($i) [createTcpSource "TCP/Reno/Asym" $maxburst $tcpTick $downwin]			 $tcp($i) set damp_ 0			 $tcp($i) set g_ 0.125			 set sink($i) [createTcpSink "TCPSink" $sinktrace $ackSize]		 } elseif { $type == "reno" } {			 set tcp($i) [createTcpSource "TCP/Reno" $maxburst $tcpTick $downwin]			 set sink($i) [createTcpSink "TCPSink" $sinktrace $ackSize]		 } elseif { $type == "reno2" } {			 set tcp($i) [createTcpSource "TCP/Reno" 0 $tcpTick $downwin]			 set sink($i) [createTcpSink "TCPSink/DelAck" $sinktrace $ackSize]		 }	 }	 Agent/AckReconsClass set size_ [$tcp(0) set packetSize_]	 if { $direction == "up" && $upwin != 0 } {		 $tcp(0) set window_ $upwin	 }	 if { $direction == "2way" } {		 set ftp(1) [createFtp $ns $src2 $tcp(1) $dst2 $sink(1)]	 }	 set ftp(0) [createFtp $ns $src $tcp(0) $dst $sink(0)]	 setupTcpTracing $tcp(0) $tcptrace #	setupGraphing $tcp $connGraph connGraphFlag #	puts "ftp $ftp ftp2 $ftp2"	 $ns at $startTime "$ftp(0) start" 	 set offset [uniform 5 10]	 puts "rev conn at $offset"	 set s2 [expr $startTime + $offset]	 if { $direction == "2way"} {		 $ns at $s2 "$ftp(1) start" 	 } #	puts "starting ftp2 at $s2" }if { $nonfifo && $rgw == "RED" } {	set rgw "RED/Semantic"}# topology##      10Mb, 1ms       10Mb, 5ms       10Mb, 1ms#  n0 ------------ n1 ------------ n2 ------------ n3#                     28.8Kb, 50ms #$ns duplex-link $n0 $n1 10Mb 1ms DropTail$ns simplex-link $n1 $n2 10Mb 5ms DropTail$ns simplex-link $n2 $n1 $rbw 50ms $rgw$ns duplex-link $n2 $n3 10Mb 1ms DropTail# configure reverse bottleneck queueputs "nonfifo $nonfifo rqsize $rqsize fqsize $qsize"configQueue $ns $n2 $n1 $rgw $qtrace $redtrace $rqsize $nonfifo $acksfirst $filteracks $replace_head $prio_drop $rand_dropconfigQueue $ns $n1 $n0 DropTail 0 0 20 $nonfifo false false false false false $reconsacks# end simulation$ns at $stop "finish $ns $f $tcptrace $graph connGraphFlag $midtime"$ns run

⌨️ 快捷键说明

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