leach 分析3

原创 2012年03月22日 10:58:58

对前面两个脚本进行分析后,已经创建好节点和设置好节点的初始能量,将opt(nn_)-1个节点设置为普通节点,而将opt(nn_)设置为bs。

现在对ns-ranode.tcl进行分析。好了我们现在就开始分析这个脚本。

Class MobileNode/ResourceAwareNode -superclass Node/MobileNode

MobileNode/ResourceAwareNode instproc init args

set bs_node [lindex $args 0]
    eval $self next [lreplace $args 0 0]
  

args由参数传递进来,若节点为簇头节点则bs_node=1,调用父类初始化函数。

 set ResourceManager_ [new ResourceManager]
    $ResourceManager_ Register [new Resource/NeighborResource]
   
 set energy [new Resource/Energy]
    $ResourceManager_ Register $energy

ResourceManager在ns-resouce-manager.tcl中定义的。Resource/NeighborResource在ns-neighbor-resource

。对能量进行管理。

        # Create a new agent and attach it to the node
   
     if {$bs_node == 1} {
     
  set agent [new Agent/BSAgent]
   
   } else {
     
 set agent [new Agent/RCAgent]
   
     }
 
     set rca_agent_ $agent

      普通节点的应用为RCAgent,BS的应用为BSAGgent。   并将应用attch到node上。

        下面两段看不明白,但是这两段不影响看程序。

       set haslist [find_haslist [$self id]]
       if {$bs_node == 1} {
       set rca [new $opt(bsapp)]
       } else {
       set rca [new $opt(rcapp) $opt(mtype) $wantslist $haslist]
       }
       $ns_ attach-agent $self $agent
       $rca attach-agent $agent

       set rca_app_ $rca

将bs节点的应用设置为bsapp,普通节点的应用设置为rcaapp,并将节点的服务设置为不同的服务。bsapp在ns-app.tcl中。$opt(rcapp)定义在leach.tcl中,opt(mtype)定义在leach.tcl中

set opt(rcapp)        "Application/LEACH"        ;# Application type

set opt(ra_adv)       [TxTime [expr $opt(hdr_size) + 4]]  
                                          ;# Total time (s) for CH ADVs
                                          ;# Assume max 4(nn*%) CHs
set opt(ra_adv_total) [expr $opt(ra_adv)*($opt(num_clusters)*4 + 1)]
                                          ;# RA Time (s) for nodes' join reqs
set opt(ra_join)      [expr 0.01 * $opt(nn_)]             
                                          ;# Buffer time for join req xmittal
set opt(ra_delay)     [TxTime [expr $opt(hdr_size) + 4]]         
                                          ;# Maximum time required to transmit 
                                          ;# a schedule (n nodes in 1 cluster)
set opt(xmit_sch)     [expr 0.005 + [TxTime [expr $opt(nn_)*4+$opt(hdr_size)]]]
                                          ;# Overhead time for cluster set-up
set opt(start_xmit)   [expr $opt(ra_adv_total) + $opt(ra_join) + $opt(xmit_sch)]

一般节点的应用为Application/LEACH,最终sink节点的应用为Application/BSApp。

通过前3次的分析得出,在分析1中定义变量,在分析2中创建leach节点,在分析3中将节点的应用绑定在节点上。

下面将分析leach的主要协议ns-leach.tcl脚本。



NS2.27上安装和分析leach协议

/***************************************************************************************************...

leach 分析2

leach 分析1对wireless.tcl进行了简要的分析,接下来对Uamps.tcl脚本进行分析。 set opt(Efriss_amp)   [expr [expr 1.1 * $opt(RX...

Leach协议性能分析(2)

1.复制leach_test为leach-c_test,修改里面的文件夹和输出文件名。并且手动建立相应的文件夹。 很多教程说只修改文件名,没提到修改文件夹,如果同时运行两个协议会覆盖一部分实验结果的...

LEACH&LEACH-C仿真分析(3)

 LEACH&LEACH-C仿真分析(3) 收藏 转自:http://blog.csdn.net/xinxiuz/archive/2010/03/10/5364846.aspx对LEACH及LEACH...

leach协议分析实例

  • 2013年12月25日 15:58
  • 44KB
  • 下载

ns-leach.tcl 分析2

在start中调用下面这个方法。 Application/LEACH instproc decideClusterHead {} {   global ns_ chan opt node_...

Leach能量分析及用gnuplot绘制曲线

仿真问题处理与解析: (不用网上说的zz直接用leach本身带的test和leach_test) (1) 打开cygwin 输入命令startxwin.bat回车进入X~环境下。 (2) 进入。。/n...

【转】leach协议在NS2.33上的安装

【转】leach协议在NS2.33上的安装 收藏 转自:http://julysaquarius.blogbus.com/logs/56634215.html当初装leach的时候,装了好几遍,网上搜...

Fedora14+NS-2.34+Leach

首先在Linux上安装NS2-2.34,下载mit.tar.gz包 直接在2.34中安装leach的话,会把原来的相关文件给覆盖,这样2.34上以前添加的的协议将不能运行,所以这种方法行不通。为了解决...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leach 分析3
举报原因:
原因补充:

(最多只允许输入30个字)