基于无线控制器的接口管理毕业论文.docx

上传人:b****5 文档编号:28723131 上传时间:2023-07-19 格式:DOCX 页数:79 大小:940.49KB
下载 相关 举报
基于无线控制器的接口管理毕业论文.docx_第1页
第1页 / 共79页
基于无线控制器的接口管理毕业论文.docx_第2页
第2页 / 共79页
基于无线控制器的接口管理毕业论文.docx_第3页
第3页 / 共79页
基于无线控制器的接口管理毕业论文.docx_第4页
第4页 / 共79页
基于无线控制器的接口管理毕业论文.docx_第5页
第5页 / 共79页
点击查看更多>>
下载资源
资源描述

基于无线控制器的接口管理毕业论文.docx

《基于无线控制器的接口管理毕业论文.docx》由会员分享,可在线阅读,更多相关《基于无线控制器的接口管理毕业论文.docx(79页珍藏版)》请在冰豆网上搜索。

基于无线控制器的接口管理毕业论文.docx

基于无线控制器的接口管理毕业论文

基于无线控制器的接口管理毕业论文

目录

第一章绪论1

1.1项目背景1

1.2项目来源2

1.3项目其间主要完成任务的工作4

1.4章节安排4

第二章相关技术背景7

2.1TCP/IP及LinuxTCP/IP协议栈7

2.2Linux驱动9

2.3Linux开源项目13

2.3.1路由管理之Quagga13

2.3.2Linux逻辑总线之D-Bus14

第三章无线控制器体系结构17

3.1无线控制器的功能17

3.2无线控制器的体系结构18

3.2.1功能体系结构模块18

3.2.2物理体系结构模块20

第四章接口管理需求分析23

4.1接口管理概念23

4.2接口管理需求24

4.3接口管理建模27

第五章接口管理设计实现31

5.1软件模块设计实现31

5.2基于接口的应用层设计实现34

5.2.1命令行模块设计实现34

5.2.2协议模块设计实现36

5.3接口底层驱动模块设计实现39

5.3.1虚拟网卡驱动模块设计实现39

5.3.2交换芯片驱动模块设计实现47

5.4接口管理设计实现48

5.4.1Port接口48

5.4.2VLAN接口55

5.4.3基于接口的ARP、Route学习60

5.5接口管理测试63

第六章结束语67

6.1全文总结67

6.2工作展望67

致谢69

参考文献71

第一章绪论

1.1项目背景

上世纪九十年代以来,网络建设突飞猛进。

我国的网络建设,包括企业网和广域网络,都实现质的飞跃。

无线网络同期也得到广泛应用和发展。

近两年来,无线网络有越来越加快发展的趋势。

无线网络自诞生以来,表现了其独特灵活性、便利性及高效率的特点。

无线网络的初步应用,可以追溯到第二次世界大战期间,美国陆军采用无线电信号作资料传输。

1971年,夏威夷大学的研究员创造了第一个被称作ALOHNET的无线电通信网络。

无线局域网(WLAN,WirelessLocalAreaNetwork)采用无线通信技术代替传统电缆网络。

上世纪90年代初,无限局域网络设备相继出现。

以900MHz、2.4MHz和5GHz为主要頻率。

1997年6月,第一个无线局域网标准IEEE802.11正试颁布实施。

1999年9月802.11b技术标准正式发布,802.11带来了网络建设的一场“革命”[1]。

为无线局域网的物理层和MAC层提供了统一的标准,为无线网络市场迅速发展奠定基础。

近年来,国际无线网络市场发展迅速。

据市场调查,1998年美国无线网络服务的收入为300亿美元,收入主要还是来源于移动电话的无线语音服务。

到1999年美国无线网络数据服务的收入达到6亿美元。

预计2003年美国无线网络数据服务的收入可以达到40亿美元。

到了2005年美国的无线服务收入将达到600亿美元,其中无线数据通信的收入达到84亿美元,将增长14倍。

到2006年,全球无线网络设备的市场销售额将达到103亿美元。

