首页> 中国专利> 基于EMANE的网络仿真工具中csma/cd模块的工作方法

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

摘要

本发明涉及一种基于EMANE的网络仿真工具中csma/cd模块的工作方法。选取专用于仿真移动自组网的网络仿真工具EMANE为基础,对其进行有线网络仿真功能的扩展,搭建EMANE的有线网mac层的csma/cd模块。扩展后的网络仿真工具能够用于搭建包含无线、有线以及移动网络的虚拟网络场景。

著录项

  • 公开/公告号CN104753737A

    专利类型发明专利

  • 公开/公告日2015-07-01

    原文格式PDF

  • 申请/专利权人 江苏物联网研究发展中心;

    申请/专利号CN201510134877.4

  • 申请日2015-03-25

  • 分类号

  • 代理机构无锡市大为专利商标事务所(普通合伙);

  • 代理人殷红梅

  • 地址 214135 江苏省无锡市新区菱湖大道200号中国传感网国际创新园C座

  • 入库时间 2023-12-18 09:43:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-08

    授权

    授权

  • 2015-07-29

    实质审查的生效 IPC(主分类):H04L12/26 申请日:20150325

    实质审查的生效

  • 2015-07-01

    公开

    公开

说明书

技术领域

本发明涉及一种基于EMANE的网络仿真工具中csma/cd模块的工作方法,用于开发具备仿真异构网络的功能的网络仿真工具。

背景技术

现如今,物联网已成为了一个热门的研究主题,其中很多细节尚未确定以及标准化。此外,构建试验床是代价高昂的,在其之上进行试验就更加困难。加之很多因素影响着试验结果,就很难满足可重现性。而在现实环境中运行一个试验有很耗费时间。因此物联网的仿真显得尤为重要,成为测试大规模网络中的新的协议以及应用的常用方法。

与传统的网络相比,物联网有自己的特点,因此在开发物联网仿真平台时,也存在很大的区别。物联网的一般的模拟模型中要包含一些新的组件。例如,在一般网络中的节点基础之上多了与周围环境联系的模块,包括传感器模块、能量模块和移动模块等。此外由于物联网中节点分布在三维世界中,需要一个拓扑控制模块控制节点的定位。

EMANE(Extensible Mobile Ad-hoc Network Emulator)是一个专用于物联网仿真的工具,具备能量模块、移动模块和定位模块。此外,由于EMANE具备很好的扩展性,除了可用于仿真虚拟网络外,还可以仿真具有特殊功能的传感器节点。EMANE本身是一个专用于仿真移动自组网的网络仿真工具,不具备仿真有线网络的功能。因此在使用它搭建虚拟的异构网络前,要先对EMANE进行有线网络仿真功能模块的扩展,使其具备仿真除了无线移动网络之外的有线骨干网。

发明内容

本发明的目的是对EMANE进行有线网络仿真功能的扩展,搭建EMANE中的CdNEM使其能够仿真包含有线、无线以及移动网络的复杂的物联网应用场景。通过对NS2的Mac-Csma模块的学习,我们在它的模块设计的基础之上搭建EMANE的有线网mac层的csma/cd模块。

本发明所述的基于EMANE的网络仿真工具中csma/cd模块实现载波监听和碰撞避免的工作方法如下:

为了实现csma/cd模块各阶段的任务,channel类需要具有以下基本信道属性:信道最近一次完成传输的时间txstop,信道最大传播时延delay,信道上正在传输的帧的个数numtx,信道的竞争窗口cwstop;在cwstop时间段发送的数据包都会发生碰撞,都要重传;并且channel类提供getTxstop()、contention()、collision()和setTxstop()这几个关键的接口;

csma/cd模块的工作包括三个阶段:

第一个阶段:发送前监听信道,决定何时发送:通过getTxstop()接口获取信道最近空闲下来的时刻,在这个时刻之后的设定时间发包;

第二个阶段:开始发送的阶段监听信道,看是否发生碰撞:通过contention()接口得知发送者需要监听到何时,即开始发送以来可能发生碰撞的时段,以及该阶段发包的个数;

第三个阶段:发送阶段监听结束后,判断是否发生碰撞,决定是回退重发还是完成发送。通过collision() 接口判断是否碰撞,如果此时记录上个阶段发包个数超过1,则表示发生了碰撞;若没有碰撞,通过setTxstop()接口更新信道最近一次传输结束的时间,将数据包传到物理层中。

所述csma/cd模块作为一个mac层插件,具有processDownstreamQueue()接口,csma/cd模块通过processDownstreamQueue()接口来实现对即将发往信道的数据包的三个阶段的处理过程;在processDownstreamQueue()中,载波监听和碰撞检测借助channel这个共享的虚拟信道完成;channel对象用来实现接入同一信道的节点mac层之间的同步,并且保存链路实时状态信息。

