基于EMANE的网络仿真工具中csma/cd模块的工作方法

文档序号:8433625阅读:2021来源:国知局
基于EMANE的网络仿真工具中csma/cd模块的工作方法
【技术领域】
[0001]本发明涉及一种基于EMANE的网络仿真工具中csma/cd模块的工作方法,用于开发具备仿真异构网络的功能的网络仿真工具。
【背景技术】
[0002]现如今,物联网已成为了一个热门的研宄主题,其中很多细节尚未确定以及标准化。此外,构建试验床是代价高昂的,在其之上进行试验就更加困难。加之很多因素影响着试验结果,就很难满足可重现性。而在现实环境中运行一个试验有很耗费时间。因此物联网的仿真显得尤为重要,成为测试大规模网络中的新的协议以及应用的常用方法。
[0003]与传统的网络相比,物联网有自己的特点,因此在开发物联网仿真平台时,也存在很大的区别。物联网的一般的模拟模型中要包含一些新的组件。例如,在一般网络中的节点基础之上多了与周围环境联系的模块,包括传感器模块、能量模块和移动模块等。此外由于物联网中节点分布在三维世界中,需要一个拓扑控制模块控制节点的定位。
[0004]EMANE (Extensible Mobile Ad-hoc Network Emulator)是一个专用于物联网仿真的工具,具备能量模块、移动模块和定位模块。此外,由于EMANE具备很好的扩展性,除了可用于仿真虚拟网络外,还可以仿真具有特殊功能的传感器节点。EMANE本身是一个专用于仿真移动自组网的网络仿真工具,不具备仿真有线网络的功能。因此在使用它搭建虚拟的异构网络前,要先对EMANE进行有线网络仿真功能模块的扩展,使其具备仿真除了无线移动网络之外的有线骨干网。

【发明内容】

