(通信与信息系统专业论文)基于arm的无线ap实现.pdf_第1页
(通信与信息系统专业论文)基于arm的无线ap实现.pdf_第2页
(通信与信息系统专业论文)基于arm的无线ap实现.pdf_第3页
(通信与信息系统专业论文)基于arm的无线ap实现.pdf_第4页
(通信与信息系统专业论文)基于arm的无线ap实现.pdf_第5页
已阅读5页,还剩57页未读 继续免费阅读

(通信与信息系统专业论文)基于arm的无线ap实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 本文主要研究w l a n 和a p 两种无线系统及其相关技术,设计出了基于嵌入 式a r m 平台的无线a p 方案。鉴于l i n u x 系统源代码的开放性,研究时采用嵌入 式l i n u x 系统作为平台,大大减少了a p 开发的工作量。最终利用软件和无线网卡 在嵌入式a r m 平台上实现了一种无线a p ,它同时具有两个无线接口,其中一个 用于与其他无线a p 之间通信,所有的无线a p 构成一个无线m e s h 网络,通过a o d v 协议维护它们之间的路由,并且通过一个网关节点接入i n t e m e t 。另外一个接口用 于与w l a n 终端的通信,为终端提供间接的、多跳的到i n t e m e t 的接入,独立的 台a p 与w l a n 终端构成基础模式的无线局域网。最后,本文在实际测试中搭 建了一个基于嵌入式a r m 平台的无线a p ,实现了上述功能并验证了本文中基于 a r m 的无线a p 设计方案的正确性。 关键词:a r ma pw l a nm e s ha o d v a b s t r a c t t w ow i r e l e s ss y s t e m so fw l a na n da p 、耐t ht h e i rr e l a t e dt e c h n o l o g i e sa l em a i n l y s t u d i e di nt h i st h e s i s ,aw i r e l e s sa pb a s e do ne m b e d d e da r m p l a t f o r mi sd e s i g n e d d u e t ot h eo p e ns o u r c ec o d eo fl i n u xs y s t e m ,e m b e d d e dl i n u xi su s e da st h ep l a t f o r mt o g r e a t l yr e d u c et h ew o r ko f t h ew i r e l e s sa pd e v e l o p m e n ti nt h i st h e s i s ak i n do fw i r e l e s s a pw h i c hi sb a s e do ne m b e d d e da r m p l a t f o r m , s o f t w a r ea n dw i r e l e s sn e t w o r kc a r dh a s b e e ni m p l e m e n t e d i th a st w ow i r e l e s si n t e r f a c e o n eo ft h e mc a l lc o m m u n i c a t ew i t ha n y o t h e ra p am e s hn e t w o r ki sc o m p o s e do fa l lt h e s ea p sb yu s i n ga o d vr o u t i n g p r o t o c 0 1 t h i sm e s hn e t w o r kc a na c c e s st oi n t e r n e tt h r o u g hag a t e w a y n o d e t h eo t h e r i n t e r f a c ei su s e dt oc o m m u n i c a t ew i n lt h ew l a nt e r m i n a l i tp r o v i d ei n d i r e c t , m u l t i - h o p a c c e s st ot h ei n t e r n e tf o rt h et e r m i n a l a ni n f r a s t r u c t u r ew l a ni sc o m p o s e do fa n i n d e p e n d e n ta pa n dt h ew l a n t e r m i n a l a tt h ee n do ft h i st h e s i s ,aw i r e l e s sa pb a s e d o ne m b e d d e da r mp l a t f o r mi ss e tu pi nt h ea c t u a lt e s te n v i r o n m e n tt oa c h i e v et h e f u n c t i o na b o v e ,t h er e s u l tc o n f i r m st h a tt h ed e s i g no ft h ew i r e l e s sa pb a s e do n e m b e d d e da r m p l a t f o r mi nt h i st h e s i si sc o r r e c ti n d e e d k e y w o r d s :a r ma p w l a nm e s ha o d v 西安电子科技大学 学位论文独创性( 或创新性) 声明 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名:) 型! 日期2 1 ! :习:压 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位届西安电子科技大学。学校有权保 留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内 容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后 结合学位论文研究课题再撰写的文章一律署名单位为西安电子科技大学。 ( 保密的论文在解密后遵守此规定) 本学位论文属于保密,在一年解密后适用本授权书。 本人签名: 通! 断 日期盈止:蔓:! f 导师签名: 茧l 序岔 i t 期卫生。! 玉丛一 第一章绪论 第一章绪论 1 1 课题研究的背景及现状 1 1 1 嵌入式系统的应用及研究现状 嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、 可靠性、成本、体积、功耗严格要求的专用计算机系统f l o 2 3 1 2 4 】【2 6 】。它一般由以下 几个部分组成:嵌入式微处理器、外围硬件设备、嵌入式操作系统、特定的应用 程序。微处理器飞速发展的结果是嵌入式计算成为一门学科。在嵌入式系统的早 期阶段,所有基本硬件构件相对较小也较简单,例如8 位的c p u 、7 4 系列的芯片 及晶体管等,其软件子系统是采用一体化的监控程序,不存在操作系统平台。而 今天组成嵌入式系统的基本硬件构件已较复杂,例如1 6 位、3 2 位c p u 或特殊功 能的微处理器、特定功能的集成芯片、f p g a 或c p l d 等,其软件设计的复杂性成 倍增长。因此研究嵌入式系统的设计原理及技术,提供系统的设计方法和开发工 具是嵌入式计算学科的关键技术。 1 1 2w l a n 的应用及研究现状 无线a p 主要是提供无线终端对有线局域网和从有线局域网对无线终端的访 问,在访问接入点覆盖范围内的无线终端可以通过它进行相互通信。m e s h 网络即 “无线网状网络”,它是一个无线多跳网络,m e s hw l a n 网络要比单跳网络更加 稳定,在m e s h 网络中,如果某个节点的a p 发生故障,它可以重新再选择一个a p 进 行通信,数据仍然可以高速地到达目的地。传统w l a n 网络只能实现客户端到a p 的单跳接入方式。而w l a n 的a d h o e 组网模式,组成的多跳网络却是一个封闭 自组织网络。如何在使用现有设备的条件下实现移动节点互连和多跳i n t e m e t 接入, 正是无线m e s h 网络能够解决的问题。 目前在w l a n 中使用的基本是i e e e 8 0 2 1 1 系列协议,如果能够将无线a p 的 功能集成到普通的m e s h 结点中的话,那么m e s h 结点将能够为其他结点提供接入, 并且在较大区域内对室内和室外同时提供高速无线接入。通常情况下,无线网状网 中具有全方向天线的无线路由器,可用于大范围的无线通信,从而能够以较高的 性价比覆盖较大的城市区域。 无线m e s h 网络能够很好地满足生活和生产的的需要,近年来工业界和学术界 对m e s h 技术进行了广泛和深入的研究,并且提出了很多对m e s h 关键技术的解决 方案,同时也提出一些尚未解决的问题【1 】【2 】【1 3 】【1 4 】。 2 基于a r m 的无线a p 实现 1 m a c 层方面:在现有的解决方案中,主要通过两个途经实现可扩展的m a c 协议。第一是增强现有的m a c 协议或者当网络节点只有一个信道时,提出新的 m a c 协议以增加端到端的吞吐量。第二是在每个网络节点上用多个信道传输。多 信道m a c 可以属于下面几种类型:1 ) 多信道单收发机m a c ;2 ) 多信道多收发机 m a c ;3 ) 多r f m a c 。 2 路由层方面:w m n 是在a d h o e 网的基础上发展起来的,它继承了a d h o e 的优点,又有它自身的特点。一些a d h o e 路由协议也可以用到w m n 中,但是 a d h o e 网络和无线m e s h 网络还是有区别的,需要针对w m n 的特点设计专门适 用于w m n 的高效路由协议。首先应该增添更好的性能方案来增强现有路由协议 的功能。其次,现有的路由协议的仍然很有限。另外,现有路由协议认为m a c 协 议是透明的,然而在无线m e s h 网络中,需要考虑层间协作以提高路由性能。 1 1 3 基于嵌入式平台的a p 实现的意义及研究现状 随着社会发展,越来越多的低单价、操作简单、可通过因特网发送或获取信 息,逐步分割或替代p c 的某些功能的电子产品出现了,而这些产品几乎都是嵌入 式设备,较p c 更强调通讯能力,并且处理器发展趋向低成本、高整合性与低耗能, 人们可以通过这些设备接入网络并能与其他信息产品交换资料或讯息,未来,人 们采用此类设备作为终端上网的比例要远远高于采用p c 机。采用嵌入式设备做为 终端的优点有系统内核小、专用性强、不可垄断性、便携性好等。 无线局域网是在局部区域内以无线媒体或介质进行通信的无线网络【1 5 j 【1 6 1 ,而 无线接入技术是指接入网的某一部分或全部使用无线传输媒介,向用户提供与有 线接入网相同的业务和更广泛的服务范围。在当前的计算机无线局域网中,无线 局域网终端到i n t e m e t 的接入通常是通过接入点( a p ) 实现的。a p 是一个基本服务 区域的控制中心和逻辑拓扑中心,它具有有线和无线两个接口,有线接口间接连 接i n t e m e t ,无线接口与无线局域网终端直接相连。a p 桥接有线和无线网络,为终 端提供对i n t e m e t 的接入访问,同时完成对终端的管理和控制。可用通过增加a p 的数量来扩展覆盖区域和增加系统容量,这种接入方式已经得到广泛的使用。 第一章绪论 3 图1 1 无线局域网终端通过固定a p 接入i n t e m e t 图 因为网络扩展时需要增加a p 的数量,此时多个a p 实际是通过有线方式连接 到一条以太网总线上的。这意味着a p 必须具有有线连接,这种条件制约了a p 布 置的灵活性。现在希望把普通a p 进行改进成基于嵌入式平台的无线a p :保留原 有的无线接口,仍用于与无线局域网终端的通信;将原有的有线接口改为无线接 口,用于不同a p 之间的通信;使a p 具有数据转发功能,多个a p 之间组成无线 m e s h 网络,连接到网关接入i n t e m e t 。最终形成一种混合的无线m e s h 网络。无线 a p 与网关之间构成一个自组织、自愈合、可以多跳转发接入i n t e m e t 的m e s h 骨干 网络;每个无线a p 作为中心节点,与它覆盖范围内的无线局域网终端构成星形无 线网络,管理、控制终端,并为终端提供i n t e m e t 接入。a p 节点之间的路由可以 由a o d v 、d s r 等多种适用与m e s h 网络的路由协议来维护。 无线a p 脱离了有线网络的束缚,相比于传统的接入方式,这种接入方式除了 具有一般无线m e s h 网络的抗毁性好、适应拓扑变化的特性外,能使a p 实现灵活 布置、信号广泛覆盖,为无线局域网终端提供更加灵活的接入。 图1 2 终端通过无线a p 组成的m e s h 骨干网接入i n t e m e t 图 4 基于a r m 的无线a p 实现 1 2 论文总体架构 第一章为绪论,从总体上介绍了基于a r m 的无线a p 的研究意义、研究方法 及设计方案。 第二章研究了嵌入式l i n u x 的网络体系结构,这是研究基于a r m 嵌入式平台 的无线a p 的基础。 第三章首先研究了m e s h 网络和a o d v 协议在操作系统为l i n u x 的p c 平台上 的实现,详细分析了典型的路由发现过程。修改现有的k e r n e l a o d v 代码及提出一 套网络配置方案,使原m e s h 节点保持一切m e s h 网络的特性,并能在a p 软件和 d h c p 软件的配合下,实现接入点的功能成为无线a p ,为其他非m e s h 节点的普 通w l a n 终端提供i n t e m e t 接入。 第四章研究了l i n u x 内核代码,根据本文所需进行了内核的配置和编译,之后 在a r m 开发板上完成了嵌入式l i n u x 内核的移植。对第三章在p c 平台上实现的 方案进行了进一步的代码修改,实现了最终方案。 第五章对基于a r m 的无线a p 进行了测试,并分析了其结果,最终验证了本 文设计方案的正确性。 第六章对本文的内容进行了总结,指出了进一步的工作,并且对基于嵌入式 平台的无线a p 及m e s h 结点应用前景及其未来趋势进行了展望。 第二章嵌入式l i n u x 网络体系结构 第二章嵌入式l i n u x 网络体系结构 2 1t c m p 协议簇 t c p i p 是目前网络中使用的基本通信协议,从名称上看t c p i p 包括两种协议, 即传输控制协议( t c p ) 和网际协议( i p ) ,但是t c p i p 实际上是一组协议,包括了上 百个能完成各种功能的协议,如t e l n e t 远程登录、f t p 文件传输协议、s m t p 简 单邮件传送协议和s n m p 简单网络管理协议等,而t c p 协议和i p 协议是这一组 协议中能够保证数据完整传输的两个最重要的基本协议。按照习惯,通常说的 t c p i p 指的是i n t e m e t 协议簇,而不仅仅是t c p 协议和口协议。 因为t c p i p 体系结构是在o s i 参考模型完成以前设计的,所以描述t c p i p 的网络模型与o s i 的参考模型略有不同。图2 1 显示了本地t c p i p 分层模型,并 且将它的各层映射到了o s i 参考模型的各层中。这些层与o s i 参考模型的层非常 相似,但是又不完全相同。通常情况下,o s i 参考模型的网络层和t c p i p 模型的 网际层( 及i n t e m e t 层) 的传输模型映射得较好。t c p i p 的应用层映射到o s i 参考模 型上时包含了应用、表示和会话3 个层,而网络接口层会映射到o s i 参考模型的 数据链路层和物理层。 应用层 表示层应用层 会话层 传输层传输层 网络层i n t e r n e t 层 数据链路层 网络访问层 物理层 0 s i 参考模型t c p i p 模型分层结构 图2 1o s i 参考模型和t c p i p 网络模型图 当应用程序用t c p 传送数据时,数据被送入协议栈,然后逐个通过每一层直 到被当做一串比特流送入网络。其中每一层收到的数据都要增加一些首部信息( 有 时还要增加尾部信息) ,该过程如图2 2 所示。由于t c p 、u d p 、i c m p 和i g m p 都向口传送数据,因此i p 必须在生成的i p 首部中加入一个长度为8 位的协议域, 以表明数据属于哪一层。类似的,许多应用程序都可以使用t c p 来传送数据,传 输层协议在生成消息首部时要存入一个应用程序的标识符,t c p 用一个1 6 位的端 口号来表示不同的应用程序,它将源端口号和目的端口号分别放入消息首部中。 6 基于a r m 的无线a p 实现 用户数据 rr a p p l 用户数据 首部 11 t c p 首部 应用数据 f 1 u 嵌 一1 口t c p 首部首都 应用数据 i p 数据报 1r 1 1 以太网 i pt c p 以太网 首部 首部首部 应用数据 尾部 1 4 2 0 2 咳太网帧 4- i 一4 一1c nc ;,# 一i 2 2 1l i n u x 源码结构 图2 2 数据进入协议栈时的封装过程图 2 2l i n u x 内核网络部分源码结构 以太网帧 l i n u x 核心代码通常都安装在u s r s r c l i n u x 下,本文使用的内核l i n u x 2 6 1 4 1 , 下面就它的一些主要目录进行结构上的分析【4 】【5 1 。 1 1 i n u x 2 6 1 4 1 主目录下 1 ) a r c h 目录下的所有子目录中都是体系结构相关的代码; 2 ) d o c u m e n t a t i o n 目录下是一些文档,这个目录下面没有内核代码,是对每个 目录作用的具体说明; 3 ) d r i v e r s 它包括显卡、网卡、s c s i 适配器、软盘驱动器,p c i 设备和其它任 何l i n u x 支持的外围设备的软件驱动程序; 4 ) f sl i n u x 支持的所有文件系统在f s 目录下面都有一个对应的子目录。一个文 件系统( f i l es y s t e m ) 是存储设备和需要访问存储设备的进程之间的媒介; 5 ) i n c l u d e 目录包含了编译核心所需要的大部分头文件; 6 ) i n i t 这个目录下面的两个文件中比较重要的一个是m a i n c 它包含了大部分 协调内核初始化的代码; 7 ) i p c 这个目录下的文件实现了s y s t e mv 的进程间通讯( m c ) ; 8 ) k e r n e l 这个目录中包含了l i n u x 中最重要的部分:实现平台独立的基本功能。 这部分内容包括进程调度( k e m e l s c h e d c ) 以及创建和撤销进程的代码( k e r n e l f o r k c 和k e r n e l e x i t c ) : 9 ) l i b 目录包含了核心的库代码; 第二章嵌入式l i n u x 网络体系结构 7 1 0 ) m m 该目录包含了体系结构无关的内存管理代码; 1 1 ) n e t 目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面; 1 2 ) s c r i p t s 该目录下没有内核代码,它包含了用来配置内核的脚本。当运行 m a k em e n u c o n f i g 或者m a k ex c o n f i g 之类的命令配置内核时,用户就是和位于这个 目录下的脚本进行交互的。 其中和本文相关的目录主要是n e t 和d r i v e r s ,n e t 主要存放的是l i n u x 各种网 络功能所对应的实现程序,而d r i v e r s 则主要存放的是l i n u x 设备的驱动程序。在 d r i v e r s 中也有个n e t 子目录,这个目录专门用来存放所有与网络相关的驱动程序, 本文所使用的无线网卡驱动程序就存放在这里。 2 1 i n u x 2 6 1 4 1 n e t 目录下包含以下功能模块 1 ) b l u e t o o t h :蓝牙模块; 2 ) b r i d g e :网桥模块; 3 ) c o r e :网络核心模块; 4 ) e t h e m e t - 以太网模块; 5 ) i e e e 8 0 2 1 1 :i e e e8 0 2 1 1 标准相关模块; 6 ) i p v 4 - i p v 4 协议相关模块; 7 ) i p v 6 i p v 6 协议相关模块; 8 ) m a c 8 0 2 11 :m a c 8 0 2 1l 标准相关模块; 9 ) n e t f i l t e r :防火墙模块; 1 0 ) w i r e l e s s :无线模块。 2 3l i n u x 网络设备驱动架构 2 3 1 两个重要的数据结构 l i n u x 的应用程序在发送数据时,是先将数据在t c p i p 协议栈中逐层打包, 然后再交给底层的网络设备发送出去;而接收数据的过程则刚好相反,它先从底 层的网络设备接收数据帧,然后再将数据帧从下往上依次通过t c p i p 协议栈,将 其解包后交给应用程序。其中有两个数据结构最为重要,分别是s kb u f f 和 n e t d e v i c e ,它们是实现上述过程的关键,下面就着重分析这两个数据结构。 1 s kb u 一8 1 l i n u x 网络实现的灵活性和高效性的一个主要因素是缓冲体系结构,它管理了 网络报文套接字缓存( s o c k e tb u f f e r 或简称s k b ) ,一个套接字缓存由两部分组 成,如图2 3 所示: 1 ) 报文数据:该存储区域保存了实际在网络中传输的数据,此区域对应的是协 议数据单元; !垂王垒垦塑些垂塑竺塞墨 2 ) 管理数据:即s kb u f f , 当一个报文在l i n u x 内核中进行处理时,内核需要 额外的鼓据,而这些数据没有必要存储在实际的报文中,于是就分配了s kb u f f 来 对其进行存储。 套接字缓存用来定位和管理一个报文在内核中被处理的整个周期,当应用程 序向一个s o c k e t 传输数据后,该s o c k e t 就创建相应的套接字缓存并将有效数据的 地址存入此结构的变量中。在报文穿过协议栈的过程中,每一层报文的头信息会 被继续插入到前一层的有效数据之前,如图2 4 所示。由于为报文申请了足够的空 日j 所以避免了在报文头之后对有效数据的多次拷贝。而有效数据只被拷贝了两 次:一次是当它从用户地址空问被传输到内核地址空间中时,另一次是当报文数 据被传送到网络适配器的时候。 当从网络适配器接收到一个报文时,中断处理函数d e , a l l o cs k b 被用来请求 一个s k 结构,此结构随后就被用于存储接接收到的报文数据。报文总是位于_buff 所创建的套接字缓存中,直到被处理 “一“。匕 i 一“一i 、 心1m c d a i a m m _ j 卜 一 嘲2 3 禽有报文存储医域的套接字缓存结构闭 圈2 4 跨协议层时对报文缓冲区的变更图 2 n e t _ d e v i c e 套接字缓存s k b _ b u f f 所对应数据报的发送与接收在底层都必须通过网络适配 第一章嵌入式l i n u x 网络体系结构 器才能与物理介质进行通信,网络适配器完成了物理层和链路层上的工作,它与 高层协议实例间的联系则是通过网络设备接口来实现的,如图2 5 所示。在l i n t t x 系统的网络架构中,基于软件协议与网络适配器之间的网络设备接口需满足如下 需求: 1 ) 从网络适配器的技术属性抽象而来。网络适配器可以实现不同的第一层和第 二层协议并且可由不同的厂商生产。也就是说对于每种网绍适配器,它们的配置 都是独立而特殊的,因此每款网络适配器都需要一些软件来和硬件通信,这种软 件就是网络适配器的驱动程序。 2 ) 为协议实例的访问提供统一的接口。在l i n u x 系统中,有多个协议实例使用 网络适配器的服务,为了与分层通信系统的原理相一致,这些实例的实现必须与 特定的网络适配器类型无关,这就意味着对于网络适配器而言必须具有面向上层 的统一接口。 甲甲甲甲 “。“蓬爹审i 勰i 三燕 急杂每 p 丁丁 图2 5 阿络设备接口的结构图 对于l i n u x 内核中的所有网络设备, 它不仅包台了网络适配器的的硬件信息 它们的的基础数据结构就是n e t _ d e v i c e , 还包括了面向高层网络协议的网络设备 配置数据。正如刚刚提到的n e t _ d e v i c e 结构就是高层协议和所有硬件之间通用的 网络设备接口,它对所有组件进行了抽象,是网络层与链路层交流的桥梁。 n e t _ d e v i c e 存储了一个网络设备接口的重要信息,其中包含大量的函数指针,更高 层协议通过它们的全局名称来调用它们。 2 32l i n u x 网络设备工作原理 研究完了s k _ b u 开和n e t _ d e v i c e 这两个重要的数据结构后,下面就具体分析一 下在l i n u x 中网络设备是如何进行工作的。其工作原理如图2 6 所示,l i n t l x 网络 设备驱动的主要功能就是网络设备的初始化、网络设备的配置和网络设备的收发 l o 基于a r m 的无线a p 实现 等【1 们。 l i n u x 提供了两个接口函数,一个是系统向下发数据的函数d e v ,q u e u e x m i t 它负责调用网络驱动的h a r ds t a r tx m i t 接口,另一个是驱动向上传数据包的函数 n e t i fr x ,驱动一般在中断里接收数据,并调用n e t i fr x 。 网络设备作为一个对象,提供一些方法供系统访问,正是这些统一的接口函 数屏蔽了硬件的具体细节,让系统对各种网络设备的访问都采用统一的形式,做 到硬件无关性。在初始化程序里可以根据硬件的特征检查硬件是否存在,然后决 定是否启动这个驱动程序,对其进行配置和初始化。一般需要完成设备i o 地址映 射、中断申请、d m a 初始化等工作。 i b s ds o c k e tt c m p 协议栈 i 内核网络子系统 毒f, l d e vq u e u ex m i t n e t i f r x i向硬件发送数据包 数据接收中断处理 i? l网络设备接口 in e td e v i c e 毒t ih a r ds t a r tx m i t i n t e r r u p t _ h a n d l e i向硬件发送数据包 数据接收中断处理 毒亍 网络设备与物理介质 图2 6 网络设备工作原理图 如前文所述,网络设备接口分别对底层不同的网络适配器进行了属性抽象和 对上层协议实例的访问提供了统一接口,将网络设备的这两种功能加以区分并单 独考虑是有意义的。因此以图2 6 中网络设备接口n e td e v i c e 为界,下面将分别讨 论n e td e v i c e 向下同网络适配器间的数据传输以及n e td e v i c e 向上同上层协议实例 间的数据传输。 1 n e td e v i c e 同网络适配器间的数据传输 网络适配器是接口适配器,它根据已定义的m a c 协议自动传输和接收网络 包,也就是说网络适配器具有与正规的中央处理器并行工作的独立逻辑,它们通 过i 0 端e l 和中断来进行交互。当处理器需要向网络适配器传递数据时,那么处理 器向适当的i o 端口写入数据并启动所需的服务;当网络适配器向处理器传递数据 时,那么网络适配器触发中断,然后处理器用网络适配器的中断处理程序来服务 于网络适配器,这就清楚地表明了系统处理器对于网络适配器来说处于领导地位。 在操纵系统和网络适配器之间传递网络包时,驱动程序管理着由1 6 到6 4 个 第二章嵌入式l i n u x 网络体系结构 指向套接字缓冲区的指针组成的环形缓冲区。当一个包准备好被发送后,那么相 应的套接字缓冲区就被置入该环,指向包数据的指针被传递给网络适配器。然后, 套接字缓冲区一直留在环形缓冲区中直到网络适配器获知包已经传输完毕。最后, 套接字缓冲区从环形缓冲区中被释放和删除。 2 n e td e v i c e 同上层协议实例间的数据传输 对于不是在本机计算机中生成的每一个数据包而言,其路径都是起始于某一 个网络适配器,数据包被接收后便会通过触发某一中断将它的到达告知内核,如 果传输过程是正确的,那么数据包通过内核的路径就起始于这一点,中断处理例 程是内核处理数据包的第一个活动。 在其已经正确接收了某一数据包的时候,中断处理例程就会获得一个套接字 缓冲区结构体并将网络适配器中的输入数据包复制到它的数据包数据空间,然后 套接字缓冲区被置入输入队列中,指针s k b - d e v 被设定为指向接收网络设备,且 包含在链路层数据帧中的类型也被识别出来。 该套接字缓冲区传递给所有采用协议标识符d e v - p r o t o c o l 注册的协议,比如 对于某一口数据包,函数e t ht y p e识别出了协议标识符,并将其存t r a n s 0 x 0 8 0 0 储在d e v p r o t o c o l 中。在n e tr xa c t i o n 中,该标识符通过散列函数映射到了i n t e m e t 协议的条目中,对相应协议的处理例程将会启动i p 函数, 内核上层协议r e v l i n u x 实例的实际处理工作就开始于此函数。 2 4t c p i p 在l i n u x 下的具体实现:s o c k e t 通信 本文在前几节中介绍了t c p i p 协议栈、l i n u x 网络部分源码结构和l i n u x 网 络设备的驱动架构,为了进一步分析l i n u x 下t c p i p 协议栈的工作过程,下面将 以s o c k e t 通信收发一个数据包为例,将t c p i p 协议栈各层对数据包的传递处理过 程通过图解详细的展现出来。 l i n u x 网络系统映射到s o c k e t 的编程模型上,基本可分为五部分:硬件层数 据链路层、p 层、i n e ts o c k e t 层、b s ds o c k e t 层和应用层。应用层和b s ds o c k e t 层之间的应用程序接口以4 4b s d 为模板,i n e ts o c k e t 层在i p 协议层的上一层, 对i p 分组排序及控制网络效率等,m 层是t c p i p 协议栈互联网层的实现部分, 硬件层数据链路层则对应着网卡设备,网卡驱动程序界于链路层跟口层之间。 s o c k e t 通信主要是以c l i e n t s e r v e r 结构为基础进行应用设计的,当服务器端和 客户端连接都建立好后,就可以使用r e a d 和w r i t e 函数进行数据收发了,图2 7 详 细地分析了l i n u x 中利用s o c k e t 编程在t c p i p 协议栈上发送数据的过程,而图2 8 则详细地分析了l i n u x 中利用s o c k e t 编程在t c p i p 协议栈上接收数据的过程。 1 2 基于a r m 的无线a p 实现 用户空间匝亟垂叠亘垂蔓重垂亘夏 圃 判断空间是否够。如果数 据长度大于m t u ,调用分 包函数i p 劬毋姗n 在此 出现并得到n e 6 d “i c e 结 构 l p _ q u e u e _ x m i t ( s m t c ts k _ b u f f s k b ) 负责路由过程,加上i p 头,打包后给下一层函 数,结束后s b 中已包含t c “i 西k 及数据指针 硬件驱动层链路层 d e v _ q u e u ex m i t ( 鼬) s k b - d s t - n e i g h b o u r - o m p u t 函数设为 n 西赴髂0 j v eo l 州x 在j pi i n 蛐砌p l i t 2 0 中调用传下来,此为i p 层的最后一站,这 里会填充硬件i i 戤地址调用鹏i 妒o p q 惦x i l l i 幻进入硬件层,将m 地址拷贝 到数据包中 会此函数涉及到晒管理,从s 协中获 取网卡出v 指针,调用与此网卡对应 的驱动程序此函数属于硬件驱动层 图2 7 在t c p p 协议栈上发送数据图 卤 第二章嵌入式l i n u x 网络体系结构 1 3 用户空间 应用层 内核空间 b s ds o c k e t 层 i n e ts o c k e t 层 从网络协议栈中接受 数据自上而下触发的 动作到这个函数为止 出现了第一次等待的 过程此函数可能会被 动地等待在s k 的接收 数据队列上,先判断s k - :玳c e i v c 里有_ q t l e u e 没有符合条件的数据。 如果有则调用m 锄c p y _ t o i o v e o ( ) t c p v 4r c v o i p 层 从s 抽中拷贝有效数据到m s g - i o v c 中,除掉各种包头后返回 ( 包含t c p ,i p , a m ) ,整个收包过程 结束邝a d ( ) 函数成功返回,读取 的数据保存在m s g 中 从n e t d e v i c e - p r i v m t p _ r x i n g 中接受数据复制到新申请的s k b 争u 绅,去掉m a c 地址头部,调用 函数n e t i 尽( s i c b ) 通知上层处理 硬件驱动层链路层 l p _ r c v ( s t r u c ts k _ b u f s k b , s t r u c tn e t _ d e v i c e d e v , s t r u e tp a c k a _ t y p e + p t l 取得数据包的i p 头 n e t _ r x _ a c t i o n ( s m j c ts k _ b u f s k b , s u - u z tn e t d e v i c e + & v , s t r u c tp a c k e tt y p e + p t ) n c t i l r x ( s t r u c ts l b u f + s k b ) 将s k b 存放到系统令局接受 数据队列。而后产生软中断 信号n e t r x s o r t i g q n e t _ i n t e r m p t ( s t r u c tn e t & v i c e & v , p r i v 州v a 蛾v o i d + k , a a d o i 调用相应中断处理程序 l 检测到有网卡中断产生 图2 8 在t c p i p 协议栈上接收数据图 2 5 本章小结 本章主要研究了嵌入式l i n u x 的网络体系结构,重点分析了嵌入式l i n u x 网络 设备的驱动架构,最后还以s o c k e t 通信为例具体分析了一个数据收发的过程。本 章是全文的基础,下面将以此为起点来实现基于嵌入式平台的a p 设计。 囱卤 幽 第三章无线分布式a p 设计 1 5 第三章无线分布式a p 设计 3 1m e s h 网络 m e s h 网络是一种网络架构思想,主要特点体现在无中心、自组网、多级跳接 和路由判断选择等【l l l 2 】。无线m e s h 网络中的每一个节点,除了能够为自己发送和 接收信息,还要充当路由器,为其他节点转发信息。无线m e s h 网络具有高可靠性、 基础设施铺设成本低、组网灵活、维护方便等优点。由于m e s h 节点必须具有转发 功能,所以在m 层上设计实现合适的路由协议就成为构建无线m e s h 网络的一个 关键之处。经典的路由协议有a o d v 、d s r 、o l s r 等多种。本章将介绍和使用a o d v 路由协议。 3 2a o d v 路由协议 a o d v ( a dh o eo nd e m a n dd i s t a n c ev e c t o ra l g o r i t h m ) 全称是a dh o e 按需距离矢 量协议【1 4 l 【1 7 2 8 】,原本是为a d h o e 无线自组网设计的路由协议,也经常应用于无 线m e s h 网络中。 a o d v 路由协议主要由路由发现和路由维护两部分组成。节点只有在需要发送 数据且没有到目的节点的有效路由时,才激发路由发现机制,寻找到目的节点的 路由。源节点广播发送路由请求信息( r r e q ) ,中间节点建立并维护动态反向路由 表,目的节点或具有到目的节点有效路由的中间节点收到路由请求信息后,发送 路由回复信息( r r e p ) ,从而建立正向路由。源节点维护源路由请求表,中间节点 维护转发路由请求表,如果定时到期没有收到路由回复,则删除路由请求并报告 上层目的不可达。为每条路由设置过期时间,每使用一次该路由,更新一次过期 时间;过期时间到,则删除该路由。通过广播i d 与源地址组合避免重复广播请求, 目的序列号用来避免路由环路,广播消息设置生存时间( t t l ) 和重传次数,避免广 播扩散。 3 3a o d v 在l i n u x 下的一种实现 目前已经有多个研究组织编写出了l i n u x 操作系统下实现a o d v 路由协议的软 件代码。其中最为著名的有瑞典u p p s a l a 大学的a o d v - u u 和美国国家标准与技术局 甜i s t ) 的k e r n e l a o d v 。虽然编写者和具体实现细节不同,但所有a o d v 路由软件都 具有共同的特点:利用l i n u x 中的防火墙( n e t f i l t e r ) 体系结构,监视网络接口接收和 发送的数据,分析路由需求,控制路由发现过程,维护内核路由表,实现数据的 发送、接收和转发。通常有一个m e s h 节点会通过有线连接到i n t e m e t ,软件会在 基于a r m 的无线a p 实现 这个节点上实现网关功能,为整个无线m e s h 网络提供到i n t e r n e t 的接入。 l i n u x 中的n e t f i l t e r 体系中定义了五个检测点( h o o k ) ,在这些位置可以监测来 自网络上和流向网络的数据包,并定义规则按照不同情况做出不同的反应。 k e r a e i - a o d v 将用到其中的三个点:p r e r o u t i n g ,f o r w a r d ,o u t p u t 。 1 9 广 l 藏。 p o s t r 叫月口 c o n i l t r a c r ln a 【r “* o n a t w _ f o r w a r d 斗 f i t k rt l o m m f i l t e r lm 3 n g h l c o n f l t g a c k 、l o c a l h 0 3 t 图3ln e r l i l t e r 的五个监测点图 本章目标的实现是建立在对现有a o d v 软件代码修改的基础上的,所以这里将 对a o d v 协议的一种软件实现:k e r n e l a o d v - v 2l 的结构和部分细节进行分析。 3 31k e r n e l a o d v 的关键部分 1 三个h o o k 点:p r e r o u t i n g ,f o r w a r d ,o u t p u t 在p r e r o u t i n g 可监测从外部网络流入网络接口的数据包,在f o r w a r d 可监测来自外部网络的需要转发的数据包,在o u t p u t 可监测本地主机自己发出 的数据包。 2 两个监控点规则入口函数:i n p u t _ h a n d e r ( ) ,o u t p u th a n d l 盯( ) i n p u t ) 注册在 点,是根据流入数据包,做出一系列反_h蚰dler(prerouting 应动作的入口:o u t p u th a n d l e r ( 1 同时注册在f o r w a r d 点和o u t p u t 点,是根据 需要转发的数据包或本地发出的数据包,做出一系列动作的入口。 3 两张路由表:a o d v 路由索引表,内核路由表 路由索引表由a o d v 软件定义和维护,记录有目的地址、下一跳地址、跳数、 路由有效期等信息,有数据需要发送时首先要查询这张表;内核路由表是系统实 际的路由表,发送数据包时只能使用内核路由表里实际存在的条目,整个路由软 件负责根据路由索引表更新内核路由表以保持二者一致。 上 l 第三章无线分布式a p 设计 1 7 表3 1 路由索引表的内容 d s t _ i p 目的节点i p 地址 d s t _ s e q目的节点序列号 h o p _ c o t m t 到目的节点的跳数 n e x t _ h o p下一跳节点m 地址 l i f t i m e 本路由的有效时间 d e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论