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

📄 example1_twonodes_static_psmoff.tcl

📁 AODV protocol with two nodes (example)
💻 TCL
字号:
# two node scenario
# 
# n0 ----- n1


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

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

# create node 0
puts "create node 0"
set node0 [mkdir drcl.comp.Component n0]
cd n0
mkdir drcl.inet.mac.LL              ll
mkdir drcl.inet.mac.ARP             arp
mkdir drcl.inet.core.queue.FIFO     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
mkdir drcl.inet.protocol.aodv.AODV  aodv
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
! pktdispatcher setRouteBackEnabled true

# connect components in node 0
puts "connect components in node 0"
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@   
connect -c aodv/down@ -and pktdispatcher/103@up
connect aodv/.service_rt@ -and rt/.service_rt@
connect aodv/.service_id@ -and id/.service_id@
connect aodv/.ucastquery@ -and pktdispatcher/.ucastquery@
connect mac/.linkbroken@ -and aodv/.linkbroken@

! arp setAddresses  0 0
! ll  setAddresses  0 0
! mac setMacAddress 0
! phy setNid        0
! mobility setNid   0
! id setDefaultID   0

#                                 maxX   maxY  minX   minY    dX    dY    dZ
! mobility setTopologyParameters 100.0  100.0   0.0    0.0  50.0  50.0   0.0
! mobility setPosition 0.0 40.0 0.0 0.0

! aodv enable_link_detection

! mac disable_PSM
! arp setBypassARP   true

! queue setMode      "packet"
! queue setCapacity  40

cd ..

# create node 1
puts "create node 1"
set node1 [mkdir drcl.comp.Component n1]
cd n1

mkdir drcl.inet.mac.LL              ll
mkdir drcl.inet.mac.ARP             arp
mkdir drcl.inet.core.queue.FIFO     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
mkdir drcl.inet.protocol.aodv.AODV  aodv
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
! pktdispatcher setRouteBackEnabled true

puts "connect components in node 1"
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@
connect -c aodv/down@ -and pktdispatcher/103@up
connect aodv/.service_rt@ -and rt/.service_rt@
connect aodv/.service_id@ -and id/.service_id@
connect aodv/.ucastquery@ -and pktdispatcher/.ucastquery@
connect mac/.linkbroken@ -and aodv/.linkbroken@

! aodv enable_link_detection

! arp setAddresses  1 1
! ll  setAddresses  1 1
! phy setNid        1
! mac setMacAddress 1
! mobility setNid   1
! id setDefaultID   1

#                                 maxX   maxY  minX   minY    dX    dY    dZ
! mobility setTopologyParameters 100.0  100.0   0.0    0.0  50.0  50.0   0.0
! mobility setPosition 0.0 0.0 40.0 0.0

! mac disable_PSM
! arp setBypassARP   true

! aodv enable_link_detection

! queue setMode      "packet"
! queue setCapacity  40

cd ..

puts "create channel"

mkdir drcl.inet.mac.Channel channel
mkdir drcl.inet.mac.NodePositionTracker tracker 
#! tracker setGrid maxX  minX  maxY  minY    dX   dY 
! tracker setGrid 100.0   0.0 100.0   0.0  50.0 50.0

connect channel/.tracker@ -and tracker/.channel@
connect /example/n0/mobility/.report@ -and /example/tracker/.node@
connect /example/n1/mobility/.report@ -and /example/tracker/.node@

! channel setCapacity 2

connect n0/phy/down@ -to channel/.node@
! channel attachPort 0 [! /example/n0/phy getPort .channel]

connect n1/phy/down@ -to channel/.node@
! channel attachPort 1 [! /example/n1/phy getPort .channel]

puts "setup source and sink..."

mkdir drcl.inet.transport.TCP n0/tcp
connect -c n0/tcp/down@ -and n0/pktdispatcher/17@up
! n0/tcp setMSS 512;                       # bytes

mkdir drcl.inet.transport.TCPSink n1/tcpsink
connect -c n1/tcpsink/down@ -and n1/pktdispatcher/17@up

! n0/tcp setPeer 1

set src_ [mkdir drcl.inet.application.BulkSource n0/source]
$src_ setDataUnit 512
connect -c $src_/down@ -and n0/tcp/up@

set sink_ [mkdir drcl.inet.application.BulkSink n1/sink]
connect -c $sink_/down@ -and n1/tcpsink/up@

puts "Set up TrafficMonitor & Plotter..."
set plot_ [mkdir drcl.comp.tool.Plotter .plot]
set tm_ [mkdir drcl.net.tool.TrafficMonitor .tm]
connect -c n1/pktdispatcher/17@up -to $tm_/in@; # corrected 2005/08/08
connect -c $tm_/bytecount@ -to $plot_/0@0
connect -c n0/tcp/cwnd@ -to $plot_/0@1
connect -c n1/tcpsink/seqno@ -to $plot_/0@2
connect -c n0/tcp/srtt@ -to $plot_/0@3

connect n0/mac/.mactrace@ -to [! /.term/tcl0/result@] 
connect n1/mac/.mactrace@ -to [! /.term/tcl0/result@] 

# flags
#setflag garbagedisplay true .../q*

#setflag trace true n0/tcp
#setflag trace true n1/tcpsink
#setflag trace true n0/mac/down@
#setflag trace true n1/mac/down@
#setflag trace true n0/ll/down@
#setflag trace true n1/ll/down@
#setflag trace true n0/pktdispatcher/0@down
#setflag trace true n1/pktdispatcher/0@down
#setflag trace true n0/mac
#setflag trace true n1/mac
#setflag trace true n0/phy
#setflag trace true n1/phy
#setflag trace true channel

#! n0/mac set_MAC_TRACE_ALL_ENABLED     false
#! n0/mac set_MAC_TRACE_PACKET_ENABLED  false
#! n0/mac set_MAC_TRACE_CW_ENABLED      false
#! n0/mac set_MAC_TRACE_EVENT_ENABLED   false
#! n0/mac set_MAC_TRACE_TIMER_ENABLED   false

#! n1/mac set_MAC_TRACE_ALL_ENABLED     false
#! n1/mac set_MAC_TRACE_PACKET_ENABLED  false
#! n1/mac set_MAC_TRACE_CW_ENABLED      false
#! n1/mac set_MAC_TRACE_EVENT_ENABLED   false
#! n1/mac set_MAC_TRACE_TIMER_ENABLED   false

#setflag debug false -at "rreq rrep rerr send hello data route" n0/aodv
#setflag debug false -at "rreq rrep rerr send hello data route" n0/aodv

puts "simulation begins..."	
set sim [attach_simulator .]

run .
#script {run n0} -at 0.4 -on $sim
#script {run n1} -at 0.5 -on $sim

$sim stopAt 100

⌨️ 快捷键说明

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