2001年全球无线上网人口总数已达3900万人,预计到2005年底可达到7.29亿人,并且全球将有36%的上网人口通过无线电子设备上网。

无线网络的应用将持续高速发展。

人们已经不满足原来的移动电话服务的内容,无线网络的语音服务必然向数据服务发展。

特别是信息技术的广泛应用,移动办公和移动商务的要求,也必然推动无线网络应用的发展。

无线网络补充延伸了有线网络,扩大了网络的覆盖率和提高了网络的应用范围[2]。

到现在为止,无线局域网一般是由连接到接入点的客户机构成,而接入点要提供安全功能、管理功能和其他控制网络无线部分所需的智能性。

由此带来的问题是,管理多个接入点,对于可能涉及几百或几千个接入点的网络来说是一种无法应付的局面。

在这种情况下,一种新的产品——WLAN交换机应运而生。

许多资深研究以太网技术及交换机技术的网络公司正投入大量研究力量从事无线交换机的研发,例如Cisco,H3C等等,这两家公司都已有自己成熟的产品,Cisco的Cisco4400系列,H3C的WX5002系列,但这些都只停留在无线控制这一块,而没有把有线和无线完整的融合起来。

无线交换所带来的,不仅是提升无线网络的可管理性、安全性和部署能力,还降低了组网成本,由此成为无线局域网领域一种新的发展趋势。

传统的企业级无线局域网采用的是以太网交换机+企业级AP的2级模式,由AP来实现无线局域网和有线网络之间的桥接工作。

整个网络的无线部分,是以AP为中心的一片片覆盖区域组合而成的。

这些区域各自独立工作,AP作为该区域的中心节点,承担着数据的接收、转发、过滤、加密,客户端的接入、断开、认证等任务。

所有的管理工作,比如channel管理和安全性设置,都必须针对每一台AP单独进行。

当企业的无线局域网规模较大时,这就成了网络管理员相当繁重的负担。

新出现的无线交换机通过集中管理、简化AP来解决这个问题。

在这种构架中,无线交换机替代了原来二层交换机的位置,轻量级AP(Light-Weight AP)(也称智能天线)取代了原有的企业级AP[3]。

通过这种方式,就可以在整个企业范围内把安全性、移动性、QoS和其他特性集中起来管理。

虽然无线交换机采用和普通交换机类似的方式与AP实现连接。

但在802.11帧处理上与传统方式不同:

它不将802.11帧转换为以太帧,而是将其封装进802.3帧当中,然后通过专用隧道传输到无线交换机。

从有线网的角度看,无线交换机加轻量级AP更像是一台伸展出很多外接天线的增强型AP。

无线交换机的优势,在于三个主要方面:

更高的安全性,更低的TCO,更有效率的管理。

在新的AP与交换机之间的通信的隧道协议和管理协议(LWAPP)标准定制以后,不同厂家的无线交换机和AP不能通信的时代已成为过去,LWAPP在市场中得到广泛接受,减少了被迫锁定于一个厂商,即只有将接入点与同一厂商的WLAN系统设备共用,才能获得最优运行效果的现象。

LWAPP还提供了一个开放标准解决方案,可在多厂商集中WLAN架构上提供安全的第二层和第三层网络服务。

此外,凭借LWAPP,第三方厂商也可拥有一个用于部署应用的通用架构。

无线交换机将会成为网络设备发展的主流。

1.2项目来源

本文作者实习公司是业界唯一一个有线无线一体化宽带网络解决方案提供商。

依托它们的产品,用户可以基于单一平台部署有线网络、WLAN网络及企业统一安全策略。

传统企业网络中,有线网络设备及管理系统、无线网络设备及管理系统、安全策略管理系统各自独立,分别维护,不但增加了IT人员的负担,而且大大增加了企业的IT基础设施投资。

傲天动联提供单一的有线无线一体化产品平台和管理平台,用户可以基于同一设备进行WLAN数据和有线数据的转发策略控制以及进行第七层安全策略部署,极大的简化了网络的部署和管理并大幅度节约网络基础设施投资。

