如何对ns2移动节点进行多接口扩展(可以实现动态信道分配)-Read.PDF

如何对ns2移动节点进行多接口扩展(可以实现动态信道分配)-Read.PDF

如何对ns2移动节点进行多接口扩展(可以实现动态信道分配)-Read.PDF

如何对ns2 移动节点进行多接口扩展(可以 实现动态信道分配) 作者:浙江大学通信工程研究所 周斌 日期:2009-1-13 ns2 版本:ns-2.30 参考文献: Ramon :“Adding Multiple Interface Support in NS-2 ” /~wangbo1/ns2/nshowto8.html ns2 创建移动节点的主要过程: ns-lib.tcl:node ns-lib.tcl: create-wireless-node 根据运行脚本中指定的路由协议创建相应的路由agent,如: set ragent [$self create-hyacinth-routing-agent $node] ns-mobilenode:add-interface 创建接口(查看该过程可以了解接口的结构) 创建netif 、mac 、ifq、ll 实例对象 创建arptable(指向对应的mac 对象,连接相应的ll 对象) $ll mac $mac;$ll down-target $ifq;$ll up-target [$self entry];$ifq target $mac;$mac netif $netif ;$mac netif $netif;$mac down-target $netif; $netif channel $channel;$netif up-target $mac; $channel addif $netif;$channel add-node $self;(每一个channel 对象都有一个节点 指针,可以通过这个指针遍历使用该信道的所有节点) $self addif $netif ns-node.tcl:attach 连接路由agent 和接口(mobilenode 继承于node ) ns-mobilenode.tcl: add-target 为节点添加路由agent 对路由agent 进行一些设置,如:$agent if-queue $i [$self set ifq_($i)] ns-mobilenode.tcl:add-target-rtagent 如果打开RouterTrace ,那么dmux_(RT_PORT)--rcvT--ragent, ragent::target(i)--sndT(i)--ll(i) ;否则 dmux_(RT_PORT)--ragent, ragent::target(i)--ll(i) 由此可以看出一个移动节点的结构是: 进行多接口扩展需要进行的修改: 1,ns-lib.tcl 添加过程: Simulator instproc channelNum {val} { $self instvar channelNum_ set channelNum_ $val } 说明:channelnum_是向Simulator 类中添加的一个成员变量,代表可用的信道数目;有 了这个过程,那么就可以直接在ns 的运行脚本中执行channelNum 命令进行多接口扩展, 设置可用信道数,或者在node-config 命令中添加参数:-channelNum 12 。 添加过程: Simulator instproc get-channelNum {} { $self instvar channelNum_ if [ info exists channelNum_ ] { return $channelNum_ } else { return } } 说明:添加这个过程的目的是为了在非Simulator 类中获得可用信道数目,而且还可以 通过返回的值(是否为空)来判断是否进行了多接口扩展。比如在ns-mobilenode.tcl 的 过程中可以这样做:

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档