《基于无线控制器的接口管理毕业论文.doc》由会员分享,可在线阅读,更多相关《基于无线控制器的接口管理毕业论文.doc(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、10701编号UDC密级学号分类号代号软件工程题(中、英文)目企业指导教师姓名职称学校指导教师姓名职称工程领域作者姓名二九年二月提交论文日期Based on the Wireless ControllermInterface Management基于无线控制器的接口管理公开TP311.5企业指导教师姓名职称摘要随着无线网络的不断发展,有线网络和无线网络的融合必将成为一种趋势,新型的网络设备的产生也将成为一种必然,有线无线一体化交换机就是这种设想的实现。接口管理作为交换机设计中的重要软件组成部分,它在交换机中抽象底层的硬件驱动,定义完备的接口,给上层管理提供接口,是交换机软件开发的主要内容,对于
2、交换机的软硬件的管理和交换性能具有十分重要的意义。本文以某公司的AX7000有线无线一体化企业级交换机项目为背景,深入研究了Cisco、Juniper等公司的接口管理设计模式,提出了自己的设计方案。基于交换机的PORT和VLAN实现交换机的二层接口、三层接口、协议接口以及各种特性接口的定义,运用Port和VLAN之间的关系使接口之间相关联。实现虚拟网卡驱动以支持三层接口,完成交换机网关功能。添加ARP和路由信息学习管理模块,保证网络安全和数据转发的高效、畅通。最终根据定义的接口实现命令行的配置功能。关键词:接口管理 无线控制器 网络AbstractWith the continuous dev
3、elopment of wireless networks, the amalgamation of cable and wireless networks will definitely become a trend, and it is inevitable that a late-model network apparatus, such as the Wire and Wireless Integration Switch, will come into being. As an important software components of the Integration Swit
4、ch, Interface management which abstracts the underlying hardware drive, defines the whole Interface and provides interface for the superior management, has great significance for the management of Integration Switchs software&hardware and its performance.This thesis, via a AX7000 Wire and Wireless i
5、ntegration Enterprise-class Switch project and thoroughly studying on Ciscos, Junipers and some other companys Interface Management design pattern, puts forward my own design pattern in which I educed the definability of Ethernet Interface, Layer 3 Interface, Protocol Interface and a variety of some
6、 special interface and identified their relations via the Port and VLAN of intreface, and achieved the virtual network card driving which gives support for layer 3 interface, and fulfilled the function of interfaces gateway. And by appending ARP and Management Module of Router information learning,
7、so that we can ensure networks safety and its efficiency and stabilization of data transmition and finally achieve the configurations function of command-line according to its definition of interface.Keyword:Interface Management Wireless Controller Network目录第一章 绪论11.1 项目背景11.2 项目来源21.3 项目其间主要完成任务的工作
8、41.4 章节安排4第二章 相关技术背景72.1 TCP/IP及Linux TCP/IP协议栈72.2 Linux驱动92.3 Linux开源项目132.3.1 路由管理之Quagga132.3.2 Linux逻辑总线之D-Bus14第三章 无线控制器体系结构173.1 无线控制器的功能173.2 无线控制器的体系结构183.2.1 功能体系结构模块183.2.2 物理体系结构模块20第四章 接口管理需求分析234.1 接口管理概念234.2 接口管理需求244.3 接口管理建模27第五章 接口管理设计实现315.1 软件模块设计实现315.2 基于接口的应用层设计实现345.2.1 命令行模
9、块设计实现345.2.2 协议模块设计实现365.3 接口底层驱动模块设计实现395.3.1 虚拟网卡驱动模块设计实现395.3.2 交换芯片驱动模块设计实现475.4 接口管理设计实现485.4.1 Port接口485.4.2 VLAN接口555.4.3 基于接口的ARP、Route学习605.5 接口管理测试63第六章 结束语676.1 全文总结676.2 工作展望67致谢69参考文献7115第二章 相关技术背景第一章 绪论1.1 项目背景上世纪九十年代以来,网络建设突飞猛进。我国的网络建设,包括企业网和广域网络,都实现质的飞跃。无线网络同期也得到广泛应用和发展。近两年来,无线网络有越来越
10、加快发展的趋势。无线网络自诞生以来,表现了其独特灵活性、便利性及高效率的特点。无线网络的初步应用,可以追溯到第二次世界大战期间,美国陆军采用无线电信号作资料传输。1971年,夏威夷大学的研究员创造了第一个被称作ALOHNET的无线电通信网络。无线局域网(WLAN,Wireless Local Area Network)采用无线通信技术代替传统电缆网络。上世纪90年代初,无限局域网络设备相继出现。以900MHz、2.4MHz 和5GHz为主要頻率。1997年6月,第一个无线局域网标准IEEE802.11正试颁布实施。1999年9月802.11b技术标准正式发布,802.11带来了网络建设的一场“
11、革命”1。为无线局域网的物理层和MAC层提供了统一的标准,为无线网络市场迅速发展奠定基础。近年来,国际无线网络市场发展迅速。据市场调查,1998年美国无线网络服务的收入为300亿美元,收入主要还是来源于移动电话的无线语音服务。到1999年美国无线网络数据服务的收入达到6亿美元。预计 2003年美国无线网络数据服务的收入可以达到40亿美元。到了2005年美国的无线服务收入将达到600亿美元,其中无线数据通信的收入达到84亿美元,将增长14倍。到2006年,全球无线网络设备的市场销售额将达到103亿美元。2001年全球无线上网人口总数已达3900万人,预计到2005年底可达到7.29亿人,并且全球
12、将有36的上网人口通过无线电子设备上网。无线网络的应用将持续高速发展。人们已经不满足原来的移动电话服务的内容,无线网络的语音服务必然向数据服务发展。特别是信息技术的广泛应用,移动办公和移动商务的要求,也必然推动无线网络应用的发展。无线网络补充延伸了有线网络,扩大了网络的覆盖率和提高了网络的应用范围2。到现在为止,无线局域网一般是由连接到接入点的客户机构成,而接入点要提供安全功能、管理功能和其他控制网络无线部分所需的智能性。由此带来的问题是,管理多个接入点,对于可能涉及几百或几千个接入点的网络来说是一种无法应付的局面。在这种情况下,一种新的产品WLAN交换机应运而生。许多资深研究以太网技术及交换
13、机技术的网络公司正投入大量研究力量从事无线交换机的研发,例如Cisco,H3C等等,这两家公司都已有自己成熟的产品,Cisco的Cisco 4400系列,H3C的WX5002系列,但这些都只停留在无线控制这一块,而没有把有线和无线完整的融合起来。无线交换所带来的,不仅是提升无线网络的可管理性、安全性和部署能力,还降低了组网成本,由此成为无线局域网领域一种新的发展趋势。传统的企业级无线局域网采用的是以太网交换机企业级AP的2级模式,由AP来实现无线局域网和有线网络之间的桥接工作。整个网络的无线部分, 是以AP为中心的一片片覆盖区域组合而成的。这些区域各自独立工作,AP作为该区域的中心节点,承担着
14、数据的接收、转发、过滤、加密,客户端的接入、断开、认证等任务。所有的管理工作,比如channel管理和安全性设置,都必须针对每一台AP单独进行。当企业的无线局域网规模较大时,这就成了网络管理员相当繁重的负担。新出现的无线交换机通过集中管理、简化AP来解决这个问题。在这种构架中,无线交换机替代了原来二层交换机的位置,轻量级AP(Light-Weight AP)(也称智能天线)取代了原有的企业级AP3。通过这种方式,就可以在整个企业范围内把安全性、移动性、QoS和其他特性集中起来管理。虽然无线交换机采用和普通交换机类似的方式与AP实现连接。但在802.11帧处理上与传统方式不同:它不将802.11
15、帧转换为以太帧,而是将其封装进 802.3帧当中,然后通过专用隧道传输到无线交换机。从有线网的角度看,无线交换机加轻量级AP更像是一台伸展出很多外接天线的增强型AP。无线交换机的优势,在于三个主要方面:更高的安全性,更低的TCO,更有效率的管理。在新的AP与交换机之间的通信的隧道协议和管理协议(LWAPP)标准定制以后,不同厂家的无线交换机和AP不能通信的时代已成为过去,LWAPP 在市场中得到广泛接受,减少了被迫锁定于一个厂商,即只有将接入点与同一厂商的WLAN系统设备共用,才能获得最优运行效果的现象。LWAPP还提供了一个开放标准解决方案,可在多厂商集中WLAN架构上提供安全的第二层和第三
16、层网络服务。此外,凭借LWAPP,第三方厂商也可拥有一个用于部署应用的通用架构。无线交换机将会成为网络设备发展的主流。1.2 项目来源本文作者实习公司是业界唯一一个有线无线一体化宽带网络解决方案提供商。依托它们的产品,用户可以基于单一平台部署有线网络、WLAN网络及企业统一安全策略。传统企业网络中,有线网络设备及管理系统、无线网络设备及管理系统、安全策略管理系统各自独立,分别维护,不但增加了IT人员的负担,而且大大增加了企业的 IT基础设施投资。傲天动联提供单一的有线无线一体化产品平台和管理平台,用户可以基于同一设备进行WLAN数据和有线数据的转发策略控制以及进行第七层安全策略部署,极大的简化
17、了网络的部署和管理并大幅度节约网络基础设施投资。基于以上的市场需求,公司率先推出了业界领先、完全自主知识产权的有线无线一体化解决方案,包括业界最高转发性能和最具安全性的AX7000系列高端一体化安全交换机、适用于中小型企业的AX5000/3000系列一体化安全交换机、具有零配置自愈合功能的室外型无线接入点、基于开放式安全平台的AUTEWARE操作系统等,为客户提供安全、高速、统一管理、易于部署的整网多业务解决方案。而接口管理正是交换机的核心功能,同样有线无线一体化交换机也不例外。在现有的网络设备生产公司中,接口都没有十分统一的清晰定义,各有巧妙。但是从总体上说,其内容涵盖了系统中所有底层硬件驱
18、动、上层应用,是软件层面上的一系列核心结构体,主要目的是为了高效合理的管理交换机,并且以它为核心进行软件开发,扩展功能,版本的移植。因此接口管理逻辑关系复杂,与系统软硬件功能模块紧密相关,也是中高端交换机管理方式的定义。不同的设计最终呈现给用户的时候,有很大的差别,从Cisco和Juniper设备配置文档中就可见一斑。从Cisco的配置手册4上可以看出,Cisco对接口定义最广泛,因此也最混乱,接口太多。在Cisco的8540配置文档中可以看出,接口与路由有很大的关系,路由是把包从一个链路传送到另外一个链路,而为了实现这个过程,就要定义数据包从接受到发送这一过程的接口特征。接口特征包括IP地址
19、,端口地址,数据封装方法和介质类型,这些所说的只是其中的一部分。可以看出Cisco的接口定义更像一个面向对象程序中的类,当然把它们定义成可以独立出来的模式,可以很方便的把它们组织成一个树形结构,加快了包在三层交换机中的转发速度。Juniper公司的接口管理5相对要清晰一点,把接口的概念分层了,从物理层到链路层到网络层,逻辑上的可以有好几层接口,类似一个接口栈,完整的接口栈实现完整的报文从网络协议栈最底层到顶层的处理过程。例如:用户可以根据自己的需求配置T3和T1链路的物理和逻辑特征或根据中心交换机和OC3链路的物理和逻辑特点从网络的下层核心传出,这些物理和逻辑的特点就定义了一个接口。而接口的配
20、置应该从低到高合理的配置,比如:原来的配置是IP 运行在ATM上,现在想改变原来的模式,IP 要运行在PPP上,PPP运行在ATM 上,则就要先删除IP,再配置PPP,然后重新配置IP,才能正确的运行。从这些可以看出Juniper公司对接口定义比较严格。而接口的管理也更加的灵活。在作者实习公司的有线无线一体化交换机中,接口管理吸收了Cisco和Juniper的优点,提出了自己相对简单但功能全面、灵活的接口管理方案。把接口管理规划入两个主要的逻辑结构中Port、VLAN中,用这两个数据结构去定义各个接口功能。1.3 项目其间的主要工作本次课题开发的内容是根据作者实习公司的产品AX7000和AX5
21、000有限线无线一体化交换机的研发而来。这两款新产品给用户提供了无线网络管理和有线网络管理的一体化解决方案,最大化的减小了用户的投资,并使用户长期受益。新产品在设计研发过程中遵守IEEE的802等标准。系统采用MIPS架构,LINUX服务器平台,进行基于高速交换芯片的嵌入式开发。将优化过的一些相关理论方法应用到实际开发过程中去,保障了系统性能、特性的安全稳定。本论文的研究内容是实习公司AX7000和AX5000有线无线一体化交换机的核心功能接口管理模块,本文作者主要完成以下几个方面的工作:1. 项目开始前期。阅读有关TCP/IP协议书籍、Socket编程书籍、线程管理和内存管理书籍,硬件芯片文
22、档,产品设计架构文档,了解国内三层交换机框架的一些情况。阅读交换芯片的驱动源代码。2. 对产品硬件结构进行培训,与硬件工程师一起对交换芯片的硬件转发能力进行测试验证。3. 与交换项目组的开发人员和软件架构工程师进行接口管理方面的设计。4. 完成接口管理的基础,Linux虚拟网卡驱动的设计、编码、测试。5. 完成RSTP和MSTP的融合,为上层管理提供相应的接口。6. 实现ARP,路由学习的软硬件控制,以及一些特色功能接口。7. 调试报文收发流程的性能。1.4 章节安排论文主要介绍了研究和实现基于无线控制器的接口管理。第一章:绪论本章介绍了论文研究背景、来源和组织安排。第二章:相关技术背景本章介
23、绍了交换机软件开发中与接口管理相关关键技术。首先介绍了TCP/IP协议的基本信息,紧接着对Linux驱动做了总结,最后对公司使用的两个开源软件Quagga,D-Bus进行简单的介绍。第三章:无线控制器体系结构本章对实习公司的产品AX7000的各个功能做了概述,并从本产品的硬件架构和逻辑功能模块详细介绍它的软件结构和设计理念。第四章:接口管理的需求分析本章论述了接口管理的概念,并分析了接口管理的需求,最终对系统和接口管理进行了功能建模。第五章:接口管理的设计实现本章详细论述了AX7000的软件总体设计以及各个模块的功能,然后对接口管理的上层应用命令行模块和协议模块和底层驱动模块的设计实现进行了详
24、细阐述,最后具体的论述了接口管理的设计与实现,并且列出了测试结果。第六章:结束语本章主要总结了本篇论文的主要内容,介绍了AX7000投入市场后情况,展望了未来的工作。第二章 相关技术背景2.1 TCP/IP及Linux TCP/IP协议栈网络发展最初可以追溯到20世纪50年代,当时人们尝试把分别独立发展的通信技术和计算机技术联系起来,使得在技术上为今后的计算机网络的出现做好了准备。同时建立了一些基础的理论性的概念。1983年出现了可用于异构网络的TCP/IP协议,并作为BSD UNIX操作系统的一部分,TCP/IP协议得到了认可,逐步流行起。从此真正意义上的Internet诞生了6。1991年
25、,internet开始用于商业用途,internet的商业化,成为internet发展的催化剂,使得它以空前的速度迅速发展。Linux 正是一个诞生于网络、成长于网络且成熟于网络的奇特的操作系统。1991年,芬兰大学生Linus Torvalds把自己开发了基于UNIX的开源操作系统Linux,为了不让这个羽毛未丰的操作系统矢折,Linus将自已的作品Linux通过Internet发布。从此一大批知名的、不知名的电脑黑客、编程人员加入到开发过程中来,Linux逐渐成长起来。 现在Linux已经是一种自由的UNIX类多用户、多任务的操作系统,可运行在多种计算机平台,已成为应用广泛、可靠性高、功能
26、强大的计算机操作系统。Linux 具有内核小、效率高、源代码开放等优点,还内含了TCP/IP网络协议,很适合在服务器领域和嵌入式领域使用。而这两个领域主要用途之一就是进行网络通信。Linux支持TCP/IP,IPX,X.25,AppleTalk等协议,各种具体协议实现的源码见linux/net/目录下相应的名称7。与本文构件化相关的TCP/IP协议栈相关内容在linux/net/ipv4目录下,其中linux/net/ipv4/af_inet.c是主要的管理文件。 与OSI模型一样,Linux的TCP/IP协议栈也是典型的层次架构,如图2.1所示。网卡驱动程序提供的I/O之上是地址解析协议和反
27、向地址解析协议(ARP/RARP),主要功能为将网卡硬件设备号(MAC地址)与分配的IP地址连接起来,在Linux kernel源码中的实现文件是arp.c及rarp.c。再向上是IP协议、ICMP协议和IGMP协议,该层实际完成功能与OSI模型中的网络层相似,其中以IP协议为核心,ICMP协议及IGMP协议协助IP协议以共同完成IP寻址、路由转发及简单的错误回报、流量控制等功能,在内核源码中的实现文件包含了以ip_为前缀的一系列文件及icmp.c、igmp.c。再上是两个传输层的协议,包括面向连接的TCP协议和无连接的UDP协议,在内核源码中的实现文件是以tcp_为前缀的一系列文件及udp.
28、c。最上层是丰富的应用层协议,内核源码中并不包含此部图 2.1 TCP/IP协议栈分内容的具体实现文件,而是由具体的应用程序根据RFC标准对其加以实现。所以对TCP/IP协议栈按层次构件化的任务主要集中在三层上:ARP/RARP层,IP/ICMP/IGMP层,TCP/UDP层。图2.2描述了Linux对TCP/IP协议族的实现机制。 图2.2 Linux 对TCP/IP协议族实现Linux支持BSD的套接字和全部的TCP/IP协议,是通过网络协议将其视为一组相连的软件层来实现的,BSD套接字(BSD Socket)由通用的套接字管理软件支持,该软件是INET套接字层,用来管理基于IP的TCP与
29、UDP端口到端口的互联问题8。从协议分层来看,IP是网络层协议,TCP是一个可靠的端口到端口的传输层协议,它是利用IP层进行传接报文的,同时也是面向连接的,通过建立一条虚拟电路在不同的网路间传输报文,保证所传输报文的无丢失性和无重复性。用户数据报文协议(User Datagram Protocol,UDP)也是利用IP层传输报文,但它是一个非面向连接的传输层协议,利用IP层传输报文时,当目的方网际协议层收到IP报文后,必须识别出该报文所使用的上层协议(即传输层协议),因此,在IP报头上中,设有一个“协议”域(Protocol)。通过该域的值,即可判别其上层协议类型。对于TCP传输,传输节点间先
30、要建立连接,然后通过该连接传输已排好序的报文,以保证传输的正确性,IP层中的代码用于实现网际协议,这些代码将IP头增加到传输数据中,同时也把收到的IP报文正确的传送到TCP层或UDP层。TCP是一个面向连接协议,而UDP则是一个非面向连接协议,当一个UDP报文发送出去后,Linux并不知道也不去关心它是否成功地到达了目的主机。IP层之下,是支持所有Linux网络应用的网络设备层,例如点到点协议 (Point to Point Protocol,PPP)和以太网层。网络设备并非总代表物理设备,其中有一些(例如回送设备)则是纯粹的软件设备,网络设备与标准的Linux设备不同,它们不是通过mknod
31、命令创建的,必须是底层软件找到并进行了初始化之后,这些设备才被创建并可用。因此只有当启动了正确设置的以太网设备驱动程序的内核后,才会有/dev/eth0文件,ARP协议位于IP层和支持地址解析的协议层之间。2.2 Linux驱动Linux设备驱动程序在 Linux的内核源代码中占有很大的比例,源代码的长度日益增加,主要是驱动程序的增加。在Linux内核的不断升级过程中,驱动程序的结构还是相对稳定。在2.4.xx到2.6.xx的变动里,驱动程序的编写做了一些改变,但是从2.4.xx的驱动到2.6.xx的移植只需做少量的工作。 Linux 系统的设备分为字符设备(char device),块设备(
32、block device)和网络设备(network device)三种。字符设备是指存取时没有缓存的设备。块设备的读写都有缓存来支持,并且块设备必须能够随机存取(random access),字符设备则没有这个要求。典型的字符设备包括鼠标、键盘、串行口等。块设备主要包括硬盘软盘设备,CD-ROM等。一个文件系统要安装进入操作系统必须在块设备上9。每个设备文件都有其文件属性(c/b),表示是字符设备还是块设备。另外每个文件都有2个设备号,第一个是主设备号,标识驱动程序;第二个是从设备号,标识使用同一个设备驱动程序的、不同的硬件设备。设备文件的主设备号必须与设备驱动程序在登记时申请的主设备号一致
33、,否则用户进程将无法访问驱动程序。系统调用时是操作系统内核与应用程序之间的接口,设备驱动程序是操作系统内核与机器硬件之间的接口10。设备驱动程序是内核的一部分,它完成以下功能:1. 对设备初始化和释放2. 把数据从内核传送到硬件和从硬件读取数据3. 读取应用程序传送给设备文件的数据和回送应用程序请求的数据4. 检测和处理设备出现的错误图2.3完整地表现了Linux驱动和系统之间的关系。图 2.3 Linux 设备驱动模块图Linux的设备驱动程序可以分为3个主要组成部分11:1. 自动配置和初始化子程序,负责监测所有驱动的硬件设备是否存在和能否正常工作。如果该设备正常,则对这个设备及其相关的设
34、备驱动程序需要的软件状态进行初始化。这部分驱动程序仅在初始化时被调用一次。2. 服务于I/O请求的子程序,又称为驱动程序的上半部分。调用这部分程序是由于系统调用的结果。这部分程序在执行时,系统仍认为是与进行调用的进程属于同一个进程,只是由用户态变成了核心态,具有进行此系统调用的用户程序的运行环境,因而可以在其中调用sleep()等与进程运行环境有关的函数。3. 中断服务子程序,又称为驱动程序的下半部分。在Linux系统中,并不是直接从中断向量表中调用设备驱动程序的中断服务子程序,而是由Linux系统来接收硬件中断,再由系统调用中断服务子程序。中断可以在任何一个进程运行时产生,因而在中断服务程序
35、被调用时,不能依赖于任何进程的状态,也就不能调用任何与进程运行环境有关的函数。因为设备驱动程序一般支持同一类型的若干设备,所以一般在系统调用中断服务子程序时,都带有一个或多个参数,以唯一标识请求服务的设备。在Linux中,几乎所有的内容都是文件,对设备驱动的访问也是以文件操作的方式实现12。无论是字符设备还是块设备,用户对设备的操作都是通过虚拟文件系统(VFS)转化为设备驱动与硬件操作程序的交互。即使是访问网络设备的socket接口,也是通过VFS实现的。Linux通过VFS为用户提供了一个统一的设备访问接口,使用户能够透明地访问设备驱动程序。所有的硬件设备都可以使用和操作系统调用接口来打开、
36、关闭、读写和I/O控制,而驱动程序的主要任务就是实现这些系统调用函数。Linux系统中的所有硬件设备都使用一种特殊的设备文件来表示。每个设备文件都有两个设备号:一个是主设备号,它用来标识该设备的种类,也标识该设备使用的驱动程序;另一个是次设备号,用来标识使用同一设备驱动程序的不同硬件设备。实现一个嵌入式Linux设备驱动的大致流程如下: 1. 定义主、次设备号,也可以动态获取。2. 实现驱动初始化和清除函数,如果驱动程序采用模块方式,则要实现模块初始化和清除函数。3. 设计所要实现的文件操作,定义file_operations结构。4. 实现所需的文件操作调用,如read、write等。5.
37、实现中断服务函数,并用request_irq向内核注册。中断并不是每个设备驱动所需要。6. 将驱动编译到内核或编译成模块,用insmod命令加载。 7. 生成设备节点文件。file_operation结构中的成员几乎全部是函数指针,它们是系统调用函数的真正处理函数,所以实质上就是函数跳转表。每个进程对设备的操作都会根据major、minor设备号,转换成对file_operation结构的访问。常用的操作包括以下几种:1. lseek,移动文件指针的位置,只能用于可以随机存取的设备。2. read,进行读操作,参数buf为存放读取结果的缓冲区,count为所要读取的数据长度。返回值为负表示读取
38、操作发生错误;否则,返回实际读取的字节数。对于字符型,要求读取的字节数和返回的实际读取字节数都必须是inodei_blksize的倍数。3. write,进行写操作,与read类似。4. readdir,取得下一个目录入口点,只有与文件系统相关的设备程序才使用。5. select,进行选择操作。如果驱动程序没有提供select入口,select操作会认为设备已经准备好进行任何I/O操作。6. ioctl,进行读、写以外的其他操作,参数cmd为自定义的命令。7. mmap,用于把设备的内容映射到地址空间,一般只有块设备驱动程序使用。8. open,打开设备准备进行I/O操作。返回0表示打开成功,
39、返回负数表示失败。如果驱动程序没有提供open入口,则只要/dev/driver文件存在就认为打开成功。9. release,即close操作。在用户自己的驱动程序中,首先要根据驱动程序的功能,完成file_operation结构中函数实现。不需要的函数接口可以直接在 file_operation结构中初始化为NULL。file_operation变量会在驱动程序初始化时注册到系统内部。当操作系统对设备操作时,会调用驱动程序注册的file_operation结构中的函数指针。对于网络设备来说在Linux里有专门的处理。Linux的网络系统主要是基于BSD unix的socket 机制。在系统和
40、驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。所有的Linux网络驱动程序都遵循通用的接口。设计时采用的是面向对象的方法。一个设备就是一个对象(device结构),它内部有自己的数据和方法。每一个设备的方法被调用时的第一个参数都是这个设备对象本身。这样这个方法就可以存取自身的数据(类似面向对象程序设计时的this引用)。 一个网络设备最基本的方法有初始化、发送和接收。网络驱动的收发报文流程图如图2.4。 图 2.4 网络驱动收发报文流程图初始化程序完成硬件的初始化,完成device中变量的初始化和系
41、统资源的申请。发送程序是在驱动程序的上层协议层有数据要发送时自动调用的。一般驱动程序中不对发送数据进行缓存,而是直接使用硬件的发送功能把数据发送出去。接收数据一般是通过硬件中断来通知的。在中断处理程序里,把硬件帧信息填入一个skbuff 结构中,然后调用netif_rx()传递给上层处理。2.3 Linux开源项目1998年4月7日,由Tim OReilly出面,组织并主持了一次“自由软件峰会”,讨论“自由软件”的称谓问题。最终使用“Open Source”(“开源”)这个词。2008年Gartner发表一份研究报告,认为在未来几年,几乎所有企业都将使用开源软件。 Gartner集团在一份名为
42、“The State of Open Source 2008”的研究报告中预测:到2012年,(全球)90以上的企业都将使用开源软件13。2.3.1 路由管理之QuaggaQuagga14是开源的路由软件,为Linux平台上实现了OSPF版本2,OSPF本版3,RIP版本1和版本2,RIPng以及BGP-4等路由协议。Quagga是由Kunihiro Ishiguro开发的GNU Zebra的衍生而来。Quagga树的目标是建立很多紧密联系在Quagga周围的组织,而不是像GNU Zebra现在的集中控制处理一样。Quagga体系结构包括两个功能模块,一个是Vtysh,一个是Zebra。Zeb
43、ra15。Zebra是一种TCP/IP路由软件,它支持BGP-4、BGP-4+、OSPFv2、OSPFv3、RIPv1、RIPv2和RIPng。它符合 GNU的GPL标准,可以运行在Linux和其它Unix变体系统上。Zebra是最先进的路由软件之一,最新版本可以从GUN Zebra Web站点上下载。Zebra可以利用模块法对各种协议进行管理,这种设计是独一无二的。它可以根据用户的需要激活或者停止协议。除此以外,Quagga体系结构拥有丰富的库文件来支持协议的实现和客户端守护进程的开发,明确的配置和管理。Quaaga的守护进程都是可配置的,可利用VtyshQuagga的CLI。Vtysh作为
44、所有守护进程的终端,组织对Quagga所有的命令节点。Quagga体系结构如下图所示16:图 2.5 Quagga结构图2.3.2 Linux逻辑总线之D-BusD-Bus17(其中D原先是代表桌面“Desktop”的意思)是一个提供简单的应用程序互通讯的自由软件,它是作为freedesktop.org项目的一部分开发的。D-Bus深深地受到了DCOP系统的影响而且将在KDE 4版本的release中取代DCOP。它已经被应用在Qt4,GNOME,WINDOWS以及Maemo等系统中。GNOME也逐渐用它来取代了大部分早期的Bonobo机制。D-Bus是相对来讲比较新的进程间通信(IPC)机制
45、。在桌面操作系统中,扮演着一个统一中间层的一个角色。有很多的项目都用了D-Bus,比如:GNOME、Hildon等。 相对于其它的IPC,D-Bus丢掉了一些不必要的、复杂的东西,也正是因为这个原因,D-Bus比较快、简单。D-Bus不和低层的IPC直接竞争,比如sockets, shared memory or message queues。D-Bus的主要目的是提供如下的一些更高层的功能:1. 结构化的名字空间2. 独立于架构的数据格式3. 支持消息中的大部分通用数据元素4. 带有异常处理的通用远程调用接口5. 支持广播类型的通信在系统和用户之间有明确的区分,这对于处理多用户系统非常重要不
46、局限于任何特定的编程语言,同时提供了语言绑定方法,来和一些通用的高级语言绑定,比如C, C+, Python等。D-Bus的设计得益于在桌面系统中其它IPC的长期经验总结,正是有了这些丰富的经验,才使得D-Bus的设计得以优化。同时D-Bus也不会受累于缓慢的功能改进(creeping featurism)。D-Bus的架构以及一些术语18:在D-Bus中,“bus”是核心的概念,它是一个通道,不同的程序可以通过这个通道做些操作,比如方法调用、发送信号和监听特定的信号。通常情况下,只会存在一个系统通道,但是可以有不同的会话通道(每人一个桌面会话)。通过D-Bus发送消息通常包含如下步骤:创建和
47、发送消息给后台bus daemon进程,这个过程中会有两个上下文的切换,后台bus daemon进程会处理该消息,并转发给目标进程。这也会引起上下文的切换目标程序接收到消息,然后根据消息的种类做不同的响应,要么给个确认、要么应答、还有就是忽略它。最后一种情况对于“通知”类型的消息而言,前两种都会引起进一步的上下文切换。如果准备使用D-Bus在不同的进程之间传递大量的数据,D-Bus可能不是最有效的方法,最有效的方法是使用共享内存,但是对共享内存的管理也是相当复杂的。D-Bus的地址和名字是为了把消息正确的送给接收者19,IPC机制需要具有某种或某些寻址能力。D-Bus所设计的寻址方案是非常灵活和高效的。每个通道(bus)都有它私人的名字空间,和别的通道区分开来。21第三章 无线控制器体系结构第三章 无线控制器体系结构3.1 无线控制器的功能无线控制器从根本上说是一种企业级交换机。企业级交换机属于高端交换机,一般采用模块化的结构,可作为企业网络骨干构建高速局域网,所以它通常用于企业网络的最顶层。企业级交换机可以提供用户化定制、优先级队列服务和网络安全控制,并能很快适应数据增长和改变的需要,从而满足用户的需求。对于有更高需求的网络,企业级交换机不仅能传送海量数据和控制信息
限制150内