收藏 分销(赏)

基于OMNeT的Ad-hoc网络仿真毕业论文.doc

上传人:胜**** 文档编号:2434142 上传时间:2024-05-30 格式:DOC 页数:58 大小:469.50KB
下载 相关 举报
基于OMNeT的Ad-hoc网络仿真毕业论文.doc_第1页
第1页 / 共58页
基于OMNeT的Ad-hoc网络仿真毕业论文.doc_第2页
第2页 / 共58页
基于OMNeT的Ad-hoc网络仿真毕业论文.doc_第3页
第3页 / 共58页
基于OMNeT的Ad-hoc网络仿真毕业论文.doc_第4页
第4页 / 共58页
基于OMNeT的Ad-hoc网络仿真毕业论文.doc_第5页
第5页 / 共58页
点击查看更多>>
资源描述

1、摘 要本文主要工作是介绍 OMNeT+仿真平台,并基于OMNeT+搭建Ad hoc网络环境来进行仿真试验。首先是详细介绍OMNeT+仿真器的构成原理,尤其是对其NED语言和编程语法等做深入讲解,同时也对OMNeT+的移动框架(MF,Mobility Framework)组成原理进行了系统的讲解,因为它为我们提供了仿真无线移动网络所需各种基本模块,把我们从设计底层的模块结构和拓扑结构中解放出来,让我们能够把精力放在具体协议的实现上,加快了搭建仿真网络的过程,最后是进行Ad hoc 网络仿真环境的搭建,并在该环境中对在计算机网络中常用来检测网络连通性的Ping 命令进行了仿真试验,并对抽取所需的数

2、据进行分析。关键字 网络仿真 OMNeT+ Ad hoc网络AbstractThe main work of this thesis introduces the OMNeT+, and organize a Ad hoc network for the simulation test based on OMNeT+. Firstly, it introduces the structure of OMNeT+ in detail, especially its NED language and the syntax of program, as well as OMNeT+s Mobile

3、Framework (MF, Mobility Framework) principle, because it provides with basic modules for wireless and mobile network simulation, and free from the designing of the bottom of the modules structure and topological, so that , it can put more efforts on the achievement of the realization of the protocol

4、, speed up the simulation process. At last, it organizes an Ad hoc network, and simulate the Ping instruction, which is always used in the computer network to detect the networks connectivity, at the same time, it collects the required data for analysis. Key words Network Simulation OMNeT + + Ad hoc

5、 Network目 录摘 要IAbstractII第1章 绪论11.1 课题背景与意义11.2 本文的主要工作21.3 本文的组织结构3第2章 OMNeT+基础42.1 OMNeT+简介42.2 OMNET+框架62.2.1 OMNeT+组成62.2.2 OMNeT+框架72.3 OMNeT+语法82.3.1 NED语言82.3.2 简单模块算法实现和消息传递112.4 MF移动框架142.4.1 主机模型142.4.2 信道控制模块162.4.3 基本概念18第3章 Ad hoc网络基础223.1 Ad Hoc网络的概念223.2 Ad hoc网络特点233.3 Ad hoc网络协议栈253

6、.4 Ad hoc网络的应用领域26第4章 Ad hoc网络仿真的实现294.1 仿真试验294.1.1 NIC模块304.1.2 移动模块324.1.3 网络层模块324.1.4 信道控制模块354.1.5 应用层模块364.2 仿真结果分析374.2.1 丢包分析374.2.2 往返时延分析384.2.3 数据分析38结 论39致 谢40参考文献41附录1 外文文献译文43附录2 外文文献原文4854第1章 绪论1.1 课题背景与意义由于研究方向的不同,许多领域,并不太适合采用实地试验的方式,或者是为了节省时间、资金等目的,最好采用仿真的方式。比方说电路仿真、生物仿真,还有接下来我们要谈到