为了使得处理过程在系统时钟下实时进行,采用while循环语句和cond(mutex)条件结合来实现计时;其中,通过cond.wait(\&timeout)函数实现一种时间驱动的方式,在timeout 这个时刻到来之前,进程暂时释放占用的资源,包括CPU,到timeout时刻再抢回资源,继续占用CPU。

本发明的优点是:通过搭建EMANE的有线网mac层的csma/cd模块使得可以基于EMANE仿真无线移动网络和有线网络,能够仿真除了网络节点以外具有特殊功能的传感器节点;采用时间驱动的模式,使得虚拟环境与真实环境始终保持时间同步。

附图说明

图1为CDNEM的架构。

图2为csma/cd处理流程。

图3为csma/cd类图。

图4为测试场景示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步说明。从设计和实现两个方面对csma/cd模块创建过程进行详细讲解。

一、设计。

首先,基于EMANE无线网络仿真模块的架构,我们设计了如图1所示的CdNEM的架构。CdNEM是由MAC layer和channel pool两部分组成。在MAC layer和channel两个类对象的协作下实现CSMA/CD的媒介访问机。在CdNEM中,channel pool创建和管理所有的channel对象,这些channel对象具有有线信道的通信特点;MAC layer是由Downstream Queue和csmacdMACLayer Implementor两个类组成,Downstream Queue 用来存储从网络层传下来的数据包,而csmacdMACLayer Implementor 用来实现有线网络mac层的功能。在CdNEM中,一个channel可被多个MAC layer对象共享,而每个MAC layer对象只能连接一个channel对象。

其中,CdNEM依照FIFO的顺序处理从上层传下来的数据包,一旦csmacdMACLayer Implementor完成了对上一个数据包的处理就访问Downstream Queue 中下一个等待处理的数据包,如果队列中没有数据包,就等待直到下一个数据包到来。一旦获取了一个数据包csmacdMACLayer Implementor 就会依照CSMA/CD的机制处理数据包.

基于这个有线仿真模块架构,我们总结了实现csma/cd模块载波监听和碰撞避免功能所必需的功能函数以及它们的协作流程,如图2所示。

我们将mac层对传下来的包的处理过程分解成三个阶段,如下是每个阶段的主要任务以及完成这些任务我们需要考虑的问题:

第一个阶段:监听信道,直到测出信道空闲,再等待一个帧间距的时间后,发包。问题:如何表示信道忙闲状态,以及如何实现监听;

第二个阶段:发包,同时监听信道一段时间。如何在开始发包的一段时间监听信道,以及如何反映这段时间信道上是否有碰撞发生;

第三个阶段:在此期间,若侦听到信道上有其他的数据包在发送,就随机回退一段时间后,再重发这个数据包;若没有检测到有其他数据包在传输,就接着将整个数据包传完。完成一次数据包往信道的发送,要及时更新信道状态。

考虑到EMANE本身的架构,我们希望将具体的csma/cd模块作为一个插件装入其中,像EMANE本身提供的rfpipe、bypass、ieee80211abg等mac层和phy层插件一样。因此,这个模块继承了EMANE 基本架构中的maclayerImp抽象类,需要实现如下的基本接口:

(1)作为一个组件,维持其整个生命周期所必须的接口:init()、config()、start()、poststart()、stop()、destroy();

(2)作为一个mac层插件,与相邻层次间的通信接口:processUpstreamCtrl()、processUpstreamPacket()、processDownstreamCtrl()、processDownstreamPacket()、processDownsreamQueue();

(3)为了访问平台提供的服务,以及实现环境配置必须具备的接口:processEvent()。

除了后面提到的几个关键接口涉及csma/cd主要功能的实现,其他接口只需要具备基本的mac层插件的功能即可。我们是通过processDownstreamQueue()接口来实现csma/cd对即将发往信道的数据包的三个阶段的处理过程的。其中,考虑到涉及传输层输出队列和接收端的碰撞检测,processDownstreamPacket() 和processUpstreamPacket() 也需要完成一些特殊的处理过程。

在processDownstreamQueue()中,载波监听和碰撞检测主要是借助channel这个共享的虚拟信道完成。channel对象用来实现接入同一信道的节点mac层之间的同步,并且保存链路实时状态信息。为了实现上述的csma/cd各阶段的具体任务,channel类需要具有以下的基本信道属性:txstop,信道最近一次完成传输的时间;delay,信道最大传播时延;numtx,信道上正在传输的帧的个数;cwstop,信道的竞争窗口,即在这段时间发送的数据包都会发生碰撞,都要重传。在这些属性的基础之上,channel提供了getTxstop()、contention()、collision()和setTxstop()这几个关键的接口。

