http://www.pixnet.net/NS2lab

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

創作者介紹
創作者 NS2lab 的頭像
NS2lab

『網路節點模擬』 研究日誌

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


留言列表 (8)

發表留言
  • 困擾的人
  • 問題詢問

    您好:
      我是使用NSG2來產生tcl劇本的使用者,我依word檔教學去操作,執行時,總出現Missing required flag -x in:W -t 5.0
    Missing required flag -y in:W -t 5.0
    Parsing error in event.
    請問您知道這是什麼樣的問題嗎?我一直找不出來,謝謝
  • 你好,能否把情況說的更清楚一點…
    像是,有造成程式不能執行或是哪裡有出錯的問題嗎?
    如果不介意的話,是否可以把 code 貼給我們來測試看看??

    NS2lab 於 2008/05/21 21:20 回覆

  • 賈司丁
  • NSG2有BUG
    你產生完腳本TCL後
    在和柯志亨網頁上的範例比較一下吧
    我印象中在agent設定的地方產生有錯誤
  • 可以請問是會造成怎樣問題的 bug 呢?

    基本上 NSG2 我們都是拿來當做簡單佈節點座標的一個好工具,
    但是,如果模擬節點多的話,為了可以比較方便撰寫,我們幾乎還是都自己去寫腳本的

    NS2lab 於 2008/06/17 12:20 回覆

  • soloball
  • 急问

    请问您能把NSG2软体传给我么?我的邮箱:soloball@163.com
  • http://sites.google.com/site/pengjungwu/nsg
    這個是NSG2作者的網站,裡面就可以下載此軟體了,請參考!

    NS2lab 於 2008/10/20 13:28 回覆

  • winnie
  • 可以請問一下
    我用NSG軟體模擬
    可以順利產生劇本
    不過不會有模擬畫面
    而且資料夾中只有.tcl檔
    請問這要如何解決
    謝謝
  • NSG2 軟體本身就只是一個腳本產生器,所以不會有模擬畫面
    必須將此產生的腳本,利用『NS-2』去執行此腳本才會有模擬畫面

    NS2lab 於 2008/11/01 00:04 回覆

  • Uranus
  • 您好,想請問一下,我有在ns2中裝了wimax的模組,但是在nsg2中的parameters中mac protocol type卻都沒有wimax,想請問要怎樣才能新增,麻煩您了,謝謝!
  • NSG-2只是簡單的腳本產生器
    只支援ns-2幾個主要參數設定
    因作者只上傳jar檔, 所以沒辦法自己開發新的ap
    我這裡有一些WiMAX ns-2 2.31的資料
    如果你有需要可以留mail給我

    NS2lab 於 2008/12/30 00:44 回覆

  • 悄悄話
  • money
  • 您好
    我想研究wimax以ns模擬的模組
    可以傳WiMAX ns-2 2.31的資料給我嗎??
    謝謝
    這是我的信箱
    u96014053cc .kmu.edu.tw
  • Lu
  • 執行時,總出現
    Missing required flag -x in:W -t 5.0
    Missing required flag -y in:W -t 5.0
    Parsing error in event.
    -------------
    lab3-2.tcl


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

    #===================================
    # Simulation parameters setup
    #===================================
    set val(stop) 5.0 ;# time of simulation end

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

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

    #Open the NAM trace file
    set namfile [open lab3-1.nam w]
    $ns namtrace-all $namfile

    #===================================
    # Nodes Definition
    #===================================
    #Create 6 nodes
    set n0 [$ns node]
    set n1 [$ns node]
    set n2 [$ns node]
    set n3 [$ns node]
    set n4 [$ns node]
    set n5 [$ns node]

    #===================================
    # Links Definition
    #===================================
    #Createlinks between nodes
    $ns duplex-link $n0 $n2 2.0Mb 10ms DropTail
    $ns queue-limit $n0 $n2 10
    $ns duplex-link $n1 $n2 2.0Mb 10ms DropTail
    $ns queue-limit $n1 $n2 10
    $ns duplex-link $n3 $n4 2.0Mb 10ms DropTail
    $ns queue-limit $n3 $n4 10
    $ns duplex-link $n3 $n5 2.0Mb 10ms DropTail
    $ns queue-limit $n3 $n5 10
    $ns duplex-link $n2 $n3 1.0Mb 20ms DropTail
    $ns queue-limit $n2 $n3 10

    #Give node position (for NAM)
    $ns duplex-link-op $n0 $n2 orient right-down
    $ns duplex-link-op $n1 $n2 orient right-up
    $ns duplex-link-op $n3 $n4 orient right-up
    $ns duplex-link-op $n3 $n5 orient right-down
    $ns duplex-link-op $n2 $n3 orient right

    #===================================
    # Agents Definition
    #===================================
    #Setup a UDP connection
    set udp0 [new Agent/UDP]
    $ns attach-agent $n0 $udp0
    set null2 [new Agent/Null]
    $ns attach-agent $n4 $null2
    $ns connect $udp0 $null2
    $udp0 set packetSize_ 1500

    #Setup a UDP connection
    set udp1 [new Agent/UDP]
    $ns attach-agent $n1 $udp1
    set null3 [new Agent/Null]
    $ns attach-agent $n5 $null3
    $ns connect $udp1 $null3
    $udp1 set packetSize_ 1500


    #===================================
    # Applications Definition
    #===================================
    #Setup a CBR Application over UDP connection
    set cbr0 [new Application/Traffic/CBR]
    $cbr0 attach-agent $udp0
    $cbr0 set packetSize_ 1500
    $cbr0 set rate_ 1.0Mb
    $cbr0 set random_ null
    $ns at 1.0 "$cbr0 start"
    $ns at 4.0 "$cbr0 stop"

    #Setup a CBR Application over UDP connection
    set cbr1 [new Application/Traffic/CBR]
    $cbr1 attach-agent $udp1
    $cbr1 set packetSize_ 1500
    $cbr1 set rate_ 1.0Mb
    $cbr1 set random_ null
    $ns at 2.0 "$cbr1 start"
    $ns at 3.0 "$cbr1 stop"


    #===================================
    # Termination
    #===================================
    #Define a 'finish' procedure
    proc finish {} {
    global ns tracefile namfile
    $ns flush-trace
    close $tracefile
    close $namfile
    exec nam lab3-1.nam &
    exit 0
    }
    $ns at $val(stop) "$ns nam-end-wireless $val(stop)"
    $ns at $val(stop) "finish"
    $ns at $val(stop) "puts \"done\" ; $ns halt"
    $ns run