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