基于以上的市场需求,公司率先推出了业界领先、完全自主知识产权的有线无线一体化解决方案,包括业界最高转发性能和最具安全性的AX7000系列高端一体化安全交换机、适用于中小型企业的AX5000/3000系列一体化安全交换机、具有零配置自愈合功能的室外型无线接入点、基于开放式安全平台的AUTEWARE操作系统等,为客户提供安全、高速、统一管理、易于部署的整网多业务解决方案。

而接口管理正是交换机的核心功能,同样有线无线一体化交换机也不例外。

在现有的网络设备生产公司中,接口都没有十分统一的清晰定义,各有巧妙。

但是从总体上说,其内容涵盖了系统中所有底层硬件驱动、上层应用,是软件层面上的一系列核心结构体,主要目的是为了高效合理的管理交换机,并且以它为核心进行软件开发,扩展功能,版本的移植。

因此接口管理逻辑关系复杂,与系统软硬件功能模块紧密相关,也是中高端交换机管理方式的定义。

不同的设计最终呈现给用户的时候,有很大的差别,从Cisco和Juniper设备配置文档中就可见一斑。

从Cisco的配置手册[4]上可以看出,Cisco对接口定义最广泛,因此也最混乱,接口太多。

在Cisco的8540配置文档中可以看出,接口与路由有很大的关系,路由是把包从一个链路传送到另外一个链路,而为了实现这个过程,就要定义数据包从接受到发送这一过程的接口特征。

接口特征包括IP地址,端口地址,数据封装方法和介质类型,这些所说的只是其中的一部分。

可以看出Cisco的接口定义更像一个面向对象程序中的类,当然把它们定义成可以独立出来的模式,可以很方便的把它们组织成一个树形结构,加快了包在三层交换机中的转发速度。

Juniper公司的接口管理[5]相对要清晰一点,把接口的概念分层了,从物理层到链路层到网络层,逻辑上的可以有好几层接口,类似一个接口栈,完整的接口栈实现完整的报文从网络协议栈最底层到顶层的处理过程。

例如:

用户可以根据自己的需求配置T3和T1链路的物理和逻辑特征或根据中心交换机和OC3链路的物理和逻辑特点从网络的下层核心传出,这些物理和逻辑的特点就定义了一个接口。

而接口的配置应该从低到高合理的配置,比如:

原来的配置是IP运行在ATM上,现在想改变原来的模式,IP要运行在PPP上,PPP运行在ATM上,则就要先删除IP,再配置PPP,然后重新配置IP,才能正确的运行。

从这些可以看出Juniper公司对接口定义比较严格。

而接口的管理也更加的灵活。

在作者实习公司的有线无线一体化交换机中,接口管理吸收了Cisco和Juniper的优点,提出了自己相对简单但功能全面、灵活的接口管理方案。

把接口管理规划入两个主要的逻辑结构中——Port、VLAN中,用这两个数据结构去定义各个接口功能。

1.3项目其间的主要工作

本次课题开发的内容是根据作者实习公司的产品AX7000和AX5000有限线无线一体化交换机的研发而来。

这两款新产品给用户提供了无线网络管理和有线网络管理的一体化解决方案,最大化的减小了用户的投资,并使用户长期受益。

新产品在设计研发过程中遵守IEEE的802等标准。

系统采用MIPS架构,LINUX服务器平台,进行基于高速交换芯片的嵌入式开发。

将优化过的一些相关理论方法应用到实际开发过程中去,保障了系统性能、特性的安全稳定。

本论文的研究内容是实习公司AX7000和AX5000有线无线一体化交换机的核心功能接口管理模块,本文作者主要完成以下几个方面的工作:

1.项目开始前期。

阅读有关TCP/IP协议书籍、Socket编程书籍、线程管理和内存管理书籍,硬件芯片文档,产品设计架构文档,了解国内三层交换机框架的一些情况。

阅读交换芯片的驱动源代码。

2.对产品硬件结构进行培训,与硬件工程师一起对交换芯片的硬件转发能力进行测试验证。

3.与交换项目组的开发人员和软件架构工程师进行接口管理方面的设计。

