📄 skeleton.tcl
字号:
proc pingSend {ping_agnt int} { global ns_ $ping_agnt send-no-echo $ns_ after $int "pingSend $ping_agnt $int"}proc stop {} { global ns_ tracefd $ns_ flush-trace close $tracefd}proc runtest {arg} { global ns_ tracefd set b [llength $arg] if {$b == 1} { set opt(trf_file) [lindex $arg 0] } else { puts stderr "usage: ns script_name filename " exit 1 }# -*- Mode:tcl; tcl-indent-level:8; tab-width:8; indent-tabs-mode:t -*-Agent/TCP set tcpTick_ 0.1# The default for tcpTick_ is being changed to reflect a changing reality.Agent/TCP set rfc2988_ false# The default for rfc2988_ is being changed to true.# FOR UPDATING GLOBAL DEFAULTS:Agent/TCP set precisionReduce_ false ; # default changed on 2006/1/24.Agent/TCP set rtxcur_init_ 6.0 ; # Default changed on 2006/01/21Agent/TCP set updated_rttvar_ false ; # Variable added on 2006/1/21Agent/TCP set minrto_ 1# default changed on 10/14/2004.Agent/TCP set windowInit_ 1# The default is being changed to 2.Agent/TCP set singledup_ 0# The default is being changed to 1Mac/802_11 set bugFix_timer_ true; # default changed 2006/1/30Mac/802_11 set CWMin_ 15Mac/802_11 set CWMax_ 1023Mac/802_11 set SlotTime_ 0.000009 ;# 9us CHECKMac/802_11 set SIFS_ 0.000010 ;# 10us CHECKMac/802_11 set PreambleLength_ 72 ;# CHECK Mac/802_11 set PLCPHeaderLength_ 48 ;# CHECK Mac/802_11 set PLCPDataRate_ 6.0e6 ;# 6MbpsMac/802_11 set basicRate_ 6.0e6 ; ## 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.# # Vivek Mhatre# THOMSON - Paris Research Lab, France# Jan 21st 2007# =====================================================================# Other default settingsLL 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_ 19.953; # 13dBi Omniantenna total EIRP of 36dBmAntenna/OmniAntenna set Gr_ 19.953; # Initialize the SharedMedia interface with parameters to make# it work like an 802.11g OFDM radioPhy/WirelessPhy set CPThresh_ 10.0; # Don't carePhy/WirelessPhy set RXThresh_ 5.0e-13; # noise_ + 3 dB = -123dB for 6Mbps without fadingPhy/WirelessPhy set CSThresh_ 5.0e-13; # noise_ + 3 dB = -123dB equal to RXThresh_Phy/WirelessPhy set Pt_ 0.200; # 23dBmPhy/WirelessPhy set freq_ 2.4e9; # 2.4GHz, 11g, for 11a use 5GHzPhy/WirelessPhy set L_ 1.0; # Don't care# =====================================================================set opt(chan) Channel/WirelessChannelset opt(prop) Propagation/Riceanset opt(netif) Phy/WirelessPhyset opt(mac) Mac/802_11set opt(ifq) Queue/DropTail/PriQueueset opt(ll) LLset opt(ant) Antenna/OmniAntennaset opt(x) 2670; # X dimension of the topographyset opt(y) 2670; # Y dimension of the topographyset opt(ifqlen) 50; # max packet in ifqset opt(lm) "off"; # log movementset opt(noise) -126.0; # Noise power of -96dBm, -126dB when in Wattsset opt(rp) noahMac/802_11 set RTSThreshold_ 0; # RTS-CTS Mac/802_11 set ShortRetryLimit_ 7; # Use default schemeMac/802_11 set LongRetryLimit_ 4; # set opt(tr) temp_rands_grid_RTS_CTS_ARF_4_3.3_150_0.2_10_0_1.tr; #trace fileset opt(nn) 100set ns_ [new Simulator]set topo [new Topography]set tracefd [open $opt(tr) w]$ns_ use-newtrace$ns_ trace-all $tracefd$topo load_flatgrid $opt(x) $opt(y)set god_ [create-god $opt(nn)]$ns_ node-config -adhocRouting NOAH\ -llType $opt(ll) \ -macType $opt(mac) \ -ifqType $opt(ifq) \ -ifqLen $opt(ifqlen) \ -antType $opt(ant) \ -propType $opt(prop) \ -phyType $opt(netif) \ -channel [new $opt(chan)] \ -topoInstance $topo \ -agentTrace ON \ -routerTrace OFF \ -macTrace OFF \ -toraDebug OFF \ -movementTrace OFF# PHY: Combined shadow-fadingif { [string compare $opt(prop) "Propagation/Ricean" ] == 0 } { set prop_inst [$ns_ set propInstance_] $prop_inst pathlossExp_ 3.3; # Shadowing model parameters RAPPAPORT $prop_inst pathlossConst_ 0.000005; # Shadowing model parameters RAPPAPORT $prop_inst fw_rev_corr_ 0.500000; # Shadowing model parameters RAPPAPORT $prop_inst std_db_ 4.0; # --"-- $prop_inst dist0_ 1.0; # --"-- $prop_inst seed_ 1; # --"-- $prop_inst num_nodes_ $opt(nn); # VIVEK Hack for shadowing $prop_inst MaxVelocity 0.2; # Fading parameters $prop_inst RiceanK 10; # Fading parameters $prop_inst LoadRiceFile "rice_table.txt"; # Fading data file}# TOPOLOGY: Node creationfor {set i 0} {$i < $opt(nn) } {incr i} { set node_($i) [$ns_ node] $node_($i) random-motion 0 ;# disable random motion set mac_($i) [$node_($i) getMac 0] $mac_($i) set-noise $opt(noise); # Set radio noise power}# TOPOLOGY: Node locations$node_(0) set X_ 89.5$node_(0) set Y_ 17.2$node_(0) set Z_ 0$node_(1) set X_ 71.4$node_(1) set Y_ 200.5$node_(1) set Z_ 0$node_(2) set X_ 32.0$node_(2) set Y_ 388.1$node_(2) set Z_ 0$node_(3) set X_ 91.6$node_(3) set Y_ 474.4$node_(3) set Z_ 0$node_(4) set X_ 81.5$node_(4) set Y_ 691.3$node_(4) set Z_ 0$node_(5) set X_ 66.0$node_(5) set Y_ 795.5$node_(5) set Z_ 0$node_(6) set X_ 58.2$node_(6) set Y_ 961.4$node_(6) set Z_ 0$node_(7) set X_ 70.9$node_(7) set Y_ 1126.8$node_(7) set Z_ 0$node_(8) set X_ 61.9$node_(8) set Y_ 1277.2$node_(8) set Z_ 0$node_(9) set X_ 64.4$node_(9) set Y_ 1393.1$node_(9) set Z_ 0$node_(10) set X_ 211.7$node_(10) set Y_ 33.8$node_(10) set Z_ 0$node_(11) set X_ 187.1$node_(11) set Y_ 182.8$node_(11) set Z_ 0$node_(12) set X_ 181.2$node_(12) set Y_ 342.7$node_(12) set Z_ 0$node_(13) set X_ 155.4$node_(13) set Y_ 455.1$node_(13) set Z_ 0$node_(14) set X_ 196.8$node_(14) set Y_ 602.9$node_(14) set Z_ 0$node_(15) set X_ 213.2$node_(15) set Y_ 786.3$node_(15) set Z_ 0$node_(16) set X_ 170.1$node_(16) set Y_ 934.6$node_(16) set Z_ 0$node_(17) set X_ 236.8$node_(17) set Y_ 1102.1$node_(17) set Z_ 0$node_(18) set X_ 172.7$node_(18) set Y_ 1278.4$node_(18) set Z_ 0$node_(19) set X_ 226.6$node_(19) set Y_ 1354.2$node_(19) set Z_ 0$node_(20) set X_ 369.7$node_(20) set Y_ 42.5$node_(20) set Z_ 0$node_(21) set X_ 349.8$node_(21) set Y_ 178.0$node_(21) set Z_ 0$node_(22) set X_ 303.9$node_(22) set Y_ 320.7$node_(22) set Z_ 0$node_(23) set X_ 304.8$node_(23) set Y_ 515.8$node_(23) set Z_ 0$node_(24) set X_ 397.9$node_(24) set Y_ 669.2$node_(24) set Z_ 0$node_(25) set X_ 308.9$node_(25) set Y_ 809.6$node_(25) set Z_ 0$node_(26) set X_ 303.0$node_(26) set Y_ 946.0$node_(26) set Z_ 0$node_(27) set X_ 392.4$node_(27) set Y_ 1084.2$node_(27) set Z_ 0$node_(28) set X_ 388.7$node_(28) set Y_ 1297.8$node_(28) set Z_ 0$node_(29) set X_ 339.3$node_(29) set Y_ 1385.5$node_(29) set Z_ 0$node_(30) set X_ 450.7$node_(30) set Y_ 2.6$node_(30) set Z_ 0$node_(31) set X_ 521.8$node_(31) set Y_ 170.8$node_(31) set Z_ 0$node_(32) set X_ 487.2$node_(32) set Y_ 358.5$node_(32) set Z_ 0$node_(33) set X_ 522.9$node_(33) set Y_ 509.9$node_(33) set Z_ 0$node_(34) set X_ 486.9$node_(34) set Y_ 649.5$node_(34) set Z_ 0$node_(35) set X_ 514.1$node_(35) set Y_ 756.7$node_(35) set Z_ 0$node_(36) set X_ 542.0$node_(36) set Y_ 913.9$node_(36) set Z_ 0$node_(37) set X_ 484.6$node_(37) set Y_ 1145.9$node_(37) set Z_ 0$node_(38) set X_ 484.6$node_(38) set Y_ 1239.4$node_(38) set Z_ 0$node_(39) set X_ 511.7$node_(39) set Y_ 1382.5$node_(39) set Z_ 0$node_(40) set X_ 608.7$node_(40) set Y_ 70.6$node_(40) set Z_ 0$node_(41) set X_ 692.1$node_(41) set Y_ 161.7$node_(41) set Z_ 0$node_(42) set X_ 616.6$node_(42) set Y_ 384.5$node_(42) set Z_ 0$node_(43) set X_ 645.9$node_(43) set Y_ 455.2$node_(43) set Z_ 0$node_(44) set X_ 682.3$node_(44) set Y_ 685.2$node_(44) set Z_ 0$node_(45) set X_ 640.7$node_(45) set Y_ 833.0$node_(45) set Z_ 0$node_(46) set X_ 687.8$node_(46) set Y_ 912.4$node_(46) set Z_ 0$node_(47) set X_ 603.8$node_(47) set Y_ 1074.9$node_(47) set Z_ 0$node_(48) set X_ 671.0$node_(48) set Y_ 1276.7$node_(48) set Z_ 0$node_(49) set X_ 684.8$node_(49) set Y_ 1357.9$node_(49) set Z_ 0$node_(50) set X_ 776.2$node_(50) set Y_ 49.0$node_(50) set Z_ 0$node_(51) set X_ 764.6$node_(51) set Y_ 168.2$node_(51) set Z_ 0$node_(52) set X_ 812.9$node_(52) set Y_ 349.2$node_(52) set Z_ 0$node_(53) set X_ 764.1$node_(53) set Y_ 547.5$node_(53) set Z_ 0$node_(54) set X_ 838.7$node_(54) set Y_ 675.8$node_(54) set Z_ 0$node_(55) set X_ 780.0$node_(55) set Y_ 847.3$node_(55) set Z_ 0$node_(56) set X_ 796.4$node_(56) set Y_ 922.1$node_(56) set Z_ 0$node_(57) set X_ 759.0$node_(57) set Y_ 1112.9$node_(57) set Z_ 0$node_(58) set X_ 756.6$node_(58) set Y_ 1254.9$node_(58) set Z_ 0$node_(59) set X_ 818.2$node_(59) set Y_ 1438.9$node_(59) set Z_ 0$node_(60) set X_ 940.1$node_(60) set Y_ 8.8$node_(60) set Z_ 0$node_(61) set X_ 972.0$node_(61) set Y_ 177.8$node_(61) set Z_ 0$node_(62) set X_ 921.3$node_(62) set Y_ 375.7$node_(62) set Z_ 0$node_(63) set X_ 952.8$node_(63) set Y_ 542.3$node_(63) set Z_ 0$node_(64) set X_ 952.4$node_(64) set Y_ 637.6$node_(64) set Z_ 0$node_(65) set X_ 900.2$node_(65) set Y_ 828.6$node_(65) set Z_ 0$node_(66) set X_ 986.5$node_(66) set Y_ 914.8$node_(66) set Z_ 0$node_(67) set X_ 996.8$node_(67) set Y_ 1099.4$node_(67) set Z_ 0$node_(68) set X_ 964.0$node_(68) set Y_ 1210.8$node_(68) set Z_ 0$node_(69) set X_ 946.9$node_(69) set Y_ 1402.7$node_(69) set Z_ 0$node_(70) set X_ 1136.6$node_(70) set Y_ 76.9$node_(70) set Z_ 0$node_(71) set X_ 1100.0$node_(71) set Y_ 183.0$node_(71) set Z_ 0$node_(72) set X_ 1149.0$node_(72) set Y_ 359.0$node_(72) set Z_ 0$node_(73) set X_ 1146.0$node_(73) set Y_ 455.6$node_(73) set Z_ 0$node_(74) set X_ 1063.8$node_(74) set Y_ 664.1$node_(74) set Z_ 0$node_(75) set X_ 1144.5$node_(75) set Y_ 803.9$node_(75) set Z_ 0$node_(76) set X_ 1122.9$node_(76) set Y_ 966.5$node_(76) set Z_ 0$node_(77) set X_ 1131.7$node_(77) set Y_ 1144.2$node_(77) set Z_ 0$node_(78) set X_ 1092.2$node_(78) set Y_ 1234.5$node_(78) set Z_ 0$node_(79) set X_ 1136.5$node_(79) set Y_ 1444.6$node_(79) set Z_ 0$node_(80) set X_ 1272.1$node_(80) set Y_ 86.6$node_(80) set Z_ 0$node_(81) set X_ 1273.2$node_(81) set Y_ 208.6$node_(81) set Z_ 0$node_(82) set X_ 1201.4$node_(82) set Y_ 370.0$node_(82) set Z_ 0$node_(83) set X_ 1208.0$node_(83) set Y_ 515.4$node_(83) set Z_ 0$node_(84) set X_ 1280.8$node_(84) set Y_ 654.9$node_(84) set Z_ 0$node_(85) set X_ 1218.1$node_(85) set Y_ 817.5$node_(85) set Z_ 0$node_(86) set X_ 1231.8$node_(86) set Y_ 968.1$node_(86) set Z_ 0$node_(87) set X_ 1200.5$node_(87) set Y_ 1080.8$node_(87) set Z_ 0$node_(88) set X_ 1227.1$node_(88) set Y_ 1296.5$node_(88) set Z_ 0$node_(89) set X_ 1236.3$node_(89) set Y_ 1390.9$node_(89) set Z_ 0$node_(90) set X_ 1410.6$node_(90) set Y_ 30.8$node_(90) set Z_ 0$node_(91) set X_ 1444.8$node_(91) set Y_ 183.5$node_(91) set Z_ 0$node_(92) set X_ 1447.3$node_(92) set Y_ 376.5$node_(92) set Z_ 0$node_(93) set X_ 1377.7$node_(93) set Y_ 489.5$node_(93) set Z_ 0$node_(94) set X_ 1361.0$node_(94) set Y_ 614.2$node_(94) set Z_ 0$node_(95) set X_ 1384.1$node_(95) set Y_ 833.1$node_(95) set Z_ 0$node_(96) set X_ 1350.8$node_(96) set Y_ 907.4$node_(96) set Z_ 0$node_(97) set X_ 1391.7$node_(97) set Y_ 1052.2$node_(97) set Z_ 0$node_(98) set X_ 1427.4$node_(98) set Y_ 1249.7$node_(98) set Z_ 0$node_(99) set X_ 1417.7$node_(99) set Y_ 1408.2$node_(99) set Z_ 0set opt(stop) 300.0;source $opt(trf_file);# All set #$ns_ at $opt(stop) "stop"$ns_ at $opt(stop).01 "$ns_ halt"#puts "Starting Simulation..."$ns_ run}global argv arg0runtest $argv# Some other useful functions
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -