NS2下Leach的文件解析.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NS2下Leach的文件解析

下面就是对leach进行分析: 在对leach的源码进行分析以前,我们需要知道leach协议到底是在做什么。我们知道了流程就能基本上找到leach的主线了。 广播簇头节点 事件鉴定 簇头节点? 接收簇头广播 选择加入簇 通知簇头 等待加入信息 创建TDMA 等待时间表 簇头接收数据 发送到基站 节点发送数据 休眠 簇准备阶段 稳定阶段 那么我们就知道了leach的流程了。那么就可以对leach的程序进行分析。但是在分析的时候我们需要知道leach文件一些作用。 我们首先运行的./test ,则执行了leach.test文件, 我们发现这个文件主要做的工作就是初始化一些东西,然后主要的是ns tcl/ex/wireless.tcl \。而且像wireless中传递了一些参数进来。 那么我们首先查看Wireless.tcl的源码,看下Wireless到底做了些什么东西。那先们先将从leach.test里面传进来的参数对一些属性进行初始化。 我们看到getopt $argc $argv 对属性进行初始化。 #创建一个模拟器 set ns_ [new Simulator] #创建链路结构 set chan [new $opt(chan)] set prop [new $opt(prop)] #创建拓扑结构 set topo [new Topography] #开启out.tr文件,返回供其它命令使用的文件标识赋给tracefd set tracefd [open $opt(tr) w] #节点拓扑结构:mit/uAMPS/sims/100nodes.txt #load_flatgrid是类Topography的一个成员函数,包含三个参数 #函数原型int Topography::load_flatgrid(int x, int y, int res) #设定模拟所用场景大小 $topo load_flatgrid $opt(x) $opt(y) 这个文件最主要的函数: elseif { [string compare $opt(rp) leach] == 0} { for {set i 0} {$i $opt(nn) } {incr i} { leach-create-mobile-node $i } 这个就是创建节点。这个函数在Uamps.tcl中。那么我们可以看到wireless主要是进行初始化。那么Uamps中创建节点。在一个文本中没找到source那么可以到source中再找是否有source。迭代进行。 那么我们就进入Uamps.tcl中创建节点。那么创建节点: if {$id != $opt(nn_)} { puts -nonewline $id #创建普通节点 set node_($id) [new MobileNode/ResourceAwareNode] } else { #创建基站节点 puts ($opt(nn_) == BS) set node_($id) [new MobileNode/ResourceAwareNode $BS_NODE] 我们创建了两种节点:普通节点和基站节点。并初始化一些记录信息,每隔10s就记录一次。对节点的能量进行初始化,并将节点的初始能量记录下来。 在ns-ranode.tcl中: Class MobileNode/ResourceAwareNode -superclass Node/MobileNode 对节点添加Agent,不同节点添加不同的agent。 if {$bs_node == 1} { set agent [new Agent/BSAgent] } else { set agent [new Agent/RCAgent] } 并为节点添加agent,在agent上添加应用。 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 如果是bs节点开始应用。 但是如果不是bs节点。那么就可以对簇的节点数目进行控制。BS进行控制。 然后开始应用,就开始进入到leach主程序。ns-leach.tcl. 在应用中首先选择簇头节点,并检查节点是否存活: Application/LEAC

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档