上述的接口和属性是实现csma/cd模块功能的关键,如下大致描述了该模块中它们是如何协作实现各个阶段的功能的:

第一个阶段:发送前监听信道,决定何时发送:通过getTxstop()接口获取信道最近空闲下来的时刻,在这个时刻之后的一段时间发包。

第二个阶段:开始发送的阶段监听信道,看是否发生碰撞:通过contention()接口得知发送者需要监听到何时,即开始发送以来可能发生碰撞的时段,以及该阶段发包的个数。

第三个阶段:发送阶段监听结束后,判断是否发生碰撞,决定是回退重发还是完成发送。通过collision() 接口判断是否碰撞,如果此时记录上个阶段发包个数超过1,则发生了碰撞。若没有碰撞,通过setTxstop()接口更新信道最近一次传输结束的时间,将数据包传到物理层中。

由此可以得出Csma/CD模块对应的类结构,如图3所示。

二、实现。

于是,结合之前对csma/cd模块特点的分析,我们选取EMANE中的OTA模块、IEEE80211abg模块和NS2中的mac-csma模块为参考,具体研究它们的哪些实现方式是csma/cd模块可以借鉴的。以下是csma/cd模块的实现方面涉及的几个关键问题,以及我们采用的机制。

首先,channel作为一个共享的信道,要被多个节点的mac层实例访问,必须保证访问信道资源的进程间的互斥同步。因为ns2使用的是使用生成事件驱动的调度器的事件对象的方式来运行的,所以在只有一个调度器的情况下,运行的进程只可能有一个,而channel的调用都是在send 、EOC中调用的,而这些都是以事件驱动的方式运行,所以自然在同一时刻只能有一个程序访问channel对象,保证了对channel的互斥访问,并且保证了每次只能运行channel的一个函数,且这个过程是不可中断的,就不需要对属性的读写进行同步了。在EMANE 中可以通过单件模式实现。但考虑到我们的场景中不止一个有线信道,而单件类型在整个场景中只能有一个实例,这显然不合适。所以我们采用静态对象的方式,使得所有channel 实例共享channel类的静态属性和静态函数。但此处我们不可忽略的是,channel 类同时提供给了外界读和写信道属性的接口,例如txstop() 和sent()分别读取和修改信道最近一次完成传输的时间,所以我们必须解决读和写的同步问题。因为EMANE 是在ACE 环境下实现的,我们可以直接借助ACE 环境提供的读写锁机制来实现。

此外,一个EMANE场景的多个节点的mac层实例在开始运行时都会产生一个processDownstreamQueue()的处理线程,它从创建时起存在于在节点的整个生命周期。在这个多线程的环境中,要保证各个节点的processDownstreamQueue()处理过程不被中断,我们采用了条件锁的机制,即mutex和cond结合使用,既保证了处理过程的不可中断性,又避免了通过while机制实现的空等现象。cond(mutex)机制,即满足条件cond就上锁,否则暂时解锁。

为了使得处理过程在系统时钟下实时进行,我们采用while循环语句和cond(mutex)条件结合来实现计时。其中,通过cond.wait(\&timeout)函数实现一种类似时间驱动的方式,在timeout 这个时刻到来之前,进程暂时释放占用的资源,包括cpu。到timeout的时刻再抢回资源,继续占用cpu。如果只采用while循环计时,则是空等,例如在竞争前要等待一个时延才能访问信道,若在此过程不释放cpu,则不能实现其他节点的操作,例如向信道发送数据,如此一来模块功能就出现了错误。

三、测试。

本发明基于EMANE开发具备仿真异构网络功能的网络仿真工具,并将其用于搭建视频监控系统的虚拟网络场景。

为了检验我们设计的模块的合理性,我们进行了多次测试,接下来,就其中一个较完整的测试场景进行详细描述。

该场景中5个节点接入同一个有线信道,形成局域网,如图4所示。其中,1、3、4、5四个节点以(100,128)即10.24Kb/s的速率向节点2发送数据。

mac层的基本设置:1Mb/s的传输速率,帧间距96微秒,时隙512微秒,最小竞争窗口1,最大竞争窗口1024,最大重传次数4.

为了观测结果,我们在实现源码中加入了fout语句,将统计结果输出到指定文件中。具体的观测数据包括:节点开始发包的时刻、完成传输的时刻、是否发生碰撞、第几次重传、以及是否超过重传次数被丢弃等的方面记录每个节点每个数据包的状态。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号