无线简单网络模型模拟

拓扑结构如下:

无线简单网络模型模拟_第1张图片

程序如下:

#无线节点参数

set val(chan)       Channel/WirelessChannel    ;# channel type 信道类型:无线信道

set val(prop)       Propagation/TwoRayGround   ;# radio-propagation model 信道模型:TwoRayGround

set val(netif)      Phy/WirelessPhy            ;# network interface type 无线物理层

set val(mac)        Mac/802_11                 ;# MAC type MAC层协议

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)     50                         ;# max packet in ifq

set val(rp)         AODV                       ;# 路由协议

set val(x)          600                        ;# 拓扑-长度

set val(y)          200                        ;# 拓扑-宽度

set val(stop)       10.0          ;# time of simulation end

 

# 建立一个simulator实例

set ns [new Simulator]

#$ns use-newtrace

 

#开启Trace跟踪和NAM跟踪

set tracefd [open wireless.tr w]

set namtrace [open wireless.nam w]

$ns trace-all $tracefd

$ns namtrace-all-wireless $namtrace $val(x) $val(y)

 

#建立topology对象

set topo [new Topography]

$topo load_flatgrid $val(x) $val(y)

 

 

#创建god

create-god 3

 

set chan_1_ [new $val(chan)]

 

#配置无线节点(包括使用何种路由协议,何种mac协议,无线信道的模型等等)

$ns node-config -adhocRouting $val(rp) \

                -llType $val(ll) \

                -macType $val(mac) \

                -ifqType $val(ifq) \

                -ifqLen $val(ifqlen) \

                -antType $val(ant) \

                -propType $val(prop)    \

                -phyType $val(netif) \

 -channel $chan_1_  \

                -topoInstance $topo \

                -agentTrace ON \

                -routerTrace ON \

                -macTrace ON    \

                -movementTrace OFF 

 

 

#建立无线节点并设置节点的位置(节点位置决定了拓扑结构)

set n(0) [$ns node] 

#$n(0) shape hexagon

#$n(0) label n0

#$n(0) label-color Red

$n(0) random-motion 0

$n(0) set X_ 100.0

$n(0) set Y_ 100.0

$n(0) set Z_ 0.0

$ns initial_node_pos $n(0) 20

 

 

set n(1) [$ns node]

$n(1) random-motion 0

$n(1) set X_ 300.0

$n(1) set Y_ 100.0

$n(1) set Z_ 0.0

$ns initial_node_pos $n(1) 20

 

set n(2) [$ns node]

$n(2) random-motion 0

$n(2) set X_ 500.0

$n(2) set Y_ 100.0

$n(2) set Z_ 0.0

$ns initial_node_pos $n(2) 20 

 

#建立一个UDP代理

set udp0 [new Agent/UDP]                  ;#建立一个数据发送代理

$ns attach-agent $n(0) $udp0              ;#将数据发送代理绑定到发送节点

set null0 [new Agent/Null]                ;#建立一个数据接收代理

$ns attach-agent $n(2) $null0             ;#将数据接收代理绑定到接收节点

$ns connect $udp0 $null0                  ;#连接两个代理(也就决定了数据包的发送和接收节点)  

 

#在UDP代理上建立CBR流

set cbr [new Application/Traffic/CBR]    

$cbr attach-agent $udp0             

 

# 仿真结束时重置节点

for {set i 0} {$i < 3 } {incr i} {

$ns at 10.0 "$n($i) reset";

}

 

#启动和结束流代理

$ns at 0.5 "$cbr start"

$ns at 9.5 "$cbr stop"

 

#定义结束进程

proc finish {} {

    global ns tracefd namtrace

    $ns flush-trace

    close $tracefd

    close $namtrace

exit 0

}

 

#仿真结束时调用结束进程

$ns at $val(stop) "finish"

$ns at $val(stop) "puts \"NS EXISTING...\"; $ns halt"

 

 

puts "Start Simulation..."

 

# run the simulation

$ns run

运行截图:

无线简单网络模型模拟_第2张图片

你可能感兴趣的:(NS-2)