基于ns2的无线自组网路由协议的研究与仿真本科毕业论文(编辑修改稿)内容摘要:

Simulator Version2) 是一款开放源代码的网络模拟软件,最初由加州大学伯克分校 ( UC Berkeley) 开发。 它最初的开发目的是为了研究大规模网络以及当前和未来网络协议的交互行为。 它为模拟研 究有线和无线网络上的 TCP/IP、路由和多播等协议提供了强有力的支持。 NS2 是一个开放源代码软件,任何人可以获得、使用和修改其源代码。 正 因为如此,世界各地的研究人员每天都在扩展和更新它的功能,为其添加了新的协议和功能。 它也是目前网络研究领域应用最广泛的网络模拟软件之一。 NS2 来源于 1989 年的 Real NetWork Simulator 项目,经过多年的发展,于1995 年得 到 Xerox 公司的支持,加入 VINT 项目。 NS2 一直以来都在吸收全世 8 界各地研究者的成果 [4]。 NS2 是一款面向对象的、离散事件驱动的网 络模拟器,可以完整地模拟整个网络环境。 NS2 使用一整套 C++类库实现了绝大多数常见的网络协议以及链路层的模型,利用这些类的实例就可以搭建起整个网络的模型。 NS2 使用了被称为分裂对象模型的开发机制。 采用 C++和 OTcl两种开发语言进行开发。 它们之间采用 TclCL 进行自动连接和映射。 考虑效果和操作便利等因素, NS 将数据通道和控制通道的实现相分离。 为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用 C++编写,这些对象通过 TclCL 映射对 OTcl解释器可见。 NS2 可以说是 OTcl 的脚本解 释器,它包含模拟事件高度器、网络组件对象库等。 事件调度器控制模拟进程,在适当时间激活事件队列中的当前事件,并执行该事件。 网络组件模拟网络设备或节点的通信,它们通过制定模拟场景和模拟进程,交换特定的 分组来模拟真实网络情况,并将执行情况记录到日志文件中,供用户 分析解读,获取模拟结果。 NS2 采用这种分裂模型既提高了模拟效率,加快了模拟速度,又增强了模拟配置的灵活性和操作的简便性。 NS2 是在 UNIX 系统上开发的,因此可以在 UNIX 和类 UNIX 系统上安装。 另外, NS2 也可以在 Windows 平台上运行。 表 和表 是不同平台对 NS 的支持情况。 表 不同平台对 NS2 的支持情况 TclTK OTcl TclCL Ns Nam xgraph cweb sgb Gtitm and sgb2ns zlib Pc+Windows Y Y Y Y Y N Y N N N Pc+Linux Y Y Y Y Y Y Y Y Y Y 注: Y——支持, N——不支持。 9 表 综合比较 Windows 和 Linux 对 NS2 的支持情况 平台特点 安装过程 模块支持 使用过程 Pc+Windows 优点:界面友 好,人性化设计,网络及硬件支持良好,应用程序丰富。 缺点:代码冗繁,系统稳定性及自身修复能力差。 未安装 Cygwin 时只可用 from all the pieces 方式安装,较为复杂。 安装 Cygwin 后可用 allinone 方式安装较为简单。 支持 NS2 的必选软件模块,但对可选模块的支持性差。 容易引发较多问题,相关帮助文档及可咨询信息较少,解决问题难度较大。 Pc+Linux 优点:源代码开放,界面友好,网络功能丰富,较稳定。 缺点:应用软件及硬件驱动程序缺乏。 可选用 from all the pieces 或 allinone方式安装,较为简单。 对 NS2 的必选模块和可选模块支持性良好。 由于 Linux 完全开放源代码的特性,可根据需要任意修改源代码。 相关帮助文档及论坛较多,可获得的帮助较多,使问题解决较为容易。 NS2 组成部分 ( 1)离散事件调度器( Scheduler):调度器是仿真器的心脏,它记录当前时间,调度网络事件链表中的事件。 它有一个静态成员变量 instance,供所有的类访问同一个调度器,提供函数产生新事件,指定事件发生的时间。 目前 NS2 支持四种事件调度器,分别为链表式( linkedlist)、堆式( heap)、时间队列式( calendar)和实时( realtime)调度器,其中时间队列式为默认的事件调度器。 ( 2)事件处理器 (Handler): Handle 是所有处理事件类的基类,它只是一个虚拟函数,每个继承类实现自己的功能。 ( 3)节点( Node):节点是对实际网络中分布在不同地理位置的主机、交换机、路由器等网络设备的统一抽象,是构成网络拓扑结构的一个重要组成部分。 ( 4)链路 (Link):链路用来连接节点和路由器。 一个节点可以有一条或多条输出链路 (如路由器 ),所有的链路都以队列的形 式来管理分组到达、离开或丢弃,统计并保存字节数和分组数。 另外还有一个独立的对象来记录队列日志。 ( 5)代理 (Agent):代理是实际产生和消费分组的对象,它们属于传输层实体,运行在端主机,节点的每一个代理自动被赋与一个唯一的端口号 (模拟 udp/tcp 10 端口 ),代理知道与它相连的节点,以便把分组转发给节点,它也知道分组大小,业务类型,目的地址。 Agent 类是各种 UDP/TCP 实现类的基类,代理被保存在一个称为 demux 的链表中。 ( 6) NS 对象 (NsObject): NsObject 是所有网络实体的基类,包括节点 、链路、代理,业务记录 (Trace)和数据源等。 节点、链路、代理同时继承了 NsObject和事件处理器类,因为这三种对象要处理多种事件,其他对象则不需要。 ( 7)匹配器类 (Matcher):匹配器类用来标识有实例对象生成的类,用户给出标识匹配 器 类的关键字,匹配 器 类返回相应的新建对象。 匹配器类被定义成静态的,只允许一个实例对象 [5]。 NS2 模拟基本流程 图 NS2 进行网络模拟的基本流程 是 否 否 否 是 是 问题定义 修改源码。 修改源码 编写 Tcl 脚本 执行模拟 分析结果 结果满意。 分析问题 重新编译 NS 编译通过。 调试 结束 开始 11 使用 NS2 进行网络模拟的基本操作流程如图 所示。 整个模拟过程主要有三个部分:一为修改源码,二为编写 Tcl模拟脚本,三为分析结果。 ( 1)源码修改:这一步只有在模拟需要修改源代码时才进行考虑。 ( 2) Tcl/OTcl 模拟代码编写:这是 NS2 模拟中最重要和必不可少的环节,大部分 NS2 的模拟工作实际就是编写 Tcl脚本代码来描述网络结构、网络构件属性和控制调度网络模拟事件的启停过程。 ( 3)模拟结果分析:结果分析是真正体现模拟工作成效的重要一环,模拟结果分析主要是对 trace 文件进 行分析。 4 无线自组网路由协议 在 无线自组网 中,节点 的 移动导致网络拓扑结构 的 不断变化。 如何迅速准确地选择到达目的节点的路由,是 无线自组 网的一个重要和核心的问题。 无线自组网与传统移动通信网络的区别 在无线局域网中,移动节点配有无线网卡,通过无线接入点连接到固定网络,因此,无线局域网可以看成单跳网络;而无线自组网则是一个多跳的网络,终端主机一方面作为主机,另一方面作为路由 器 运行路由协议,参与分组转发和路由维护。 因此,无线自组网与传统移动通信网络在路 由选择方面有很大的差异,必须采用合适的路由协议以解 决路由选择问题。 无线自组网路由协议分类 根据源端何时获得路由信息,可以将路由分为两大类,如图 所示。 一类是基于路由表驱动( Table Driven)的路由协议。 在这种协议中,每个节点试图维护到所有已知目的节点的路由表,节点之间周期性或在网络拓扑改变时交换路由信息,由此减少了获得路由延时,能够立即判断目的节点的可达性,但是耗费了网络资源。 第二类是按需驱动( OnDemand Driven)的路由协议,包括路由发现和路由维护两个过程。 这种路由协议平时并不实时地维护网络路由,只有在节 点有数据要发送 时才激活路由发现机制寻找到达目的节点的路由。 它不需要花费资源来维护无用的路由,但路由发现过程比较昂贵而且不可预测 [6]。 12 图 无线自组网路由协议分类 几种典型的无线自组网路由协议 目的序列距离矢量路由协议 DSDV DSDV(DestinationSequenced DistanceVector)是基于经典 BellmanFord 路由选择过程的改进型路由表算法。 DSDV 以路由信息协议为基础。 是无线自组网协议发展较早的一 种。 使用 DSDV 时,网络中的每一个移动节点都需要维护一个路由表。 路由表表项包括目的节点、跳数和一个由目的节点注明的序列号,序列号能帮助节点区分有效和过期的路由信息,并可防止路由环路的发生。 标有更大序列号的路由信息总是被接收。 如果两个更新分组有相同的序列号,则选择跳数最小的,使路由最优(最短)。 每个节点必须周期性地与邻节点交换路由信息,当然也可以根据路由表的改变来触发路由更新。 路由表更新有两种方式:一种是全部更新,即拔掉更新消息中将包括整个路由表,主要应用于变化较快的情况;另一种是增量更新,更新消息中仅包含 变化的路由部分,通常适用于变化较慢的情况。 按需平面距离矢量路由协议 AODV AODV(Ad hoc Ondemand Distance Vector Routing)由 DSDV 发展而来,不同的是 AODV 为反应式路由协议。 源节点首先广播一个携带目的节点信息的路由分组( RREQ),其邻居节点依次向周围节点广播此路由分组,广播 RREQ 前会无线自组网路由协议 表驱动路由协议 按需驱动路由协议 DSDV CGSR WRP DSR TORA AODV 13 建立此节点到源节点的路由,直到路由分组到达目的节点或者一个中间节点,这个节点包含目的节点的路由信息,就不再广播 RREQ。 此过程中,会建立一个从源节点到目的节点的反 向路由,也就是从目的节点到源节点的路由。 然后该节点将沿着反向路由发回一个 RREP, RREP 到达源节点后路由发现过程结束。 为避免路由循环,每一个路由分组中都包括一个 sequence ID( SID)作为唯一标识,如果一个节点收到一个 SID 比它当前保留的 SID 小的数据包,表明该数据包是过时的,它将不予处理,而是简单的丢弃。 发现多条路由时,源节点会选择一条SID 大、跳数少的最优路由。 源节点移动后会重新启动路由发现过程,中间节点移动,那么其邻居节点会发现链路失效并向上游节点发送链路失效消息( RERR),一直传到源节 点,然后源节点重新发起路由发现,或者也可以由发现链路失效的节点自己发起路由发现,此称为自修复。 只要路由是活动的,路由表就要一直维护下去。 活动的意思是有数据包从源节点发往目的节点,如果链路上不再有数据包传递,一段时间之后,链路就会过期,最终路由信息将会从中间节点的路由表中删除 [7]。 动态源路由协议 DSR DSR(Dynamic Source Routing)是一种基于源路由的按需路由协议,它使用源路由算法而不是逐跳路由的方法。 DSR 主要包括两个过程:路由发现和路由维护。 当源节点 S 向目的节点 D 发送 数据时,它首先检查缓存是否存在未过期的到目的节点的路由,如果存在,则直接使用可用的路由,否则启动路由发现过程。 具体过程如下:源节点 S 将使用洪泛法发送路由请求消息( RREQ), RREQ 包含源和目的节点地址以及唯一的标志号,中间节点转发 RREQ,并附上自己的节点标识。 当 RREQ 消息到达目的节点 D 或任何一个到目的节点路由的中间节点时, D 或该中间节点将向 S 发送路由应答消息( RREP),该消息中将包含到 S到 D 的路由信息,并反转 S 到 D 的路由供 RREP 消息使用。 此外,中间节点也可以使用路由缓存技术( Routing Cache)来对协议作进一步优化。 临时 排序 路由算法 TORA TORA(Temporally Ordered Routing Algorithm)协议称为临时排序路由算法,是一种源初始化按需路由选择协议,它采用链路反转的分布式算法,具有高度自适应、 高效率和较好的扩充性,比较适合高度动态移动、多跳的无线网络,其主 14 要特点是控制报文定位在最靠近拓扑变化的一小部分节点处,因此节点只保留邻近点的路由信息。 该算法中路由不一定是最优的,常常使用次优路由以减少发现路由的开销。 TORA 协议包括 3 个基本模块:路由 的创建、路由的维护和路由的删除。 在路由的建立和路由维护过程中,节点应用“高度” Metric 来建立一个以目的节点为根的有向非循环图。 这样链路根据相邻两个节点的高度值来确定向上。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。