[0005]本发明的目的是对EMANE进行有线网络仿真功能的扩展,搭建EMANE中的CdNEM使其能够仿真包含有线、无线以及移动网络的复杂的物联网应用场景。通过对NS2的Mac-Csma模块的学习,我们在它的模块设计的基础之上搭建EMANE的有线网mac层的csma/cd 模块。
[0006]本发明所述的基于EMANE的网络仿真工具中csma/cd模块实现载波监听和碰撞避免的工作方法如下:
为了实现csma/cd模块各阶段的任务,channel类需要具有以下基本信道属性:信道最近一次完成传输的时间txstop,信道最大传播时延delay,信道上正在传输的帧的个数numtx,信道的竞争窗口 cwstop ;在cwstop时间段发送的数据包都会发生碰撞,都要重传;并且 channel 类提供 getTxstop O、content1n O、collis1n O 和 setTxstop O 这几个关键的接口 ;
csma/cd模块的工作包括三个阶段:
第一个阶段:发送前监听信道,决定何时发送:通过getTxstop O接口获取信道最近空闲下来的时刻,在这个时刻之后的设定时间发包;
第二个阶段:开始发送的阶段监听信道,看是否发生碰撞:通过content1nO接口得知发送者需要监听到何时,即开始发送以来可能发生碰撞的时段,以及该阶段发包的个数;
第三个阶段:发送阶段监听结束后,判断是否发生碰撞,决定是回退重发还是完成发送。通过collis1nO接口判断是否碰撞,如果此时记录上个阶段发包个数超过1,则表示发生了碰撞;若没有碰撞,通过setTxstopO接口更新信道最近一次传输结束的时间,将数据包传到物理层中。
[0007]所述csma/cd 模块作为一个 mac 层插件,具有 processDownstreamQueue O 接口,csma/cd模块通过processDownstreamQueue O接口来实现对即将发往信道的数据包的三个阶段的处理过程;在processDownstreamQueue O中,载波监听和碰撞检测借助channel这个共享的虚拟信道完成;channel对象用来实现接入同一信道的节点mac层之间的同步,并且保存链路实时状态信息。
[0008]为了使得处理过程在系统时钟下实时进行,采用while循环语句和cond(mutex)条件结合来实现计时;其中,通过cond.wait (\&timeout)函数实现一种时间驱动的方式,在timeout这个时刻到来之前,进程暂时释放占用的资源,包括CPU,到timeout时刻再抢回资源,继续占用CPU。
[0009]本发明的优点是:通过搭建EMANE的有线网mac层的csma/cd模块使得可以基于EMANE仿真无线移动网络和有线网络,能够仿真除了网络节点以外具有特殊功能的传感器节点;采用时间驱动的模式,使得虚拟环境与真实环境始终保持时间同步。
【附图说明】
[0010]图1为CDNEM的架构。
[0011]图2为csma/cd处理流程。
[0012]图3 为 csma/cd 类图。
[0013]图4为测试场景示意图。
【具体实施方式】
[0014]下面结合附图和实施例对本发明作进一步说明。从设计和实现两个方面对csma/Cd模块创建过程进行详细讲解。
[0015]一、设计。
[0016]首先,基于EMANE无线网络仿真模块的架构,我们设计了如图1所示的CdNEM的架构。CdNEM 是由 MAC layer 和 channel pool 两部分组成。在 MAC layer 和 channel 两个类对象的协作下实现CSMA/⑶的媒介访问机。在CdNEM中,channel pool创建和管理所有的channel对象,这些channel对象具有有线信道的通信特点;MAC layer是由DownstreamQueue 和 csmacdMACLayer Implementor 两个类组成,Downstream Queue 用来存储从网络层传下来的数据包,而csmacdMACLayer Implementor用来实现有线网络mac层的功能。在CdNEM中,一个channel可被多个MAC layer对象共享,而每个MAC layer对象只能连接一个channel对象。
[0017]其中,CdNEM依照FIFO的顺序处理从上层传下来的数据包,一旦csmacdMACLayerImplementor完成了对上一个数据包的处理就访问Downstream Queue中下一个等待处理的数据包,如果队列中没有数据包,就等待直到下一个数据包到来。一旦获取了一个数据包csmacdMACLayer Implementor就会依照CSMA/CD的机制处理数据包.基于这个有线仿真模块架构,我们总结了实现csma/cd模块载波监听和碰撞避免功能所必需的功能函数以及它们的协作流程,如图2所示。
[0018]我们将mac层对传下来的包的处理过程分解成三个阶段,如下是每个阶段的主要任务以及完成这些任务我们需要考虑的问题:
第一个阶段:监听信道,直到测出信道空闲,再等待一个帧间距的时间后,发包。问题:如何表示信道忙闲状态,以及如何实现监听;
第二个阶段:发包,同时监听信道一段时间。如何在开始发包的一段时间监听信道,以及如何反映这段时间信道上是否有碰撞发生;
第三个阶段:在此期间,若侦听到信道上有其他的数据包在发送,就随机回退一段时间后,再重发这个数据包;若没有检测到有其他数据包在传输,就接着将整个数据包传完。完成一次数据包往信道的发送,要及时更新信道状态。
[0019]考虑到EMANE本身的架构,我们希望将具体的csma/cd模块作为一个插件装入其中,像EMANE本身提供的rfpipe、bypass、ieee80211abg等mac层和phy层插件一样。因此,这个模块继承了 EMANE基本架构中的maclayerlmp抽象类,需要实现如下的基本接口:
(1)作为一个组件,维持其整个生命周期所必须的接口:init()、configO、start O、poststart O、stop O、destroy O ;
(2)作为一个mac层插件,与相邻层次间的通信接口:processUpstreamCtrl O、processUpstreamPacket O、processDownstreamCtrl O、processDownstreamPacket O、processDownsreamQueue();
(3)为了访问平台提供的服务,以及实现环境配置必须具备的接口:pr0CeSSEVent()。
[0020]除了后面提到的几个关键接口涉及csma/cd主要功能的实现,其他接口只需要具备基本的mac层插件的功能即可。我们是通过processDownstreamQueue O接口来实现csma/cd对即将发往信道的数据包的三个阶段的处理过程的。其中,考虑到涉及传输层输出队列和接收端的碰撞检测,processDownstreamPacket O 和 pr
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1