7、的网络仿真。网络仿真也被称为网络模拟,因为对各种网络仿真过程来说,其中也有“模拟”的含义,即网络仿真不但可以取代真实的应用环境得出可靠的运行结果和数据,也可以模仿一个系统过程中的某些行为和特征。顾名思义,网络模拟,就是用计算机程序对通信网络进行模型化,通过程序的运行模仿通信网络的运行过程。那么,为什么要进行通信网络的仿真呢?在网络迅速膨胀的今天,网络研究人员一方面要不断思考新的网络协议和算法,为网络发展做前瞻性的基础研究;另一方面也要研究如何利用和整合现有的资源,使网络达到最高效能。无论是哪一方面都需要对新的网络方案进行验证和分析。进行网络技术的研究一般有以下3种手段:(1)分析方法,就是对所

8、研究的对象和所依存的网络系统进行初步分析,根据一定的限定条件和合理假设,对研究对象和系统进行描述,抽象出研究对象的数学分析模型,利用数学分析模型对问题进行求解。(2)实验方法,就是设计出研究所需要的合理硬件和软件配置环境,建立测试床和实验室,在现实的网络上实现对网络协议、网络行为和网络性能的研究。(3)仿真方法,应用网络仿真软件建立所研究的网络系统的模拟模型,在计算机上运行这个模型,并分析运行的输出结果。然而,前两种方法都存在很大的局限性。分析方法的有效性和精确性受假设限制很大。当一个系统很复杂时,就无法用一些限制性假设来对系统进行详细描述。实验方法的局限性在于成本很高,重新配置或共享资源很难

9、,运用起来不灵活。而仿真方法在很大程度上可以弥补前两种方法的不足。仿真方法可以根据需要设计所需的网络模型,用相对较少的时间和费用了解网络在不同条件下的各种特性,获取网络研究的丰富有效的数据。网络仿真无疑提供了一个方便、高效的验证和分析方法,因此网络仿真技术在现代通信网络设计和研究中的作用正变得越来越大1。无线移动网络的迅速发展,特别是Ad hoc网络已成为当今无线移动网络领域研究的热点,使得我们对Ad hoc网络的性能研究变得越来越重要。对于欲建的网络应用系统,网络设计者需要验证其设计方案的可行性,以有效投资建立最优网络环境;对于新提出的网络协议我们需要验证其性能;网络规模越大,网络性能的计算

10、机仿真和性能分析工作越显重要。目前国外网络仿真技术已经相当成熟,已经有几种极为优秀的网络仿真软件。而国内由于起步较晚,并没有自主研发的仿真软件,或者是虽然有自主研发的软件,但是只能够应用于极为狭隘的特定项目,不能够对其他的研究者提供广泛的支持。因此,学习和使用国外现有的一些网络仿真软件,对于现阶段国内的研究者来说,是有极大帮助的2。仿真软件按照发行渠道来划分,有两大类:商业软件和非商业软件。前者的代表有OPNET、COMNETIII,后者则有NS-2、PARSEC、OMNET+等。因为商业化的网络仿真软件,其价格是非常昂贵的,而OMNeT+做为一个具备强大功能的免费仿真软件,是值的作为个人研究

11、之用的研究者利用的。1.2 本文的主要工作本文所做的主要工作是介绍 OMNeT+这个优秀的网络仿真平台,并基于OMNeT+搭建Ad hoc网络环境来进行仿真试验。首先详细介绍如何使用 OMNeT+,尤其是对其NED语言和编程语法等做深入讲解,同时也对OMNeT+的移动框架(MF,Mobility Framework)进行介绍,最后是进行Ad hoc 网络仿真环境的搭建,并在该环境中对在计算机网络中常用来检测网络连通性的的Ping 命令进行了仿真试验,并将对相关的数据进行统计分析。1.3 本文的组织结构本论文的主要目的是介绍OMNeT+及其移动框架,并搭建Ad hoc网络环境进行仿真试验,全文的