4.完成接口管理的基础,Linux虚拟网卡驱动的设计、编码、测试。

5.完成RSTP和MSTP的融合,为上层管理提供相应的接口。

6.实现ARP,路由学习的软硬件控制,以及一些特色功能接口。

7.调试报文收发流程的性能。

1.4章节安排

论文主要介绍了研究和实现基于无线控制器的接口管理。

第一章:

绪论

本章介绍了论文研究背景、来源和组织安排。

第二章:

相关技术背景

本章介绍了交换机软件开发中与接口管理相关关键技术。

首先介绍了TCP/IP协议的基本信息,紧接着对Linux驱动做了总结,最后对公司使用的两个开源软件Quagga,D-Bus进行简单的介绍。

第三章:

无线控制器体系结构

本章对实习公司的产品AX7000的各个功能做了概述,并从本产品的硬件架构和逻辑功能模块详细介绍它的软件结构和设计理念。

第四章:

接口管理的需求分析

本章论述了接口管理的概念,并分析了接口管理的需求,最终对系统和接口管理进行了功能建模。

第五章:

接口管理的设计实现

本章详细论述了AX7000的软件总体设计以及各个模块的功能,然后对接口管理的上层应用命令行模块和协议模块和底层驱动模块的设计实现进行了详细阐述,最后具体的论述了接口管理的设计与实现,并且列出了测试结果。

第六章:

结束语

本章主要总结了本篇论文的主要内容,介绍了AX7000投入市场后情况,展望了未来的工作。

 

第二章相关技术背景

2.1TCP/IP及LinuxTCP/IP协议栈

网络发展最初可以追溯到20世纪50年代,当时人们尝试把分别独立发展的通信技术和计算机技术联系起来,使得在技术上为今后的计算机网络的出现做好了准备。

同时建立了一些基础的理论性的概念。

1983年出现了可用于异构网络的TCP/IP协议,并作为BSDUNIX操作系统的一部分,TCP/IP协议得到了认可,逐步流行起。

从此真正意义上的Internet诞生了[6]。

1991年,internet开始用于商业用途,internet的商业化,成为internet发展的催化剂,使得它以空前的速度迅速发展。

Linux正是一个诞生于网络、成长于网络且成熟于网络的奇特的操作系统。

1991年,芬兰大学生LinusTorvalds把自己开发了基于UNIX的开源操作系统Linux,为了不让这个羽毛未丰的操作系统矢折,Linus将自已的作品Linux通过Internet发布。

从此一大批知名的、不知名的电脑黑客、编程人员加入到开发过程中来,Linux逐渐成长起来。

现在Linux已经是一种自由的UNIX类多用户、多任务的操作系统,可运行在多种计算机平台,已成为应用广泛、可靠性高、功能强大的计算机操作系统。

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之上是地址解析协议和反向地址解析协议(ARP/RARP),主要功能为将网卡硬件设备号(MAC地址)与分配的IP地址连接起来,在Linuxkernel源码中的实现文件是arp.c及rarp.c。

再向上是IP协议、ICMP协议和IGMP协议,该层实际完成功能与OSI模型中的网络层相似,其中以IP协议为核心,ICMP协议及IGMP协议协助IP协议以共同完成IP寻址、路由转发及简单的错误回报、流量控制等功能,在内核源码中的实现文件包含了以ip_为前缀的一系列文件及icmp.c、igmp.c。

再上是两个传输层的协议,包括面向连接的TCP协议和无连接的UDP协议,在内核源码中的实现文件是以tcp_为前缀的一系列文件及udp.c。

最上层是丰富的应用层协议,内核源码中并不包含此部

图2.1TCP/IP协议栈

分内容的具体实现文件,而是由具体的应用程序根据RFC标准对其加以实现。

所以对TCP/IP协议栈按层次构件化的任务主要集中在三层上:

ARP/RARP层,IP/ICMP/IGMP层,TCP/UDP层。

图2.2描述了Linux对TCP/IP协议族的实现机制。

图2.2Linux对TCP/IP协议族实现

