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

📄 shaolin.tcl

📁 几个无线网络模拟源文件。里面简单实现了无线节点的路由选择过程。
💻 TCL
字号:
### This simulation is an example of combination of wired and wireless 
### topologies.


global opt
set opt(chan)       Channel/WirelessChannel
set opt(err)	    UniformErr
set opt(prop)       Propagation/TwoRayGround
set opt(netif)      Phy/WirelessPhy
set opt(mac)        Mac/802_11
set opt(ifq)        Queue/DropTail/PriQueue
set opt(ll)         LL
set opt(ant)        Antenna/OmniAntenna
set opt(x)             670   
set opt(y)              670   
set opt(ifqlen)         50   
set opt(tr)          shaolin.tr
set opt(namtr)       shaolin.nam
set opt(nn)             1                       
#set opt(adhocRouting)   DSDV
set opt(adhocRouting)   NOAH                      
set opt(cp)             ""                        
set opt(sc)             "../mobility/scene/scen-3-test"   
set opt(stop)           500                           
set num_wired_nodes      1
set num_bs_nodes         1


set ns_   [new Simulator]
$ns_ color 1 Red
$opt(mac) set dataRate_ 11Mb
# set up for hierarchical routing
  $ns_ node-config -addressType hierarchical
  AddrParams set domain_num_ 2          
  lappend cluster_num 1 1                
  AddrParams set cluster_num_ $cluster_num
  lappend eilastlevel 1 2              
  AddrParams set nodes_num_ $eilastlevel 

  set tracefd  [open $opt(tr) w]
  $ns_ trace-all $tracefd
  set namtracefd [open $opt(namtr) w]
  $ns_ namtrace-all $namtracefd

#
# Add Error Model
#
proc UniformErr {} {
        set em [new ErrorModel]
        $em unit packet
	$em set rate_ 0.1
#        $em FECstrength 1
#        $em datapktsize  1000
#        $em cntrlpktsize 80
#	$em ranvar [new RandomVariable/Uniform]
        return $em
}

# Initialize the Errormodel

#ErrorModule set debug_ false

#ErrorModel set enable_ 1
#ErrorModel set markecn_ false
#ErrorModel set bandwidth_ 1Mb
#ErrorModel set rate_ 0.005

#ErrorModel/Trace set good_ 123456789
#ErrorModel/Trace set loss_ 0
#ErrorModel/Periodic set period_ 3.0
#ErrorModel/Periodic set offset_ 0.0
#ErrorModel/Periodic set burstlen_ 0.0
#ErrorModel/MultiState set curperiod_ 0.0
#ErrorModel/MultiState set sttype_ pkt
#ErrorModel/MultiState set texpired_ 0


  set topo   [new Topography]
  $topo load_flatgrid $opt(x) $opt(y)
  # god needs to know the number of all wireless interfaces
  create-god [expr $opt(nn) + $num_bs_nodes]

  #create wired nodes
  set temp {0.0.0 0.1.0}        
  for {set i 0} {$i < $num_wired_nodes} {incr i} {
      set W($i) [$ns_ node [lindex $temp $i]]
  } 
  $ns_ node-config -adhocRouting $opt(adhocRouting) \
                 -llType $opt(ll) \
                 -macType $opt(mac) \
                 -ifqType $opt(ifq) \
                 -ifqLen $opt(ifqlen) \
                 -antType $opt(ant) \
                 -propInstance [new $opt(prop)] \
                 -phyType $opt(netif) \
                 -channel [new $opt(chan)] \
                 -topoInstance $topo \
                 -wiredRouting ON \
                 -agentTrace OFF \
                 -routerTrace OFF \
		 -movementTrace OFF \
                 -macTrace OFF \
		 -IncomingErrProc $opt(err) 
		 #-OutgoingErrProc $opt(err)


  set temp {1.0.0 1.0.1 1.0.2 1.0.3}   
  set BS(0) [$ns_ node [lindex $temp 0]]
  $BS(0) random-motion 0 

  $BS(0) set X_ 1.0
  $BS(0) set Y_ 2.0
  $BS(0) set Z_ 0.0
  
  
  #configure for mobilenodes
  $ns_ node-config -wiredRouting OFF

  for {set j 0} {$j < $opt(nn)} {incr j} {
    set node_($j) [ $ns_ node [lindex $temp \
            [expr $j+1]] ]
    $node_($j) base-station [AddrParams addr2id [$BS(0) node-addr]]
  }

  #create links between wired and BS nodes
   $ns_ duplex-link $W(0) $BS(0) 1Mb 100ms DropTail
 # $ns_ duplex-link $W(0) $BS(0) 50Kb 2ms DropTail
  $ns_ duplex-link-op $W(0) $BS(0) orient up
 
 # setup TCP connections
  set tcp1 [new Agent/TCP/Reno]
  $tcp1 set class_ 0
#  $tcp1 set mtu_ 1500
  $tcp1 set packetSize_ 1000
  
  set trace_ch [open trace.tcp w]
  $tcp1 set trace_all_ 0
  $tcp1 trace cwnd_
  $tcp1 attach $trace_ch

  set sink1 [new Agent/TCPSink]
  $ns_ attach-agent $node_(0) $tcp1
  $ns_ attach-agent $W(0) $sink1
  $ns_ connect $tcp1 $sink1
  $tcp1 set fid_ 1
  set ftp1 [new Application/FTP]
  $ftp1 attach-agent $tcp1
  $ns_ at 1 "$ftp1 start"
 
  for {set i 0} {$i < $opt(nn)} {incr i} {
      $ns_ initial_node_pos $node_($i) 20
   }

  for {set i } {$i < $opt(nn) } {incr i} {
      $ns_ at $opt(stop).0000010 "$node_($i) reset";
  }

 $ns_ at $opt(stop).0000010 "$BS(0) reset";

  $ns_ at $opt(stop).1 "puts \"NS EXITING...\" ; $ns_ halt"
$ns_ at $opt(stop).2 "finish"
  puts "Starting Simulation..."
proc finish {} {
        global ns_ tracefd namtrace
        $ns_ flush-trace
        close $tracefd
        close $namtrace

      # puts "running nam..."
      # exec nam sctp_error_report.nam & 
        exit 0
}
  $ns_ run

⌨️ 快捷键说明

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