12、结构如下:第1章简单地介绍了课题的背景与意义、本文的主要工作,并综述了本文的组织结构。第2章从OMNeT+的应用领域和特点出发,阐述了OMNeT+框架,并对OMNeT+的组成和语法进行了详细的介绍,同时对应用于无线移动网络的移动框架的组成原理进行了讲解。第3章简要介绍了Ad hoc网络的概念、特点、协议栈及应用领域。第4章从Ad hoc网络各层的技术标准入手,参照OSI模型,利用OMNeT+搭建Ad hoc网络仿真环境,并对计算机网络的Ping命令进行了仿真试验。最后结束语部分对所做的工作加以总结,指出所做工作中的不足。第2章 OMNeT+基础2.1 OMNeT+简介网络仿真(Network

13、Simulation)是使用计算机技术构造网络拓扑、实现网络协议的模拟网络行为。它是一种介于试验和计算的技术,通过建立实际系统的数学模型,并按照相同的运行机理模拟物理系统的动态行为。它能获取特定的网络特性参数,进而可对网络性能进行研究和分析,达到改善网络运行状况的目的。它包括网络拓扑仿真、协议仿真和通信量仿真,模拟网络流量在实际网络中传输、交换等的过程。目前,知名的网络仿真软件主要有OPNET,NS2,GIoMoSim,OMNET+。OMNET+(Objective Modular Network Testbed in C+)是由AndrasVarga等1992年开始开发的一种强大的免费网络仿

14、真软件,它是一个跨平台,源码开放的模拟环境,主要用于网络通讯、协议、多重处理机以及分布式处理系统的模拟和评估复杂软件系统性能。OMNET+是基于离散事件的,所谓的离散事件系统是指Event(事件)只是在离散的时间点上发生,产生Event(事件)本身是不需要时间,两个接连的Event(事件)之间没有状态的改变。计算机网络的工作机制正是一个这样离散系统,因此可以用离散事件的仿真工具进行模拟。OMNeT+是一个面向对象的离散事件模拟器,它的全称是Objective Modular Network Tested in C+。它是一种基于模块的,内核源代码完全开放的仿真软件,可以运行于Linux、Win

15、dows及DOS等多种操平台之下。OMNET+可以应用于以下领域:(1)模拟通信网业务流(2)通信协议的仿真(3)排队网络(4)模拟多处理器和其它分布式系统(5)任何离散事件系统它能够建立目前几乎所有网络对象的基本模型之间的互连,并且使复杂的网络通信和拓扑结构得到高度切合实际的模拟和仿真。一个OMNeT+模型是由具有层次结构的模块嵌套而成,嵌套的深度没有限制,这样使用者能够用这些模块建立起真实系统的拓扑结构。模块之间通过传递消息进行通信,同时消息也能够是任意复杂的数据结构。消息既能够直接传到目的地,也能够通过门和信道,按预先确定的路径传到目的端。OMNET+具有以下几个特点:(1)使用C+语言

16、进行仿真,而C+语言具有广大的应用群。(2)提供了一个图形的用户界面,可能动态地观察仿真程序的运行。(3)使用参量的方试,可以不修改源代码和重新编译的情况下,对不同条件下的网络模型进行仿真。(4)可以使用非常简易的NED(Network Description Language)来代替C+完成网络拓扑的描述。(5)可以使用变量观察函数及绘图功能将考察的变量实时地绘成曲线,也可以将仿真结果输到指定文件中,然后再用其提供的工具Plove绘成曲线。(6)对硬件条件要求不高,运行速度较快,只想当于纯粹用C编写的1.3倍,而PARSEC是一个命令行模式的仿真器。总之,OMNeT+一种强大的免费网络仿真软

17、件,它是一个跨平台,源码开放的模拟环境,主要用于网络通讯、协议、多重处理机以及分布式处理系统的模拟和评估复杂软件系统性能。OMNET+是基于离散事件的,计算机网络的工作机制正是一个这样离散系统,因此可以用离散事件的仿真工具进行模拟3。OMNET+具有编程简单,易于掌握等特点,只要用户具有一定的C+语言知识就可以使用。使用它的NED语言可以非常方便地构建一个网络模型,它还提供Plove作为输出参数的观察工具。2.2 OMNET+框架2.2.1 OMNeT+组成OMNeT+主要由六个部分组成:仿真内核库(Simulation Kernel Library,简称Sim),网络描述语言的编译器(Net

18、work Nescription Compiler,nedc),图形化的网络编辑器(Graphical Network Description Editor,GNED),仿真程序的图形化用户接口Tkenv,仿真程序的命令行用户接口Cmdenv,图形化的向量输出工具Plove。Sim是仿真内核和类库,用户编写的仿真程序要同Sim连接,Sim在OMNeT+中占据最为核心重要的地位。下面详细介绍的另外两重要组成部分。1网络描述(NED)语言NED(Graphical Network Description Editor)是模块化的网络描述语言。网络描述包括大量的对组件的描述,如通道,简单和复合模块的