Linux支持BSD的套接字和全部的TCP/IP协议,是通过网络协议将其视为一组相连的软件层来实现的,BSD套接字(BSDSocket)由通用的套接字管理软件支持,该软件是INET套接字层,用来管理基于IP的TCP与UDP端口到端口的互联问题[8]。

从协议分层来看,IP是网络层协议,TCP是一个可靠的端口到端口的传输层协议,它是利用IP层进行传接报文的,同时也是面向连接的,通过建立一条虚拟电路在不同的网路间传输报文,保证所传输报文的无丢失性和无重复性。

用户数据报文协议(UserDatagramProtocol,UDP)也是利用IP层传输报文,但它是一个非面向连接的传输层协议,利用IP层传输报文时,当目的方网际协议层收到IP报文后,必须识别出该报文所使用的上层协议(即传输层协议),因此,在IP报头上中,设有一个“协议”域(Protocol)。

通过该域的值,即可判别其上层协议类型。

对于TCP传输,传输节点间先要建立连接,然后通过该连接传输已排好序的报文,以保证传输的正确性,IP层中的代码用于实现网际协议,这些代码将IP头增加到传输数据中,同时也把收到的IP报文正确的传送到TCP层或UDP层。

TCP是一个面向连接协议,而UDP则是一个非面向连接协议,当一个UDP报文发送出去后,Linux并不知道也不去关心它是否成功地到达了目的主机。

IP层之下,是支持所有Linux网络应用的网络设备层,例如点到点协议(PointtoPointProtocol,PPP)和以太网层。

网络设备并非总代表物理设备,其中有一些(例如回送设备)则是纯粹的软件设备,网络设备与标准的Linux设备不同,它们不是通过mknod命令创建的,必须是底层软件找到并进行了初始化之后,这些设备才被创建并可用。

因此只有当启动了正确设置的以太网设备驱动程序的内核后,才会有/dev/eth0文件,ARP协议位于IP层和支持地址解析的协议层之间。

2.2Linux驱动

Linux设备驱动程序在Linux的内核源代码中占有很大的比例,源代码的长度日益增加,主要是驱动程序的增加。

在Linux内核的不断升级过程中,驱动程序的结构还是相对稳定。

在2.4.xx到2.6.xx的变动里,驱动程序的编写做了一些改变,但是从2.4.xx的驱动到2.6.xx的移植只需做少量的工作。

Linux系统的设备分为字符设备(chardevice),块设备(blockdevice)和网络设备(networkdevice)三种。

字符设备是指存取时没有缓存的设备。

块设备的读写都有缓存来支持,并且块设备必须能够随机存取(randomaccess),字符设备则没有这个要求。

典型的字符设备包括鼠标、键盘、串行口等。

块设备主要包括硬盘软盘设备,CD-ROM等。

一个文件系统要安装进入操作系统必须在块设备上[9]。

每个设备文件都有其文件属性(c/b),表示是字符设备还是块设备。

另外每个文件都有2个设备号,第一个是主设备号,标识驱动程序;第二个是从设备号,标识使用同一个设备驱动程序的、不同的硬件设备。

设备文件的主设备号必须与设备驱动程序在登记时申请的主设备号一致,否则用户进程将无法访问驱动程序。

系统调用时是操作系统内核与应用程序之间的接口,设备驱动程序是操作系统内核与机器硬件之间的接口[10]。

设备驱动程序是内核的一部分,它完成以下功能:

1.对设备初始化和释放

2.把数据从内核传送到硬件和从硬件读取数据

3.读取应用程序传送给设备文件的数据和回送应用程序请求的数据

4.检测和处理设备出现的错误

图2.3完整地表现了Linux驱动和系统之间的关系。

图2.3Linux设备驱动模块图

Linux的设备驱动程序可以分为3个主要组成部分[11]:

1.自动配置和初始化子程序,负责监测所有驱动的硬件设备是否存在和能否正常工作。

如果该设备正常,则对这个设备及其相关的设备驱动程序需要的软件状态进行初始化。

这部分驱动程序仅在初始化时被调用一次。

2.服务于I/O请求的子程序,又称为驱动程序的上半部分。

