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

📄 test-suite-wireless-gridkeeper.tcl

📁 这个软件的功能是实现多播协议
💻 TCL
字号:
## FOR UPDATING GLOBAL DEFAULTS:Agent/TCP set windowInit_ 1# The default is being changed to 2.Agent/TCP set singledup_ 0# The default is being changed to 1# Copyright (c) 1998 University of Southern California.# All rights reserved.                                            #                                                                # Redistribution and use in source and binary forms are permitted# provided that the above copyright notice and this paragraph are# duplicated in all such forms and that any documentation, advertising# materials, and other materials related to such distribution and use# acknowledge that the software was developed by the University of# Southern California, Information Sciences Institute.  The name of the# University may not be used to endorse or promote products derived from# this software without specific prior written permission.# # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.# # This test suite is for validating wireless lans (CMU extension)# with gridkeeper # To run all tests: test-all-wireless-gridkeeper## To view a list of available test to run with this script:# ns test-suite-wireless-gridkeeper.tcl##Class TestSuiteClass Test/dsdv -superclass TestSuite# wireless model using destination sequence distance vector#Class Test/dsr -superclass TestSuite# wireless model using dynamic source routingproc usage {} {	global argv0	puts stderr "usage: ns $argv0 <tests> "	puts "Valid Tests: dsdv dsr"	exit 1}proc default_options {} {	global opt	set opt(chan)		Channel/WirelessChannel	set opt(prop)		Propagation/TwoRayGround	set opt(netif)		Phy/WirelessPhy	set opt(mac)		Mac/802_11        set opt(ifq)		Queue/DropTail/PriQueue	set opt(ll)		LL	set opt(ant)            Antenna/OmniAntenna	set opt(x)		670 ;# X dimension of the topography	set opt(y)		670;# Y dimension of the topography	set opt(cp)		"../mobility/scene/cbr-50-20-4-512" ;# connection pattern file	set opt(sc)		"../mobility/scene/scen-670x670-50-600-20-0" ;# scenario file	set opt(ifqlen)		50	      ;# max packet in ifq	set opt(nn)		50	      ;# number of nodes	set opt(seed)		0.0	set opt(stop)		500.0	      ;# simulation time	set opt(tr)		temp.rands    ;# trace file	set opt(lm)             "off"          ;# log movement        set opt(radius)         150            ;# node comm. range        set opt(nam)            gkeeper.nam    ;# nam trace for node position}# =====================================================================# Other default settingsset AgentTrace			ONset RouterTrace			OFFset MacTrace			OFFLL set mindelay_		50usLL set delay_			25usLL set bandwidth_		0	;# not usedAgent/Null set sport_		0Agent/Null set dport_		0Agent/CBR set sport_		0Agent/CBR set dport_		0Agent/TCPSink set sport_	0Agent/TCPSink set dport_	0Agent/TCP set sport_		0Agent/TCP set dport_		0Agent/TCP set packetSize_	1460Queue/DropTail/PriQueue set Prefer_Routing_Protocols    1# unity gain, omni-directional antennas# set up the antennas to be centered in the node and 1.5 meters above itAntenna/OmniAntenna set X_ 0Antenna/OmniAntenna set Y_ 0Antenna/OmniAntenna set Z_ 1.5Antenna/OmniAntenna set Gt_ 1.0Antenna/OmniAntenna set Gr_ 1.0# Initialize the SharedMedia interface with parameters to make# it work like the 914MHz Lucent WaveLAN DSSS radio interfacePhy/WirelessPhy set CPThresh_ 10.0Phy/WirelessPhy set CSThresh_ 1.559e-11Phy/WirelessPhy set RXThresh_ 3.652e-10Phy/WirelessPhy set Rb_ 2*1e6Phy/WirelessPhy set Pt_ 0.2818Phy/WirelessPhy set freq_ 914e+6 Phy/WirelessPhy set L_ 1.0# =====================================================================TestSuite instproc init {} {	global opt tracefd topo chan prop 	global node_ god_ gkeeper	$self instvar ns_ testName_	set ns_         [new Simulator]	set chan	[new $opt(chan)]	set prop	[new $opt(prop)]	set topo	[new Topography]	set tracefd	[open $opt(tr) w]	set opt(rp) $testName_	$topo load_flatgrid $opt(x) $opt(y)	$prop topography $topo	#	# Create God	#	$self create-god $opt(nn)		#	# log the mobile nodes movements if desired	#	if { $opt(lm) == "on" } {		$self log-movement	}	source ../mobility/$testName_.tcl	for {set i 0} {$i < $opt(nn) } {incr i} {		$testName_-create-mobile-node $i	}	puts "Loading connection pattern..."	source $opt(cp)		#	# Tell all the nodes when the simulation ends	#	for {set i 0} {$i < $opt(nn) } {incr i} {		$ns_ at $opt(stop).000000001 "$node_($i) reset";	}	$ns_ at $opt(stop).000000001 "puts \"NS EXITING...\" ;" 	#$ns_ halt"	$ns_ at $opt(stop).1 "$self finish"	puts "Loading scenario file..."	source $opt(sc)	puts "Load complete..."        #enable node trace in nam        	set nf [open $opt(nam) w]	$ns_ namtrace-all-wireless $nf $opt(x) $opt(y)	        for {set i 0} {$i < $opt(nn)} {incr i} {             $node_($i) namattach $nf             # 20 defines the node size in nam, 	     # must adjust it according to your scenario             $ns_ initial_node_pos $node_($i) 20        } 	#       	# Create GridKeeper: OPTIONAL	#	$self create_gridkeeper	puts $tracefd "M 0.0 nn:$opt(nn) x:$opt(x) y:$opt(y) rp:$opt(rp)"	puts $tracefd "M 0.0 sc:$opt(sc) cp:$opt(cp) seed:$opt(seed)"	puts $tracefd "M 0.0 prop:$opt(prop) ant:$opt(ant)"}TestSuite instproc finish {} {	$self instvar ns_	global quiet	$ns_ flush-trace        #if { !$quiet } {        #        puts "running nam..."        #        exec nam temp.rands.nam &        #}	puts "finishing.."	exit 0}Test/dsdv instproc init {} {    $self instvar ns_ testName_    set testName_ dsdv    $self next}Test/dsdv instproc run {} {    $self instvar ns_    puts "Starting Simulation..."    $ns_ run}#Test/dsr instproc init {} {	#$self instvar ns_ testName_ 	#set testName_ dsr	#$self next #}#Test/dsr instproc run {} {	#$self instvar ns_ 	#puts "Starting Simulation..."	#$ns_ run	#}proc cmu-trace { ttype atype node } {	global ns tracefd            set ns [Simulator instance]	if { $tracefd == "" } {		return ""	}	set T [new CMUTrace/$ttype $atype]	$T target [$ns set nullAgent_]	$T attach $tracefd        $T set src_ [$node id]        $T node $node	return $T}TestSuite instproc create-god { nodes } {	global tracefd god_	$self instvar ns_	set god_ [new God]	$god_ num_nodes $nodes}TestSuite instproc create_gridkeeper { } {        global gkeeper opt node_                        set gkeeper [new GridKeeper]                #initialize the gridkeeper                        $gkeeper dimension $opt(x) $opt(y)         #        # add mobile node into the gridkeeper, must be added after        # scenario file        #               for {set i 0} {$i < $opt(nn) } {incr i} {	    $gkeeper addnode $node_($i)        	    $node_($i) radius $opt(radius)        }               	#dump grid info	#$gkeeper dump	}TestSuite instproc log-movement {} {	global ns	$self instvar logtimer_ ns_	set ns $ns_	source ../mobility/timer.tcl	Class LogTimer -superclass Timer	LogTimer instproc timeout {} {		global opt node_;		for {set i 0} {$i < $opt(nn)} {incr i} {			$node_($i) log-movement		}		$self sched 0.1	}	set logtimer_ [new LogTimer]	$logtimer_ sched 0.1}proc runtest {arg} {	global quiet	set quiet 0	set b [llength $arg]	if {$b == 1} {		set test $arg	} elseif {$b == 2} {		set test [lindex $arg 0]		if {[lindex $arg 1] == "QUIET"} {			set quiet 1		}	} else {		usage	}	set t [new Test/$test]	$t run}global argv arg0default_optionsruntest $argv

⌨️ 快捷键说明

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