19、类型。这些组件描述可用于各种不同的网络描述中。NED语言用来定义模型中的网络拓扑结构,较为简单的网络拓扑可以使用GNED,但复杂网络的拓扑描述还应该用NED源文件方式书写。2用户接口OMNeT+的用户接口用于实现仿真程序的人机交互,OMNeT+允许模型内部机制对用户可视化,也允许用户启动和终止仿真,并更改模型内部的变量。OMNeT+中的图形化接口是一个用户工具,可方便用户了解模型内部的运行机制。用户接口和仿真内核的交互是通过一个已定义的接口实现的。无需改变仿真内核,就可以实现不同类型的用户接口。同样无需更改模型文件,仿真模型可在不同接口下运行。用户可以在强大图形化用户接口下测试和调试仿真程序,

20、并最后可在简单快速的用户接口中运行,而且该接口支持批处理。目前OMNeT+支持两种用户接口,即Tkenv和Cmdenv。对仿真进行的测试和调试可以在Tkenv接口下进行,Tkenv是一个简便易用的图形窗口化的用户接口,Tkenv支持跟踪,调试和执行仿真的功能。它在执行仿真过程中的任意时刻都能够提供详细的状态信息。Tkenv的主要特征有:各模块的文本输出有其独立的窗口,仿真过程中可以在Tkenv窗口中看到自传消息,支持仿真动画,标记断点,具有检查窗口,可以检查和改变模型中的变量,执行过程中仿真结果的图形化显示并且结果可以用柱状图和时间序列图显示,仿真可重新进行,快照文件用于显示模型的详细信息。C

21、mdenv接口用于实际的仿真实验,因为Cmdenv支持批处理。Cmdenv是一个简便的小型命令行接口,执行速度快。它可以在所有操作系统平台上运行。Cmdenv可以一次批处理配置文件中所有的仿真。2.2.2 OMNeT+框架OMNeT+具有模块化的结构,图2-1是OMNeT+仿真的高层体系结构。图2-1 OMNeT+仿真程序的体系结构图2-1的箭头表示两组件之间的交互,图中共有5个箭头,表示了组件间的5种关系。(1)执行模型和Sim:仿真内核管理将来的事件,当有事件发生时,仿真内核就调用执行模型中的模块。执行模型的模块存储在Sim的main对象中。执行模型依次调用仿真内核的函数并使用Sim库中的

22、类。(2)Sim和模型组件库:当仿真开始运行创建了仿真模型的时候,仿真内核就实例化简单模块和其它的组件。当创建动态模块时,仿真内核也要引用组件库。实现在模型组件库中注册和查寻组件也是Sim的功能。(3)执行模型和Envir:ev对象作为Envir的一部分,是面向执行模型的用户接口。仿真模型使用ev对象来记录调试信息。(4)Sim和Envir:由Envir决定创建何种模型,Envir包含主要的仿真循环,并调用仿真内核以实现必须的功能。Envir捕捉并处理执行过程中发生在仿真内核或类库中的错误和异常。(5)Envir和Tkenv,Cmdenv:Envir定义了表示用户接口的TOmnetApp基类,

