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

📄 echo.tcl

📁 jsim simulator program for MANET
💻 TCL
字号:
# Test the following topology with N pairs of TCP source and sink
#
# Topology:
# N: (# of nodes)/2
#
# TCP flow from  ni -----> n(i+N)
# 

cd [mkdir -q drcl.comp.Component /aodvtest]

set N  3
set N2 6

puts "create channel"

mkdir drcl.inet.mac.Channel channel

mkdir drcl.inet.mac.NodePositionTracker tracker 
#                 maxX    minX  maxY    minY   dX      dY
! tracker setGrid 2000.0  0.0   2000.0  0.0    300.0  300.0

connect channel/.tracker@ -and tracker/.channel@
! channel setCapacity [expr $N+$N]

# create the topology
puts "create topology..."

for {set i 0} {$i < $N2} {incr i} { 
	puts "create node $i"
	set node$i [mkdir drcl.comp.Component n$i]
	
	cd n$i

	mkdir drcl.inet.mac.LL              ll
	mkdir drcl.inet.mac.ARP             arp
	#mkdir drcl.inet.core.queue.FIFO     queue
	mkdir drcl.inet.core.queue.PreemptPriorityQueue     queue 
	
	mkdir drcl.inet.mac.Mac_802_11      mac
	mkdir drcl.inet.mac.WirelessPhy     phy
	mkdir drcl.inet.mac.FreeSpaceModel  propagation 
	mkdir drcl.inet.mac.MobilityModel   mobility
	
        #set two level in Priority queue
        ! queue setLevels 2
        ! queue setClassifier [java::new drcl.inet.mac.MacPktClassifier]
     
	set PD [mkdir drcl.inet.core.PktDispatcher      pktdispatcher]
	set RT [mkdir drcl.inet.core.RT                 rt]
	set ID [mkdir drcl.inet.core.Identity           id]
 
	$PD bind $RT
	$PD bind $ID	

	#enable route_back flag at PktDispatcher

	mkdir echoer2 app1
	connect -c app1/down@ -and pktdispatcher/103@up
	
	# present if using 802.11 power-saving mode
	connect mac/.energy@ -and phy/.energy@ 
	! mac enable_PSM 
	#! mac disable_PSM 
	
	# since 802.11 provides link broken detection, we set the flag in AODV
	# no hello and nbr timer will be used
	

#	puts "connect components in node $i"
	
	connect phy/.mobility@    -and mobility/.query@
	connect phy/.propagation@ -and propagation/.query@
	
	connect mac/down@ -and phy/up@
	connect mac/up@   -and queue/output@
	
	connect ll/.mac@ -and mac/.linklayer@
	connect ll/down@ -and queue/up@ 
	connect ll/.arp@ -and arp/.arp@
	
	connect -c pktdispatcher/0@down -and ll/up@   
	 
	set nid $i
	
	! arp setAddresses  $nid $nid
	! ll  setAddresses  $nid $nid
	! mac setMacAddress $nid
	! phy setNid        $nid
	! mobility setNid   $nid
	! id setDefaultID   $nid

	! queue setMode      "packet"
	! queue setCapacity  40

# disable ARP 
	! arp setBypassARP  true
	
	! mac setRTSThreshold 0
	
	connect mobility/.report@ -and /aodvtest/tracker/.node@

	connect phy/down@ -to /aodvtest/channel/.node@

	! /aodvtest/channel attachPort $i [! phy getPort .channel]

	# design a scenario that all nodes are aligned and require multi-hops routing
	set hop_dist	1
	! mobility setPosition 0.0 [expr $i + $hop_dist] 500.0 0.0
	
#                                         maxX    minX  maxY    minY    dX     dY    dZ
	! mobility setTopologyParameters  2000.0  0.0   2000.0  0.0    300.0  300.0  0.0
    

	! mac  disable_MAC_TRACE_ALL
	
	! mac set_MAC_TRACE_ALL_ENABLED     false
	! mac set_MAC_TRACE_PACKET_ENABLED  false
	! mac set_MAC_TRACE_CW_ENABLED      false
	! mac set_MAC_TRACE_EVENT_ENABLED   false
	! mac set_MAC_TRACE_TIMER_ENABLED   false

	cd ..

}


! n0/app1 send_echo_request 0 1



puts "setup source and sink..."

puts "simulation begins..."	
set sim [attach_simulator .]
$sim stop
# marked by Will
setflag trace true n0/app1/down@
setflag trace true n1/app1/down@
setflag trace true n2/app1/down@
setflag trace true n3/app1/down@
setflag trace true n4/app1/down@

#setflag trace true n0/mac/down@
#setflag debug true n0/ll
#setflag trace true n3/ll/down@
#setflag trace true n2/pktdispatcher/0@down
#setflag trace true n0/pktdispatcher/0@down
#setflag trace true n0/mac
#setflag trace true n1/mac
#setflag trace true n2/mac
#setflag trace true n3/mac
#setflag trace true n0/phy
#setflag trace true n1/phy
#setflag trace true n2/phy
#setflag trace true n3/phy
#setflag trace true channel
#setflag debug true n0/tcp
#setflag debug true n4/tcpsink
#setflag debug true n5/tcpsink
#setflag debug true -at "rreq rrep rerr send hello data route" n*/app1
#setflag debug true -at "rreq rrep rerr " n*/aodv
#setflag trace false n*/mac
#setflag debug true -at "rerr " n*/aodv
#setflag garbagedisplay true .../q*
# ! n0/mac  enable_MAC_TRACE_ALL


# need to start different pairs of TCP connections at different time
# in order to avoid route request collision
script {run n0} -at 0.02 -on $sim

$sim resume 

⌨️ 快捷键说明

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