论文研究-Linux系统上AODV协议实现的分析 .pdf

所需积分/C币:7 2019-08-18 07:27:06 414KB .PDF
收藏 收藏
举报

Linux系统上AODV协议实现的分析,齐朝霞,,无线Ad hoc 网络是一种不需要基础设施的自组织和自管理网络,网络中所有的节点同时具有终端和路由器的功能。因此无线自组网的一个重�
中国科技论文在线 http://www.paper.edu.cn 它路由协议来替代现有的路由协议。 4. Linux上AODV协议实现方案 41实现框架 在本文对AODV路由协议实现的方案中,将尽可能的利用 Linux操作系统现有路由机 制。实现方案不改变Linuⅸ操作系统的分组转发功能模块,而是利用它的分组转发功能模块 的实现机制,巧妙的用我们自己的分组寻路功能模块来替换 Linux操作系统现有的分组寻路 功能模块。 方案的基木实现思路是:用 NETFILTER上的钩子函数时刻监测需要发送的数据报, 旦没有路由,就用 Netlink来通知用户态发起AODⅤ路由查询。考虑到程序的移植性和扩 展的方便性。拟在用户空间实现AODV的寻路功能 AODⅤ路由协议实现的方案,按逻辑功能上可以分成三个主要部分:第一部分是接口 部分,第部分是AODⅴ路由算法部分,第三部分是内核模块部分。其中,前两部分是在 用户空间实现的,第三部分是内核空间实现的。具体结构如图2所示。 AODV程序 内核态工作模块 用户态工作模块 接口程序 AODV算法程序 图2 Linux上AODV协议实现框架 第一部分:接口部分 接口部分的主要功能是利用 Linux系统提供的应用程序接口,为实现AODV路由协议 提供所需要的各和信息和服务。我们借助用户分组数据的发送过程,来分析这部分的功能 在实现方案里,我们使用 NETFILTER功能框架,实现数据包过滤和处理。其框架如图3所 小: 中国科技论文在线 http://www.paper.edu.cn PRE-ROUTE 静态路由 FORWARD POST-ROUTE 静态路由 LOCAL IN LOCAL OUT 图3 NETFILTER功能框架 当用户分组到达的时候,在 NF IP PRE ROUTING函数处,肯定是原先就存在路由, 只需要顺着内核路由衣的内容接着发送就好,这吋候只可能出现原先仔在的路由断丌,以至 于找不到路由,缓存数据分组,这时候就发起 local- repair的请求。在 NF IP LOCAL OUT 函数处,是检测钶一个由本机发出去的数据包,这时候如果没有路由,缓存数据分组,然后 就由原节点即本机发起路由查找程序 第二部分:AODV路由算法 从第一部分提取出用户分组数据分组的目的节点址,就可以有足够的信息来进行AODV 路由查找了。这部分涉及到RREQ的广播,RREP,RERR帧的处理等等。这部分的功能就是 实现AODV路由协议,基本上不涉及和 Linux的交互性问题。 AODV各种数据帧的接收和发送可以利用普通的UDP套接口实现就可以,根据AODV 协议,套接∏使用的是UDP协议在654端∏进行收发。每当收发个帧,都需要对相应的 数据结构进行更新。在各种数据结构中,最重要的个时间队列。各种AODV事件的管理 用了一个时间队列,每个事件发生的时候,都需要更新这个队列。这个队列记录了这个事 件的超时时间。插入时间队列的时候,根据要求发生时间在前的事件插在队列的前面。然后 恨据这个事件队列,建立一个计时器,用事作队列最前头的这个事件的时间来更新这个计时 器。这样,每当到了预期的超时时间,计时器将触发中断,这样,调用相应的程序进行处理 第三部分:时间的提取 无线自组网的拓扑结构因为是动态变化的,所以它的路由协议都有一个时间要求,每一 条路径都有一个有效时间,如果超过这个时间路径没有史新,就需要将这条路由标记为不可 用。AODⅤ路由协议也一样。它要求记录每条路径的最后使用时闩,如果空閑时冋超过一 定的时间,就需要将这条路由标记为不可用。 为了实现这个功能,程序利用了 Linux内核2.4以上版本的挂钩(hook)功能。程序就 是利用这个特征,通过在 POST ROUTEHOOK上注册一个函数,每次检查出去的数据分组, 根据地址信息记下每条路由的最后使用时间 记录下的每条路径的最后使用时间,调用 Nctlink套接口发送时间数据到用户态,创建时 间列表保存路由的最后使用时间。当需要的时侯可以随时查询。 这个部分是相对独立的一部分,在内核空间利用加载模块技术实现 42AODV协议实现的难点及其解决方法 4.21发起路由查找过程 传统的有线网络能够很好的适合前面阐述的 Linux系统的路由实现方案。实际上,主动 中国科技论文在线 http://www.paper.edu.cn 的无线自组网路由协议也能跟 Linux系统自身的路由方案很好的适应。然而,按需的无线自 组网路由协议却无法用上述框架实现。因为在传统的分组转发功能模块中,当数据分组在找 不到相匹配的路由表项的时候,操作系统将简单的把这个数据分组抛弃。这个特点给我们实 现ΔODⅴ协议带来了困难,因为AODⅴ是按需路由协议,在找不到路由表项的时候,不能 将数据分组抛弃,而应该发起路由查找过程,寻找到目的节点的路由。 在实现中,我们充分利用 Linux系统现有的功能,不修改其分组转发功能模块,而仅仅 改变它的分组寻路功能模垬,用ΔODⅤ路由协议的逻辑算法替换现有的分组寻路功能模块。 路由协议的分组寻路功能模块既可以在内核中实现,也可以在用广空间实现,在用户空间寻 找到正确的路由以后,再将路由传递到内核中,供分组转发功能模块使用。在内核中实现和 在用户空间实现,各有自己的优缺点。在内核中实现的优点在于能够以更快的速度工作,因 为它不需要在内核层和用户层之间交换数据。同时,在内核中实现可以用更方便的方法操作 数据分组的IP头部域,使得可以根据协议的内容方便的修改IP头部信息。然而,在内核实 现的缺点也很明显,它増加了内核态的资源占用,降低了整个系统核心的性能。同时,在内 核中实现调试相对困难,开发周期要长,且在移植性兼容性上不如在用户层开发的程序。综 合考虑后,我们采用在用户空间实现分组寻路模块。 在实现中,在 NF IP LOCAL OUTL挂上钩子函数检测每一个出去的数据包如果没有 路由,就缓仔这个数据分组,提取出目的节点址,用 Netlink发起AODⅤ路由查找过程。如 果AODV成功查找出到目的节点的路由,则将这条路由插入到内核路由表中,然后将缓存 的数据分组发送。如果没有找出路径,就将缓存的数据分组释放,通知源节点出错。 422记录每条路由的最后使用时间 无线自组网的按需路由协议通常自己保存有一个路由表,这个路由表的每一项都有一个 定时器与之相关联。当定时器到期以后,意味着路由表项过期了,则应该将这个路由表项删 除或者标记为过期不可用。AODⅴ路由办议需要记录每条路径的最后使用时间,而问题是, 系统自身并没有提供每条路径的最后使用时间给用户。这个信息必须自己提取。 为了提取每条路由的最后使用时间, POST ROUTE HOOK上注册一个函数。每次检查 岀去的数据分组,根据地址信息就可以记下每条路由的最后使用时间,从而提供AODV路 由协议所需要的每条路由最后使用吋间。 42.3对路由表和网络接口的操作 在实现方案中,我们将不修改Linuⅸx自身的分组路由转发功能。因此我们需要做的是: 根据分组寻路模块计算的路由结果,修改Linx内核中的路由表。在实现方案中,我们将有 两个路由表,一个是内核的 Linux自带的我们称为内核路由表:另外一个是自己在用户层自 己建立的,我们称为AODV路由表。 内核路由表,是 Linux自身的分组路由转发模块工作的基础,我们没有对其表项结构进 行仼何修改,以保持通用性和可栘植性。ΔODⅴ路由表结枃是根据AODV协议构造的,记 录了每条路由的目的序列号、到目的节点的跳数等信息,分组嵱由寻路模块需要利用这些信 息,来进行正确的路由査找。程序对用户层的路由表定义了各种操作函数,因为分组路由寻 路模块和AODV路由表都是在用户空间实现的,它们之间可以很方便的进行信息父互。对 内核路由表则不一样,它们之间涉及内核和用户空间之间的交互,不能直接交换信息。程序 利用 Linux的 Netlink来操作 Linux内核路由表。 中国科技论文在线 http://www.paper.edu.cn 424信息的发送和接收 在AODV路由协议的实现过程中,需要进行多种数据分组的发送和接收。一种是从应 用程序来的用户分组的接收、缓存和转发;种是AODV协议帧的单播发送和接收:还有一种 是AODV协议帧的广播发送和接收。 从应用程序发岀的用户分组,在经过路由表的时候,按缺省的路由发送到了TUN设备, 这是个TUN文件套接∏,程序可以使用各种沇操作函数,从这个虚拟的设备中接收数据 接收的用户分组数据存储在一个散列(hash)表中。在实现中,利用用户分组数据的目的节点 作为关键字,将正在进行路由査找过程的用户分组数据缓存在一个散列表中。 当路由查找过程完成的时候,需要根据路由查找的结果,对缓存在本机的用户分组数据 进行处理。如果成功寻找到目的节点的路由,则修改内核路由表以后,用Linx的原始套接 口( raw socke将缓存的用户分组重新发送出去 在AODV协议的实现过程中,程序需要在两个套接口上侦听数据帧的到达,一个是TUN 套接口,这个套接口到达的是来自应用程序用户分组;另外一个是在654端口上的UDP套接 口,这个套接口是接收和发送AODⅤ协议帧。处理这种套接口复用的问题,程序不可能采 用不停循环坏扫描的办法来在这两个套接口上侦听,因为这种CPU的廾销太大了。而应该让 程序平吋阻塞在套接∏输入上,等待数据的到达,在等待过程中将CPU让出。当有输入到 达,则离开阻塞状态,调用对应套接口的接收处理进程。 处理这和多套接口复用的问题,通常有两种方法。一种是使用线程,另一和就是使用 Select系统调用。在 Linux系统中,从移植性、编程和维护的难易度、以及性能上考虑, 使用 Select都具有一定的优势。所以,我们采用 Select来实现。 Select函数允许进程指示內 核等待多个事件中的仟何一个发生,并仅在一个或者多个事件发生或经过指定的时间后才将 进程唤醒。这个函数通知内核我们对哪些描述字的哪些事件感兴趣,以及等待多长的时间。 当感兴趣的描述字上发生感兴趣的事件后,将进程唤醒。这里的描述字不仅仅局限在套接口 任何描述字都可以 5.结论 本文介绍了应用于无线自组织网络的AODV路由协议的工作原理,以及 Linux系统的网 终框架,在其分析基础上提出了AODV路由实现方案。最后对实现方案中的难点进行了逐条 分析,验证了基于无线局域网设备,在 Linux系统上实现AODⅤ路由算法的可行性。 参考文献 [1 IETF MANET Working Group. Ad hoc On-Demand Distance Vector(AODV) Routing draft-ietf-imanet aodv-08.txtLeB/ol.http:/tools.ietforg/html/draft-ietf-manet-aody-08,2001.3 [2]郑相全著.《无线自组网技术实用教程》[M],北京:清华大学出版社,20046 [3]毛德操,胡希明著.《 Linux内核源代码情景分柝》[M,浙江:浙江大学出版社,2001.5 [4](美) Jonathan Corbet, Alessandro rubini, Greg Kroh- Hartman.《 Linux设各驱动程序(第三版)》M.魏 永明,耿岳,钟书毅译,.北京:中国电力出版社,2006.1 「5](美) W. Richard Stevens, Bill Fenner, Andrew M. Rudo’.《Unⅸx网终编程(第三版)》「Ml.杨继张译.北 京:清华大学出版社,2006.1 6 中国科技论文在线 http://www.paper.edu.cn THE ANALYSIS OF IMPLEMENTING AODV ROUTING PROTOCAL ON LINUX OS Qi zhaoxia hool of Information and Communication Engineering, Beijing University of Posts and Telecommunications, Beijing(100876) Abstract The wireless Ad hoc network is a network that is self-organizing, self-management, and doesnt need any basic equipment, every node in the network works as a terminal and a router. So routing is a very important searching field in wireless self-organizing network. In order to adapt various occasions, people has designed many routing protocols and AODV(Ad hoc On-Demand Distance Vector) is one of these. The MANET WG (Mobile Ad hoc Networks Working Group) of IETF (Internet Engineering Task Force)recommends AodV to users, because of its simplicity practicality and good performance This article introduces how to implement AODV routing protocol on Linux OS. First, the fundamental principles of AODV routing protocol is described, then, the network framework and routing implementation scheme of Linux OS is presented, based on which an implementation method of AOdV is proposed and realized. The implementation framework can be divided in to three main parts One part is the interface with Linux OS, another is the inside-kernel module which is used to record the last used time of every routing, and the third part is the realization of Aodv logic algorithm Keywords: AODV Wireless self-organizing networks Route Linux 作者简介 齐朝霞,女,1984年生,硕士硏究生,专业方向为移动通信与宽带信 息网络 7

...展开详情
试读 7P 论文研究-Linux系统上AODV协议实现的分析 .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
  • 至尊王者

    成功上传501个资源即可获取
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
论文研究-Linux系统上AODV协议实现的分析 .pdf 7积分/C币 立即下载
1/7
论文研究-Linux系统上AODV协议实现的分析 .pdf第1页
论文研究-Linux系统上AODV协议实现的分析 .pdf第2页

试读结束, 可继续读1页

7积分/C币 立即下载 >