23、Tkenv和Cmdenv都是TOmnetApp的派生类。main()函数是Envir的一部分,为仿真决定选用合适的用户接口类,创建用户接口类的实例并执行。Sim和模型对ev对象的调用通过实例化TOmnetApp类进行。Envir通过TOmnetApp和其它类的方法实现Tkenv和Cmdenv的框架和基本功能4。2.3 OMNeT+语法OMNet+是面向对象的离散事件模拟工具,为基于进程式和事件驱动两种方式的仿真提供了支持。OMNet+采用了混合式的建模方式,同时使用了 OMNet+特有的NED语言和 C+进行建模。2.3.1 NED语言NED 语言包含的组件:import 指令,通道定义,简单

24、和复合模块定义,网络定义。此外,NED 语言还可以定义自己的消息(message)格式。具体格式说明如下。1import 指令用于从其它的网络描述文件引入声明。在引入了一个网络描述之后,可以使用该网络的组件,如通道,简单和复合模块等。2通道定义信道只能创建于相邻的层次之间,而不可以跨层建立。换而言只,在一个复合模块内,简单模块之间能建立通道,简单模块与复合模块之间能建立通道,而不允许有一个简单模块与另一个复合模块内的模块之间有通道连接。图2-2 是复合模块中的各模块间通过通道连接的情况。子模块间的互连 子模块与复合模块互连图2-2 通道连接 定义通道有三个可选的参数,即 delay,error

25、 和 datarate,这三个参数必须是常量。delay 是传播延时,单位为秒。error 是位误码率,即错误传输一位的概率。datarate 是通道的传输速率,单位为位/秒,用于计算包的传输时间。下面是一个简单通道的定义。channel ChannelNamedelay 0.008 /secerror le-8daterate 128000 /bit/sec3简单和复合模块定义在 ned 中,主要的实体是模块(module)。模块分为两种,一种是简单模块(simple module),一种为复合模块(compound module)。模块有门(gates),模块之间通过门(gates)进行消

26、息(message)传输。(1)简单模块是网络中最基本的组成部分,是其它模块的基础,它通过自身的参数来表达真实世界的特性,同时它还可以被复合模块嵌套(nesting),并且嵌套的层次是无限的,通过这种方式,可以将外界的任何实体(如节点、交换机等)抽象为一个复合模块。它的定义需要声明其参数和门。简单模块名的首字母应当大写,而参数和门的名称应当小写。下面是一个简单模块的定义。simple SimpleModuleName parameters:/gates:/endsmple简单模块的算法可以访问其声明的参数,参数类型可以定义成 numeric,numeric const(简写为 const),b

27、ool,sring 或者 xml。也可以不定义参数类型,缺省的参数类型为numeric。模块间连接的开始和终止点就是门。门是模块的输入和输出接口,门有两种,即输入门(input gate)和输出门(output gate)。还可以使用门向量,一个门向量包含多个门。消息通过输出门送出而通过输入门进入模块内部。OMNeT+只支持单向连接的门,那么在建立又向信道时,则需要在每端建一个输入门和一个输出门。下面是门在模块中的声明格式。 gate: in:/gatename; out:/gatename;(2)复合模块是由一个和多个子模块组成的。子模块可以是简单模块,也可以是复合模块。同简单模块一样,复合

28、模块也有参数和门,除此之外,复合模块中还需声明复合模块的子模块和连接。最高层的模块称为系统模块或网络。图2-3就是一个包含一层嵌套的复合模块图。下面是复合模块的定义格式。module CompoundModuleparameters:/gates:/submodules:/connections:/endmodule其中parameters,gates,submodules,connections都是可选的。图2-3 复合模块嵌套图4网络定义网络定义声明仿真模型,模型是预先定义的模块类型的实例。在 NED 文件中定义网络模型,可以定义多个网络并在配置文件中选择要仿真执行的网络。2.3.2 简单

29、模块算法实现和消息传递在OMNeT+中,简单模块最终是要用C+语言编写实现的,而模块之间的通信是通过传递消息的方式来实现的。1简单模块算法实现简单模块的算法通过C+语言编写,OMNeT+使用CSinpleModule来直接或间接定义简单模块,再用Define_Module( )或Define_Module_Like( )来注册该简单模块。每个简单模块都必须手动添加该宏,复合模块则由OMNeT+自动添加。CSimpleModule有四个预先定义的成员函数:initialize( )函数,handleMessage( )函数,activity( )函数和 finish( )函数。用户可以对该四个函

