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
留言列表