2007.08.31

趕緊來把這兩個禮拜報告的內容弄上來吧,因為忙碌都沒時間整理起來.....囧。

眼看著有線似乎就只能玩這樣了,所以接著老師就要我們弄無線的東西。第一次對於無線報告,我跟峰峰是先利用 NSG2 寫出了一個簡單的模擬程式,接著兩個人一起盡可能的對它所下的種種無線的指令去做分析,畢竟只要有搞懂指令,一切就會好辦許多了。

備註︰NSG2 在 "我的連結" 那邊有,是一個好用的劇本產生器 good !!

程式碼如下:

# This script is created by NSG2 beta1
# <http://wushoupong.googlepages.com/nsg>

#===================================
#     Simulation parameters setup
#===================================
  set val(chan)  Channel/WirelessChannel      ;# channel type
  set val(prop)   Propagation/TwoRayGround   ;# radio-propagation model
  set val(netif)   Phy/WirelessPhy                      ;# network interface type
  set val(mac)    Mac/802_11                             ;# MAC type
  set val(ifq)       Queue/DropTail/PriQueue       ;# interface queue type
  set val(ll)         LL                                           ;# link layer type
  set val(ant)      Antenna/OmniAntenna             ;# antenna model
  set val(ifqlen)  15                                            ;# max packet in ifq
  set val(nn)       3                                             ;# number of mobilenodes
  set val(rp)        DSDV                                      ;# routing protocol
  set val(x)          777                                         ;# X dimension of topography
  set val(y)          455                                          ;# Y dimension of topography
  set val(stop)    10.0                                         ;# time of simulation end

#===================================
#        Initialization       
#===================================
# Create a ns simulator
  set ns [new Simulator]

# etup topography object
  set topo [new Topography]
  $topo load_flatgrid $val(x) $val(y)
  create-god $val(nn)

# Open the NS trace file
  set tracefile [open out.tr w]
  $ns trace-all $tracefile

# Open the NAM trace file
  set namfile [open out.nam w]
  $ns namtrace-all $namfile
  $ns namtrace-all-wireless $namfile $val(x) $val(y)
  set chan [new $val(chan)];#Create wireless channel

#===================================
#     Mobile node parameter setup
#===================================
  $ns node-config \
      -adhocRouting  $val(rp) \         ;# DSDV 路由協定
      -llType               $val(ll) \         ;# Link Layer Type
      -macType          $val(mac) \     ;# Mac Layer
      -ifqType             $val(ifq) \       ;# 佇列型態
      -ifqLen              $val(ifqlen) \  ;# 佇列長度
      -antType            $val(ant) \      ;# 天線型態
      -propType         $val(prop) \     ;# 無線電型態
      -phyType           $val(netif) \     ;# Physical Layer
      -channel           $chan \           ;# 管道
      -topoInstance   $topo \            ;# topograph
      -agentTrace      ON \                ;# agent紀錄檔
      -routerTrace      ON \               ;# router紀錄檔
      -macTrace        ON \                ;# mac紀錄檔
      -movementTrace  ON              ;# movement紀錄檔

#===================================
#        Nodes Definition       
#===================================
# Create 3 nodes
  set n0 [$ns node]                      ;# 建立 node 可以設定座標位置
  $n0 set X_ 428
  $n0 set Y_ 352
  $n0 set Z_ 0.0
  $ns initial_node_pos $n0 20   ;# 猜測此指令單純為設定節點大小
  set n1 [$ns node]
  $n1 set X_ 677
  $n1 set Y_ 355
  $n1 set Z_ 0.0
  $ns initial_node_pos $n1 20
  set n2 [$ns node]
  $n2 set X_ 555
  $n2 set Y_ 141
  $n2 set Z_ 0.0
  $ns initial_node_pos $n2 20

#===================================
#        Agents Definition       
#===================================
# Setup a TCP connection   ;# 設定協定的寫法與有線模擬是一樣的
  set tcp0 [new Agent/TCP]
  $ns attach-agent $n0 $tcp0
  set sink2 [new Agent/TCPSink]
  $ns attach-agent $n2 $sink2
  $ns connect $tcp0 $sink2
  $tcp0 set packetSize_ 1500

# Setup a TCP connection
  set tcp1 [new Agent/TCP]
  $ns attach-agent $n1 $tcp1
  set sink3 [new Agent/TCPSink]
  $ns attach-agent $n2 $sink3
  $ns connect $tcp1 $sink3
  $tcp1 set packetSize_ 1500

#===================================
#        Applications Definition       
#===================================
# Setup a FTP Application over TCP connection
# 設定應用的寫法與有線模擬是一樣的
  set ftp0 [new Application/FTP]
  $ftp0 attach-agent $tcp0
  $ns at 1.0 "$ftp0 start"
  $ns at 5.0 "$ftp0 stop"

# Setup a FTP Application over TCP connection
  set ftp1 [new Application/FTP]
  $ftp1 attach-agent $tcp1
  $ns at 1.2 "$ftp1 start"
  $ns at 5.0 "$ftp1 stop"

#===================================
#        Termination       
#===================================
# Define a 'finish' procedure
  proc finish {} {
      global ns tracefile namfile
      $ns flush-trace
      close $tracefile
      close $namfile
      exec nam out.nam &
      exit 0
  }

  for {set i 0} {$i < $val(nn) } { incr i } {
      $ns at $val(stop) "\$n$i reset"
  }

  $ns at $val(stop) "$ns nam-end-wireless $val(stop)"
  $ns at $val(stop) "puts \"done\" ; $ns halt"
  $ns at 5.1 "finish"
  $ns run
 

歡迎對於 NS2 有研究或見解的同學、朋友可以一起討論  by Yo PM 03:25

arrow
arrow
    全站熱搜

    NS2lab 發表在 痞客邦 留言(8) 人氣()