30、数重新进行定义,一个简单模块中不能同时有handleMessage( )和 activity( )函数。(1)Initialize( )函数:在初始化消息放入FES(Future Event Set,未来事件集)后,在执行前被调用,初始化成员变量。复合模块的初始化先于其子模块。(2)handleMessage( )函数:handleMessage( )的主要应用于:大规模的模拟环境,比如说几千个Simple Module,用户需要用 handleMessage( )以省下用 activity( )为每个模块划分的栈空间;函数调用比协同程序切换快得多;对于需要维持较大的状态信息的模块或者是多状态

31、的复杂的通信协议,handleMessage( )较适用。采用 handleMessage( )的优势有:占用内存少,无需为简单模块分配独立的栈空间;执行速度快,采用 handleMessage( )的劣势有:本地变量无法存储状态信息;需要重载initialize( );模块设计时不太方便。(3)activity( )函数:它使得用户可以像编写一个进程、线程一样编写一个简单模块。等待消息、延缓执行时间等等。拥有这个函数的多个简单模块作为一系列协同程序协同执行,又称之为协同多任务。手动设置模块栈空间,一般为 16k,如果模块存在递归或本地变量占空间较大的话,可以设置为更大的栈空间。采用 acti

32、vity()的优势有:无需重载initialize();可以将模块作为进程描述。采用 activity()的劣势有:有内存分配问题,主要由于栈的手动分配,成千上万个Simple Module 的分配造成内存不堪重负;运行时负载过重,协同程序间的切换比普通函数调用慢了很多;不是一种较好的编程方式,使用activity( )会导致代码不可靠。(4)Finish( )函数:循环结束后正常中止时被调用,模块的调用顺序刚好与 initialize()相反。在OMNeT+中,事件在简单模块内部产生。初始化阶段,OMNeT+以NED构建网络,调用所有模块的initialize( )函数。activity(

33、)和handleMessage( )用以实现模块的行为,在事件处理时被调用。模拟成功结束时调用 finish()函数,它最典型的应用就是记录下一些模拟时的统计信息。OMNeT用message表示事件,有事件发生的模块就是收到消息的模块。2消息传递在网络仿真中,消息代表帧和数据包。作为发送消息的方式有以下几种(1)一般的发送,两个端口已经在之前进行了连接,当需要进行通信时,可以使用send(cMessage *msg, “outGate”)函数。(2)当需要模拟通讯设备的发送延迟时,可以使用sendDelayed(cMessage *msg,,delay,“outGate”)函数。(3)在网络拓

34、扑定义的时候,两个端口因为几乎没有通信,因此没有进行连接,可是在运行当中去发现有必要发送消息,则可以调用直接发送消息函数 sendDirect(cMessage *msg,dalay,destination,“inGatee”)。(4)在许多仿真实验当中,都需要实现定时器(timer)。比如说,一个通信协议的模块发送出去一个数据包,它必须给自身规定一个超时的时间,在这段时间内,如果没有接收到应答信号,则应该进行超时重发。调用的函数为 scheduleAt(absoluteTime,Message *msg)。有了消息发送,就有相应的消息接收,在OMNET+中,实现消息的接收有两种方式。一种是在

35、线程/协同程序(thread/coroution)的方式。使用者在相应的activity( )函数当中规定了网络模块的所有功能,当仿真程序运行之后,每一个模块用有一个实例,它们相互之间完成通信,这种方式可以提高仿真程序的运行速度,但是当仿真中出现的个数数量较多时,对内存的消耗比较大。另一种就是FSMs(Finite State Machine)的方式,使用者只需要根据网络模块可能出现的有限状态,编写其handleMessage( )函数,并且在程序的初始化阶段发送一个引导作用的消息,整下仿真程序就可以按照你的要求运行下去。通过以上这套机制,OMNET+便给使用者留下了充分发挥的空间,用户可以灵

36、活地使用标准C+语句或者是软件本身定义的几个基本类,完成对目前几乎的有网络模型的模拟和仿真4。2.4 MF移动框架OMNET+移动框架(Mobility Framework)主要用于无线移动网络仿真。这个框架的核心是执行移动节点,动态链接管理和无线信道模型的仿真。我们可以用它提供的基本模块(Basic Module)建立自已的模型,这样能够把注意力放在协议的实现上,而不用处理各种样的模块接口。这个框架能用于以下仿真:(1)固定无线网络(2)移动无线网络(3)分布式(Ad hoc)和集中式网络(4)传感器网纲(5)多信道无线网络(6)其它需要支技移动性和无线接口的网络MF有两个核心成员:一个支持

37、动态连接管理的体系结构(ChannelControl Module,Mobility Module),和一个移动主机模型(Blackboard Module, Mobilyty Module)。下面就这两种结构的组成原理进行解释。2.4.1 主机模型移动主机的内部结构由一个移动模(Mobility Module)和一个黑盒子模块(Blackboard Module)组成。移动模块提供主机节点的地理位置信息和处理主机移动方式等;黑盒子模块被用于不同网络层次之间的通信,它提供与多个网络层次有关的信息,如主机能量状态、无线信号的表示形状和状态等。其它的模块实现相应的ISO/OSI层功能。图2-4是主

38、机模型的结构图。图2-4 主机模型结构图1BlackboardBlackboard支持不同的网络层之间的信息交换(在非相邻层之间,这种传递机制显得尤其方便),就拿物理层来说,它能够监听到信道是否空闲,如果一个MAC协议是基于载波侦听的,那么它就需要知道信道是否空闲这个信息,而Blackboard正好解决了这个问题:物理层将监听到的信息发布在Blackboard上,由于MAC协议在Blackboard上订购了这个变量,这样它就能在Blackboard上获取有关这个变量的值。总之,Blackboard就像一个告示牌,不同的模块在哪里发布信息,而发布的消息可以被任何对它感兴趣的模块访问,它提供了一个

39、信息交互的平台。Blackboard-Access 在Blaceboard中提供订购和发布信息的功能。注意,在Blackboard中,你必须在stage0阶段处理所有的发布请求(publish calls)变量的初始化或赋值,而在stage1阶段处理订购请求(subscribe calls)对变量的引用。这样做能很好地避免在对变量调用时发生混乱,例如当一个变量还没有初始化,却有一个主机在调用它,或者一个参数发生了改变,而引用的值却还是未改变前的值等,而这些错误都是非常难于察觉的。2移动模块Mobility Module有两个主要的任务:一是负责主机的移动方式,(MF内有各种移动方式的可选模块)

40、;二是与ChannelControl模块通信,交换主机节点的位置信息等,由ChannelControl控制主机的所有连接信息。在MF仿真框架的移动体系结构中,有两个关键问题需要考虑:(1)在何处处理移动信息和怎么处理主机的移动方式(2)如何用一个有效的方式来处理主机间的动态连接我们决定在每个主机内采用分布式处理的方式来解决这第一个难题,这样的话,当一个主机决定它往何处移动和怎样移动时,即不会影响到别的主机,也不需要考虑别到的主机,因为他们都是由各自的移动模块决定各自独立的移动方式。第二个难题采用的是集中控制的方式来解决的,因为与ChannelControl模块之间的通信,主要是把有关主机的移动

41、方式、移动轨迹和移动方式等传递给信道控制模块,从而建立和断开主机之间的连接所有,这些都需要从全局考虑,这样就必须需要一个中心控制器来集中管理。2.4.2 信道控制模块信道控制模块(ChannelControl Module)就是一个中心控制器,它是独立于主机的整个仿真模型中只有一个信道控制模块,用于负责在主机的通信范围之内时建立通信信道和当失去连接时拆除通信信道。图2-5 是信道控制模型的结构图。主机之间建立连接需要门,而在OMNET+中模块间的每个连接至少需要两个门(input Gate and output Gate),这样在一个网络中,在最坏的情况下,每个主机创建门的数量是2(n-1)个

