免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3277 | 回复: 0
打印 上一主题 下一主题

NS2进阶实例1---无线网络中吞吐量、丢包率、端到端时延的测量 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-06 13:54 |只看该作者 |倒序浏览
   以下是利用NS2做进一步研究工作的典型实例! 在描述NS2的书籍、个人网站、Mac Grei的Tutorial上均有介绍! 有必要好好分析,对研究工作会有很好的指导意义的!
   关键点:
        学习采样过程的编写,如何获得所需参数,如何利用单独的文件做记录;
        了解吞吐量、丢包率和端到端时延的具体物理含义;
        进一步了解NS2提供的参数接口!
  
   实例1:(注意:注释行以 # 开始, 拷贝运行时应做相应调整哦!)
   
# How to measure the throughput, packet drop rate, and end-to-end delay for
#UDP-based application over wireless networks
#from
http://140.116.72.80/~smallko/ns2/wireless-udp-1.htm
#===================================================================
# Define Node Configuration paramaters
#====================================================================
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)         50                         ;# max packet in ifq
set val(nn)             8                          ;# number of mobilenodes
set val(rp)             DSDV                       ;# routing protocol
set val(x)              500                        ;# X dimension of the topography
set val(y)              500                           ;# Y dimension of the topography
Mac/802_11 set RTSThreshold_  3000
Mac/802_11 set basicRate_ 1Mb
Mac/802_11 set dataRate_  2Mb
#=====================================================================
# Initialize trace file desctiptors
#=====================================================================
# *** Throughput Trace ***
set f0 [open out02.tr w]
set f1 [open out12.tr w]
set f2 [open out22.tr w]
set f3 [open out32.tr w]
# *** Packet Loss Trace ***
set f4 [open lost02.tr w]
set f5 [open lost12.tr w]
set f6 [open lost22.tr w]
set f7 [open lost32.tr w]
# *** Packet Delay Trace ***
set f8 [open delay02.tr w]
set f9 [open delay12.tr w]
set f10 [open delay22.tr w]
set f11 [open delay32.tr w]
#以下部分的代码,在前面的实例中已有详尽的注释啦!
set ns_ [new Simulator]
set tracefd   [open trace2.tr w]
$ns_ trace-all $tracefd
set namtrace [open sim12.nam w]
$ns_ namtrace-all-wireless $namtrace $val(x) $val(y)
set topo [new Topography]
$topo load_flatgrid 500 500

# Create  General Operations Director (GOD) object.
#It is used to store global information about the state of the environment, network, or nodes that an
# omniscent observer would have, but that should not be made known to any participant in the simulation.

create-god $val(nn)
# configure nodes
        $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) \
                         -channelType $val(chan) \
                         -topoInstance $topo \
                         -agentTrace ON \
                         -routerTrace ON \
                         -macTrace OFF \
                         -movementTrace OFF                    
# Create Nodes
        for {set i 0} {$i  $holdseq } {
                puts $f8 "$now [expr ($bw8 - $holdtime)/($bw9 - $holdseq)]"
        } else {
                puts $f8 "$now [expr ($bw9 - $holdseq)]"
        }
        if { $bw11 > $holdseq1 } {
                puts $f9 "$now [expr ($bw10 - $holdtime1)/($bw11 - $holdseq1)]"
        } else {
                puts $f9 "$now [expr ($bw11 - $holdseq1)]"
        }
        if { $bw13 > $holdseq2 } {
                puts $f10 "$now [expr ($bw12 - $holdtime2)/($bw13 - $holdseq2)]"
        } else {
                puts $f10 "$now [expr ($bw13 - $holdseq2)]"
        }

        if { $bw15 > $holdseq3 } {
                puts $f11 "$now [expr ($bw14 - $holdtime3)/($bw15 - $holdseq3)]"
        } else {
                puts $f11 "$now [expr ($bw15 - $holdseq3)]"
        }
     
        # Reset Variables
        $sink set bytes_ 0
        $sink2 set bytes_ 0
        $sink3 set bytes_ 0
        $sink4 set bytes_ 0
        $sink set nlost_ 0
        $sink2 set nlost_ 0
        $sink3 set nlost_ 0
        $sink4 set nlost_ 0
        set holdtime $bw8
        set holdseq $bw9
        set  holdrate1 $bw0
        set  holdrate2 $bw1
        set  holdrate3 $bw2
        set  holdrate4 $bw3
    $ns at [expr $now+$time] "record"   ;# 定时采样的设置, 哈哈!
}
# set events for simulating!
$ns_ at 0.0 "record"
$ns_ at 1.4 "$app1 start"            
$ns_ at 10.0 "$app2 start"               
$ns_ at 20.0 "$app3 start"               
$ns_ at 30.0 "$app4 start"              
$ns_ at 80.0 "stop"
# Reset Nodes at time 80 sec
for {set i 0} {$i

运行结果:
     吞吐量:
  

     丢包率:
  

     端到端时延:


好像没什么好分析的哦,应该很容易看懂的吧!
   

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/105477/showart_2087878.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP