基于ns2的无线自组网路由协议的研究与仿真毕业论文内容摘要:
事件调度器和数据通道上的基本网络组件对象都使用 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/tcp10 端口 ),代理知道与它相连的节点,以便把分组转发给节点,它也知道分组大小,业务类型,目的地址。 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 来建立一个以目的节点为根的有向非循环图。 这样链路根据相邻两个节点的高度值来确定向上或向下的方向。 路由协议性能评标准 主要包括以下几个方面的指标 [8]: ( 1)丢包率:网络中数据传输是以发送和接收数据包的形式进行的,理想状态下发送了多少数据分组就能接收多少数据分组,但是由于信号衰减、网络质量等诸多因素影响下,可能产生数据分组丢失。 在单位时间内未收到的数据分组与发送的数据分组的比率就是丢 包率,当然这个数字越小越好。 丢包率的计算公式 见式( )。 丢包率 =发送分组数未接收到的分组数 ( ) ( 2)端到端平均时延: 指单位数据包从源节点到目的节点所用的时间,时延越小,说明响应 越快,网络质量越令人满意。 该统计量反应了网络的拥塞状况,计算公式见式( )。 端到端平均时延 =数据包总数 所用时间源节点数据包成功传输 ( ) ( 3)路由 开销: 单位数据包个数所引起的额外路由分组个数,包括 RREQ( Route Request,路由请求)、 RREP( Route Reply,路由应答)、 RRER( Route Error,路由错误)等,该统计量反应了路由协议的效率,计算 公式见式( )。 路由 开销 =发数的数据分组数发送的路由分组数 ( ) ( 4)平均吞吐量:该参数是在接收数据时由网络层的上层。基于ns2的无线自组网路由协议的研究与仿真毕业论文
相关推荐
果有故障发生,阻碍分组到达远程系统,或者服务器不接受连接,客户都会得到通知 :数据可靠的交付,故障而不能交付,发送方会得到通知;具有流控的传输;双工的传输,单个 TCP 连接允许同时双向传送数据流模式, TCP从发送方到接收方发送没有报文边界的字节。 如果 IP 数据包中有已经封好的 TCP 数据包,那么 IP 将把它们向上传送到 TCP 层。 TCP 将包排序并进行错误检查
搭建网上交易和 管理 平台。 [关键词]网上购物 php MySQL 计算机 与网络 — 638— 科技 信息 是通过学生对内容的访问情况进行学习态度的反 馈或者通过对平台考试结果的数据分析,生成统计报表。 教师通过教学平台控制或引导学生的学习进程。 根据学生学习 情况、硬指标,对课程内容进行选择性发布,引导学生进行自主学习,避 免学生在丰富的教学资源中迷失方向。 四、结束语
功能结构 图 个人网站 前台首页 后台首页 登 录 说说 日志 留言板 相册 友情链接 说说 日志 留言板 相册 友情链接 查看说说 评论说说 查看日志 评论日志 查看留言 评论留言 查看相册 查看链接 发表说说 回复评论 删除说说 发表日志 管理日志 发表留言 管理留言 管理相册 查看链接 修改日志 删除日志 回复评论 回复留言 删除留言 创建相册 删除相册 管理照片 上传照片 删除照片 12
0x04 // 自动重发功能设置 define RF_CH 0x05 // 工作频率设置 define RF_SETUP 0x06 // 发射速率、功耗功能设置 define STATUS 0x07 // 状态寄存器 define OBSERVE_TX 0x08 // 发送监测功能 define CD 0x09 // 地址检测 define RX_ADDR_P0 0x0A // 频道 0
写作 –独家原创 16 / 59 各位领导、各位同事: 大家下午好。 我是 XX,今天演讲的题目是《不忘初心,方得始终》。 最近,我总是在回忆,想念平淡而又充实的大四。 去年的今天,我和所有小伙伴一样,纠结于 考研、工作。 那时候,总觉得时间还很长,足够慢慢去挥霍,也想象不了一年后的今天。 我们常常因为走得太远和时光老去,就忘记当初为什么出发。 我们是新考入的财务工作者,更因铭记习总书记 “20
用异步式 I/O 与事件驱动的架构设计。 传统架构对于高并发的解决方案是采用多线程模型,也就是一个系统线程处理一个业务逻辑,通过系统线 程切方式弥补同步式 I/O 的时间开销。 采用的是单线程模型通过异步式的请求方式处理 I/O 调用,减少了切换上下文次数所造成的开销。 运行的过程中将管理一个事件堆栈,不断地循环执行事件然后等待下一个事件的触发。 异步式 I/O 请求完成后将被推送到事件队列