42、,这样显然是不可取的。一个有效减少图2-5 信道控制模型图创建的门的数量的方法就是动态创建门,这样门不是在初始化网络时大批量的创建,而是建立在需求的基础上的动态创建。每个主机模块有两个列表,分别用来存储空闲的输入输出门。当ChannelControl想在两个主机之间建立连接时,它首先在门列表中查找是否有空闲的门,只有当没有空闲的门的时候才创建门。链路断开时,ChannelControl拆除连接,同时刚才释放的门加入相应的列表。而信道失去连接,主要有以下原因:一、移动性(主机移动的太远),二、传输能量改变,三、主机冲突。在用MF仿真网络时,不仅仅要考虑主机之间是否有连接,还要考虑主机之间是否还在

43、干涉。在初始化的时候,ChannelControl模块会根据网络的参数,例如信道的载频、最大可能传输能量和其它明确的拥塞参数来等,来决定最大干涉距离,最大干涉距离是一个保守边界,在这个范围内,主机能干扰相邻主机的通信。也就是说,如果两个主机之间的距离大于最大干涉距离的话,那么相互之间就不能进行通信。但必须注意的是,最大干涉距离既不是指定消息能被正确接收的最大距离,也不是指定主机能收到信号的范围。在网络中发送信号的主机有自已的发射功率,它的发射功率可能比指定的最大发射功率要小,那么就有可能达不到理论值,也就到达不了连接的主机节点。在初始化网络时,ChannelControl根据最在大干涉距离计算

44、所有主机之间的连接,同时当主机移动的时候更新连接信息。2.4.3 基本概念在MF中,为了便于各模块之间进行消息处理和各层功能的实现,它对应ISO/OSI七层模型,定义了一些基本的概念。比如在仿真系统中地址的概念,MAC层的实现等,对这些都要有一个全面认识。1地址的概念在OMNET+中,我们用应模块的id( )函数来进行寻址,nic模块的ID用作mac地址,而netwLayer模块的id( )用于网络层寻址。网络层的ID同时也用作应用层的地址。为了得到模块的地址,我们分别在BasicApplLayer,BasicNetwLayer和BasicMacLayer模块提供了myApplAddr( ),

45、myNetwAddr( )和myMacLayer( )函数。同时,ChannelControl模块提供了netw2mac( )函数用作简单的ARP协议,它用于把网络地址解析成MAC地址。当然你也可以通过重新定义BasicNetwLayer的getMacAddr( )函数,来实现自已的地址解析协议。2消息的概念(1)基本消息为了提供基本的功能,如封装和解压,MF为每层提供固定的消息格式。为相应层的消息类型提供了消息域,消息的这些消息域是必需的,只能被继承而不能修改。表2-12-4列出了所有基本消息类中的参数及其意义。表2-1 物理层消息参数表参数名参数意义pSend发射功率channelId传递

46、消息的信道id发送节点的置duration延迟时间SnrControlInfo信噪比信息表2-2 应用层消息参数表参数名参数意义destAddr目的应用层地址srcAddr源应用层地址表2-3 MAC层消息参数表参数名参数意义destAddr目的MAC地址srcAddr源MAC地址channeled传递消息的信道表2-4 网络层消息参数表参数名参数意义destAddr目的网络层地址srcAddr源网络地址seqNum序列号ttl生存时间MacControlInfo告知MAC协议下一跳地址(2)自定义消息如果你需要在消息里添加额外的变量,那么你就必须定义自已的消息,且消息只能从基本消息类继承过来。(3)控制消息类OMNeT+允许定义控制消息类(Control Information classes),它用于往消息里添加与下一步处理层有关的元消息,当相关层收到消息时,就清除和处理这些元消息。例如AirFram 和 NetPkt就有这些控制消息,SnrContrlInfo被用来传递衰减信息给decider,以便于它能根据衰减程度来计算相应消息的误码率。MacContrlInfo包含消息传递的下一跳的MAC地址。3网络接口卡的概念网络接口卡(NIC

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服