调用这部分程序是由于系统调用的结果。

这部分程序在执行时,系统仍认为是与进行调用的进程属于同一个进程,只是由用户态变成了核心态,具有进行此系统调用的用户程序的运行环境,因而可以在其中调用sleep()等与进程运行环境有关的函数。

3.中断服务子程序,又称为驱动程序的下半部分。

在Linux系统中,并不是直接从中断向量表中调用设备驱动程序的中断服务子程序,而是由Linux系统来接收硬件中断,再由系统调用中断服务子程序。

中断可以在任何一个进程运行时产生,因而在中断服务程序被调用时,不能依赖于任何进程的状态,也就不能调用任何与进程运行环境有关的函数。

因为设备驱动程序一般支持同一类型的若干设备,所以一般在系统调用中断服务子程序时,都带有一个或多个参数,以唯一标识请求服务的设备。

在Linux中,几乎所有的内容都是文件,对设备驱动的访问也是以文件操作的方式实现[12]。

无论是字符设备还是块设备,用户对设备的操作都是通过虚拟文件系统(VFS)转化为设备驱动与硬件操作程序的交互。

即使是访问网络设备的socket接口,也是通过VFS实现的。

Linux通过VFS为用户提供了一个统一的设备访问接口,使用户能够透明地访问设备驱动程序。

所有的硬件设备都可以使用和操作系统调用接口来打开、关闭、读写和I/O控制,而驱动程序的主要任务就是实现这些系统调用函数。

Linux系统中的所有硬件设备都使用一种特殊的设备文件来表示。

每个设备文件都有两个设备号:

一个是主设备号,它用来标识该设备的种类,也标识该设备使用的驱动程序;另一个是次设备号,用来标识使用同一设备驱动程序的不同硬件设备。

实现一个嵌入式Linux设备驱动的大致流程如下:

1.定义主、次设备号,也可以动态获取。

2.实现驱动初始化和清除函数,如果驱动程序采用模块方式,则要实现模块初始化和清除函数。

3.设计所要实现的文件操作,定义file_operations结构。

4.实现所需的文件操作调用,如read、write等。

5.实现中断服务函数,并用request_irq向内核注册。

中断并不是每个设备驱动所需要。

6.将驱动编译到内核或编译成模块,用insmod命令加载。

7.生成设备节点文件。

file_operation结构中的成员几乎全部是函数指针,它们是系统调用函数的真正处理函数,所以实质上就是函数跳转表。

每个进程对设备的操作都会根据major、minor设备号,转换成对file_operation结构的访问。

常用的操作包括以下几种:

1.lseek,移动文件指针的位置,只能用于可以随机存取的设备。

2.read,进行读操作,参数buf为存放读取结果的缓冲区,count为所要读取的数据长度。

返回值为负表示读取操作发生错误;否则,返回实际读取的字节数。

对于字符型,要求读取的字节数和返回的实际读取字节数都必须是inodei_blksize的倍数。

3.write,进行写操作,与read类似。

4.readdir,取得下一个目录入口点,只有与文件系统相关的设备程序才使用。

5.select,进行选择操作。

如果驱动程序没有提供select入口,select操作会认为设备已经准备好进行任何I/O操作。

6.ioctl,进行读、写以外的其他操作,参数cmd为自定义的命令。

7.mmap,用于把设备的内容映射到地址空间,一般只有块设备驱动程序使用。

8.open,打开设备准备进行I/O操作。

返回0表示打开成功,返回负数表示失败。

如果驱动程序没有提供open入口,则只要/dev/driver文件存在就认为打开成功。

9.release,即close操作。

在用户自己的驱动程序中,首先要根据驱动程序的功能,完成file_operation结构中函数实现。

不需要的函数接口可以直接在file_operation结构中初始化为NULL。

file_operation变量会在驱动程序初始化时注册到系统内部。

当操作系统对设备操作时,会调用驱动程序注册的file_operation结构中的函数指针。

对于网络设备来说在Linux里有专门的处理。

Linux的网络系统主要是基于BSDunix的socket机制。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1