📄 echo.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 + -