基于无线控制器的接口管理
摘要
随着无线网络的不断发展,有线网络和无线网络的融合必将成为一种趋势,新型的网络设备的产生也将成为一种必然,有线无线一体化交换机就是这种设想的实现。接口管理作为交换机设计中的重要软件组成部分,它在交换机中抽象底层的硬件驱动,定义完备的接口,给上层管理提供接口,是交换机软件开发的主要内容,对于交换机的软硬件的管理和交换性能具有十分重要的意义。
本文以某公司的AX7000有线无线一体化企业级交换机项目为背景,深入研究了Cisco、Juniper等公司的接口管理设计模式,提出了自己的设计方案。基于交换机的PORT和VLAN实现交换机的二层接口、三层接口、协议接口以及各种特性接口的定义,运用Port和VLAN之间的关系使接口之间相关联。实现虚拟网卡驱动以支持三层接口,完成交换机网关功能。添加ARP和路由信息学习管理模块,保证网络安全和数据转发的高效、畅通。最终根据定义的接口实现命令行的配置功能。
关键词:接口管理 无线控制器 网络
Abstract
With the continuous development 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 Switch, 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 Switch’s software&hardware and its performance.
This thesis, via a AX7000 Wire and Wireless integration Enterprise-class Switch project and thoroughly studying on Cisco’s, Juniper’s and some other company’s 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 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 interface’s gateway. And by appending ARP and Management Module of Router information learning, so that we can ensure network’s safety and its efficiency and stabilization of data transmition and finally achieve the configuration’s function of command-line according to its definition of interface.
Keyword:Interface Management Wireless Controller Network目录
第一章 绪论 1
1.1 项目背景 1
1.2 项目来源 2
1.3 项目其间主要完成任务的工作 4
1.4 章节安排 4
第二章 相关技术背景 7
2.1 TCP/IP及Linux TCP/IP协议栈 7
2.2 Linux驱动 9
2.3 Linux开源项目 13
2.3.1 路由管理之Quagga 13
2.3.2 Linux逻辑总线之D-Bus 14
第三章 无线控制器体系结构 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.1 Port接口 48
5.4.2 VLAN接口 55
5.4.3 基于接口的ARP、Route学习 60
5.5 接口管理测试 63
第辣章 结束语 67
6.1 全文总结 67
6.2 工作展望 67
致谢 69
参考文献 71
[NextPage]
基于无线控制器的接口管理
第一章 绪论
1.1 项目背景
上世纪九十年代以来,网络建设突飞猛进。我国的网络建设,包括企业网和广域网络,都实现质的飞跃。无线网络同期也得到广泛应用和发展。近两年来,无线网络有越来越加快发展的趋势。
无线网络自诞生以来,表现了其独特灵活性、便利性及高效率的特点。无线网络的初步应用,可以追溯到第二次世界大战期间,美国陆军采用无线电信号作资料传输。1971年,夏威夷大学的研究员创造了第一个被称作ALOHNET的无线电通信网络。无线局域网(WLAN,Wireless Local Area Network)采用无线通信技术代替传统电缆网络。上世纪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的Cisco 4400系列,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 章节安排
论文主要介绍了研究和实现基于无线控制器的接口管理。
[NextPage]
基于无线控制器的接口管理
第一章:绪论
本章介绍了论文研究背景、来源和组织安排。
第二章:相关技术背景
本章介绍了交换机软件开发中与接口管理相关关键技术。首先介绍了TCP/IP协议的基本信息,紧接着对Linux驱动做了总结,最后对公司使用的两个开源软件Quagga,D-Bus进行简单的介绍。
第三章:无线控制器体系结构
本章对实习公司的产品AX7000的各个功能做了概述,并从本产品的硬件架构和逻辑功能模块详细介绍它的软件结构和设计理念。
第四章:接口管理的需求分析
本章论述了接口管理的概念,并分析了接口管理的需求,最终对系统和接口管理进行了功能建模。
第五章:接口管理的设计实现
本章详细论述了AX7000的软件总体设计以及各个模块的功能,然后对接口管理的上层应用命令行模块和协议模块和底层驱动模块的设计实现进行了详细阐述,最后具体的论述了接口管理的设计与实现,并且列出了测试结果。
第辣章:结束语
本章主要总结了本篇论文的主要内容,介绍了AX7000投入市场后情况,展望了未来的工作。
第二章 相关技术背景
2.1 TCP/IP及Linux TCP/IP协议栈
网络发展最初可以追溯到20世纪50年代,当时人们尝试把分别独立发展的通信技术和计算机技术联系起来,使得在技术上为今后的计算机网络的出现做好了准备。同时建立了一些基础的理论性的概念。1983年出现了可用于异构网络的TCP/IP协议,并作为BSD UNIX操作系统的一部分,TCP/IP协议得到了认可,逐步流行起。从此真正意义上的Internet诞生了[6]。1991年,internet开始用于商业用途,internet的商业化,成为internet发展的催化剂,使得它以空前的速度迅速发展。
Linux 正是一个诞生于网络、成长于网络且成熟于网络的奇特的操作系统。1991年,芬兰大学生Linus Torvalds把自己开发了基于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地址连接起来,在Linux kernel源码中的实现文件是arp.c及rarp.c。再向上是IP协议、ICMP协议和IGMP协议,该层实际完成功能与OSI模型中的网络层相似,其中以IP协议为核心,ICMP协议及IGMP协议协助IP协议以共同完成IP寻址、路由转发及简单的错误回报、流量控制等功能,在内核源码中的实现文件包含了以ip_为前缀的一系列文件及icmp.c、igmp.c。再上是两个传输层的协议,包括面向连接的TCP协议和无连接的UDP协议,在内核源码中的实现文件是以tcp_为前缀的一系列文件及udp.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与UDP端口到端口的互联问题[8]。从协议分层来看,IP是网络层协议,TCP是一个可靠的端口到端口的传输层协议,它是利用IP层进行传接报文的,同时也是面向连接的,通过建立一条虚拟电路在不同的网路间传输报文,保证所传输报文的无丢失性和无重复性。用户数据报文协议(User Datagram Protocol,UDP)也是利用IP层传输报文,但它是一个非面向连接的传输层协议,利用IP层传输报文时,当目的方网际协议层收到IP报文后,必须识别出该报文所使用的上层协议(即传输层协议),因此,在IP报头上中,设有一个“协议”域(Protocol)。通过该域的值,即可判别其上层协议类型。
对于TCP传输,传输节点间先要建立连接,然后通过该连接传输已排好序的报文,以保证传输的正确性,IP层中的代码用于实现网际协议,这些代码将IP头增加到传输数据中,同时也把收到的IP报文正确的传送到TCP层或UDP层。TCP是一个面向连接协议,而UDP则是一个非面向连接协议,当一个UDP报文发送出去后,Linux并不知道也不去关心它是否成功地到达了目的主机。IP层之下,是支持所有Linux网络应用的网络设备层,例如点到点协议 (Point to Point Protocol,PPP)和以太网层。网络设备并非总代表物理设备,其中有一些(例如回送设备)则是纯粹的软件设备,网络设备与标准的Linux设备不同,它们不是通过mknod命令创建的,必须是底层软件找到并进行了初始化之后,这些设备才被创建并可用。因此只有当启动了正确设置的以太网设备驱动程序的内核后,才会有/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),块设备(block device)和网络设备(network device)三种。字符设备是指存取时没有缓存的设备。块设备的读写都有缓存来支持,并且块设备必须能够随机存取(random access),字符设备则没有这个要求。典型的字符设备包括鼠标、键盘、串行口等。块设备主要包括硬盘软盘设备,CD-ROM等。一个文件系统要安装进入操作系统必须在块设备上[9]。
每个设备文件都有其文件属性(c/b),表示是字符设备还是块设备。另外每个文件都有2个设备号,第一个是主设备号,标识驱动程序;第二个是从设备号,标识使用同一个设备驱动程序的、不同的硬件设备。设备文件的主设备号必须与设备驱动程序在登记时申请的主设备号一致,否则用户进程将无法访问驱动程序。
系统调用时是操作系统内核与应用程序之间的接口,设备驱动程序是操作系统内核与机器硬件之间的接口[10]。设备驱动程序是内核的一部分,它完成以下功能:
1. 对设备初始化和释放
2. 把数据从内核传送到硬件和从硬件读取数据3. 读取应用程序传送给设备文件的数据和回送应用程序请求的数据4. 检测和处理设备出现的错误
5.4.3 基于接口的ARP、Route学习
地址解析协议(Address Resolution Protocol,ARP)是在仅知道主机的IP地址时确定其物理地址的一种协议。 因IPv4和以太网的广泛应用,其主要用作将IP地址翻译为以太网的MAC地址。从IP地址到物理地址的映射有两种方式:表格方式和非表格方式。ARP具体说来就是将网络层 (IP层,也就是相当于OSI的第三层)地址解析为数据连接层(MAC层,也就是相当于OSI的第二层)的MAC地址。
路由就是现在广域网的一个核心技术,属于TCP/IP模型的IP层,也就是说路由是通过IP报文头来进行的一种转发技术。设备当要转发一个报文时,它会根据报文的IP头的目的IP地址到路由表中来查找,当找到下一跳表项后,报文会根据下一跳信息被转发出去;如果没有查找到,则报文会被丢弃掉。这些路由表项是通过RIP,OSPF,BGP,IGP等路由学习而来。但在最初的时候是当所有设备没有一条路由时,这些路由学习协议也就没有用武之地了。所以最初的路由有以下两种方式来实现,一是通过ARP协议来组织主机路由,一是通过人为配置得来网段路由。
在AX7000中硬件芯片中集成了路由表。路由表不是一个表项,它是由三个表组成,路由TCAM[39]表,查找转换表,路由表。要查找一条路由首先要从TCAM表开始根据TCAM表中得到的索引,再到查找转换表中找到路由表的索引,则索引到路由表中的表项,最后把报文转发。一个完整的路由查找流程如下:
图 5.11 AX7000路由表关系图
[NextPage]
基于无线控制器的接口管理
在ARP表中又分为两个表一个是下一跳表和MAC表。查找方式如同上。因此ARP和路由的学习在AX7000中是一个很重要环节。
在AX7000中把路由有分为三类,第一类是主机路由,第二类是网段路由,第三类是默认路由。ARP协议所引起的路由学习就是第一类的学习。第一类的学习是和三层接口紧密相连的一块。所以对于ARP的报文AX7000采取了特殊处理,当某个端口收到ARP报文后,如果这个端口是三层接口或者端口所属的VLAN创建了基于VLAN的三层接口,则ARP报文被mirror到芯片的63端口,让CPU处理这个报文。这时就会使用虚拟网卡把报文送到Linux内核协议栈处理,内核会在自己的内核路由表和ARP表进行学习。这个过程就是在前面所说的npd的两个专门的收发报文的线程中引起。
当内核的这个表项经过一定的时间老化掉则内核会通过netlink向应用程序发送广播通知。接口管理的ARP和路由功能模块会对通知消息进行处理,首先会根据这个报文发送ARP请求,发送三次,如果没有响应,则这条ARP表项和相应的路由表项会被删除。
在这个功能模块的设计是用两个hash表实现,一个表对应硬件的nexthop表,一个对应MAC表。下面是两个结构体的定义:
struct arp_snooping_item_s {
unsigned int ifIndex;
unsigned char mac[MAC_ADDRESS_LEN];
unsigned int ipAddr;
unsigned char isTagged;
unsigned short vid;
struct fdb_interface_info_s dstIntf;
unsigned short vidx;
boolean isStatic;
};
struct route_nexthop_brief_s {
unsigned int ifIndex; /* L3 interface index*/unsigned int ipAddr; /* ip address associated with L3 interface*//*Next-Hop Table index to hold Next-Hop detail info*/unsigned int tblIndex;
/*counter for this Next-Hop used by Route entry*/unsigned int rtUsedCnt;
};
如AX7000网关ARP,路由学习流程图图5.12和上面的程序所示,接口管理对ARP和路由管理是通过管理哈希表和交换芯片的硬件表实现。哈希表的信息是硬件表的备份,和内核中的路由表ARP表同步,给上层软件应用提供支持。AX7000上的这些表项的老化机制是借用Linux的内核老化来实现。在内核中ARP表项和路由表项是与某个特定的网络设备相关联的。因此对于ARP和路由的学习都是在创建三层接口的情况下实现,这些接口如前面所说是和不同的端口或VLAN来对应表示特定类型的网络设备,这就把相应的内核表项和外部的端口和VLAN相关联起来。在用户态要用到这个网络设备和内核同步时,就使用三层接口保存的虚拟网络设备内核索引。在虚拟网卡的实现时候有相应的VLAN模式和端口模式,VLAN模式保存VID,端口模式保存端口索引。有了这个相应的设备索引,通过驱动的ioctl就可找见相应的设备。
在ARP的学习主要定义了以下三个函数:
npd_arp_snooping_learning /*主要是对npd的hash表进行操作*/npd_arp_snooping_synchronize_item /*主要是内核和的hash表同步*/nam_arp_snooping_op_item /*主要是对芯片表项的操作*/AX7000的接口管理中对TCP/IP模型的抽象是软硬件的结合,二层的抽象主要是对硬件上的处理,三层的处理是软硬件结合的处理。二层功能主要集中在转发芯片的控制上,通过提供端口的switch接口,用户可以通过命令来对二层转发进行配置和控制。三层功能的实现是以软件为主导,通过创建基于端口或VLAN的三层的接口,实现给端口VLAN配置IP,使端口或VLAN成为接入的一个网关,从而在这些三层接口上进行启动DHCP、telnet、SSH等服务,最最主要的作用就是给无线协议的提供服务。
图 5.12 AX7000ARP报文处理流程
5.5 接口管理测试
接口管理是一个中间层面的东西,它的设计是一种开放式的设计,所以测试首先是代码走读,接着提交测试部进行单个功能方面的测试,最后进行流量测试。
以下是部分接口的的测试用例列表[40]:
表 5.1 AX7000部分接口测试列表
1.1.1
可以成功创建三层vlan接口
可以成功创建
高
No
1.1.2
可以成功实现端口route模式下的三层接口
可以成功创建
高
No
1.2.1
可以成功删除三层vlan接口
可以成功删除
高
No
1.2.2
可以将端口修改为一般的switch模式
可以成功删除
高
No
1.3.1
在一个接口上可以配置不同网段的IP
可以配置
高
No
1.3.2
不同接口不可以配置相同网段的IP
不可以配置
高
No
1.3.3
可以ping通接口上其余 ip地址
可以ping通
高
No
1.3.4
通过其余ip可以进行ip报文转发
可以进行报文转发
高
No
1.3.5
可以通过其余 ip配置静态路由
可以配置,并能正常工作
高
No
1.3.6
可以在其余 ip上运行BGP
路由协议可以正常运行
高
No
1.3.7
可以在其余 ip上运行OSPF
路由协议可以正常运行
高
No
1.3.8
可以在其余 ip上运行RIP
路由协议可以正常运行
高
No
1.8.1
可以通过三层物理接口互相ping通
可以ping通
高
No
1.8.2
静态路由的出接口可以是三层物理接口,并可以根据该条路由完成三层转发可以完成三层转发
高
No
2.3.1
可以正确显示某个甚至所有接口信息 show interface [IFNAME]
若不指定接口名,则显示当前系统所有接口信息中
No
4.4.1
创建三层VLAN,并通过三层进行转发,反复向VLAN里添加端口交换机仍能正常工作,无内存泄漏等异常现象
4.4.2
通过三层物理口线速进行三层转发,报文源mac不断变化,同时用脚本使该物理口不断地进行二三层转发模式切换交换机仍能正常工作,无内存泄漏等异常现象
中
No
5.2.1
在vlan中添加trunk,然后进行三层转发
可以正常进行三层转发
低
No
6.1.1
端口在switch/route/promiscuous之间转换
可以转换,实现功能正常
高
No
部分接口流量测试Bug单:
图 5.13 VLAN接口Bug单截图
图 5.14 流量错误截图
图 5.15 AX7000控制AP Bug截图
以上只是接口管理的部分测试用例和Bug单。经过测试部的测试,现在AX7000在接口管理的基本配置和虚拟网卡,以及ARP路由学习方面已经比较稳定,但是在流量控制上仍然有部分的Bug,网关流量的接收和发送上处理能力比较有限需要改进。总体上说AX7000接口管理的设计和实现是成功的,只有小的部分需要优化。
第辣章 结束语
6.1 全文总结
接口管理在有线无线一体化交换机起着决定性的作用,是交换机软件开发的核心内容。接口管理其内容包含了系统中所有底层硬件驱动、上层应用,是软件层面上的一系列核心结构体,主要目的是为了高效合理的管理交换机,并且以它为核心进行软件开发,扩展功能,版本的移植。因此接口管理逻辑关系复杂,与系统软硬件功能模块紧密相关,也是中高端交换机管理方式的定义。
本文以某公司无线控制器的开发项目为背景,以作者所参与的实际工作为依据,着重论述了一下几个方面:
1. AX7000的总体结构与无线控制器接口管理模块的需求;2. 基于接口管理的命令行模块,协议模块的版本融合的设计实现;3. 给接口管理提供接口的虚拟网卡驱动的设计实现;4. 基于Port和VLAN对接口进行管理的设计实现,以及基于接口的ARP、Route学习的设计与实现;5. 对接口管理的测试结果。
[NextPage]
基于无线控制器的接口管理
6.2 工作展望
2008年8月AX7000在北京京广大酒店开通实验局,经过复杂网络环境和大流量测试,各项指标符合京广大酒店的要求,并在奥运会期间成功应对高客流量的网络使用问题,现在设备已被京广大酒店购入。
2008年9月,一台AX7000,3台AX5000,20个AP在北京工业大学耿丹学院开通实验局。这些设备所组建的网络在大流量有线无线网络同时应用下,一直运行良好。
虽然客户对AX7000的性能都比较满意,但是为了满足用户不断提高的需求,它的部分性能需要优化改进。从现有的测试来看,虽然虚拟网卡驱动在报文的传输时速率已经满足要求,但是仍有进一步提高可能。
AX7000中的功能模块很多,为了提高程序的并发性,在软件实现上使用了多进程和多线程。并发性的提高能带来程序的效率和CPU的利用率,但是这样增加了进程间通信、同步的难度,在后续中最好能把一些功能相近的进程合并,以减少进程间通信的次数。
现在这些功能,公司正在优化,新版本中性能会有很大的提升。
致谢
至本文完成之际,谨向给予我指导、关心和帮助的人们表示衷心的感谢!
深深感谢我的两位导师西安电子科技大学顾新教授、实习公司交换项目组项目经理秦华松,本课题的设计工作始终是在二位导师的悉心指导和热情鼓励下进行的,两位导师倾注了大量的心血,提出了很多重要的方案。他们渊博的知识、认真负责的工作精神、严谨的工作态度令我受益非浅。在此,谨向他们表示我最诚挚的敬意和感谢。
感谢西电软件学院各位老师、同学和同事,你们给了我很多生活上的关心和帮助,知识上的指点迷津,学业上的促进与鼓励。特别要感谢实习公司范成龙、陈斌高级工程师,你们不仅教给我很多解决问题的方法,也给了我很多对待人生的启示。
感谢我的家人,是他们的鼓励和支持激励我不断地努力。
参考文献
[1] 麻信洛,李晓中,董晓宁等.无线局域网构建及应用.北京:国防工业出版社,2006.1~50[2] 王文寿,王珂.网管员必读宝典——网络基础.北京:清华大学出版社,2006.[3] 王文寿,王珂.网管员必读宝典——网络组建.北京:清华大学出版社,2006.89~136[4] JUNOSe 8.2.x Documentation.
http://www.juniper.net/techpubs/resources/cdrom.html[5] Cisco Catalyst 8540 CSR Documents.
http://www.cisco.com/univercd/cc/td/doc/product/l3sw/8540/index.htm[6] W.Richard stevens.TCP/IP详解卷1:协议.北京:机械工业出版社,2000[7] 范磊.Linux内核源代码.北京:人民邮电出版社,2002.[8] Christian Benvenuti.深入理解Linux网络内幕(影印版).南京:东南大学出版社,2006[9] 宋宝华.Linux设备驱动开发详解.北京:人民邮电出版社,2008[10] 倪继利.Linux 内核分析及编程.北京:电子工业出版社,2006.488~536[11] Jonahan Corbet.Linux 设备驱动程序(影印版).北京:中国电力出版社,2005[12] 蒋静,徐志伟.操作系统原理?技术与应用.北京:机械工业出版社, 2004.453~480[13] 全球开源发展十年,国内开源现状堪忧.
http://www.builder.com.cn/2008/0415/815470.shtml[14] Quagga主页.
http://www.quagga.net/about.php[15] Zebra使用手册.
http://www.myfaq.com.cn/2005September/2005-09-13/202094.html[16] 徐志伟,简名世,侯廷昭.于开放软件平台上整合资源预约协议与约束?由以实现讯务工程[17] 文基百科.
http://zh.wikipedia.org/wiki/D-BUS[18] D-Bus.
http://www.freedesktop.org/wiki/Software/dbus[19] Maemo平台开发之D-Bus.
http://www.linuxexpress.com.cn/news/embed/2008-06-06/2139.html[20] 刘晓辉, 李利军.交換机?路由器?防火墙.北京:电子工业出版社,2007[21] 刘乃安,李晓辉.无线局域网 ?(?WLAN?)?—— 原理、技术与应用.西安:西安电子科技大学出版社,2004[22] 王顺满.无线局域网络技术与安全.北京:机械工业出版社,2005[23] Matthew S.Gast .802.11无线网络权威指南.南京:东南大学出版社,2006[24] ?Jim Metzler,Lynn DeNoia.第三层交換.北京:机械工业出版社,2000[25] 苏绍华.OCTEN CPU 芯片总结.北京傲天动联技术有有线公司培训资料[26] 戴多好.AX7000硬件设计文档.北京傲天动联技术有有线公司培训资料[27] 陈斌.AX7000软件设计文档.北京傲天动联技术有有线公司培训资料[28] Eric Hall.Internet 核心协议权威指南.北京:中国电力出版社,2002[29] Marvell 98DX275/804芯片文档.北京傲天动联技术有有线公司培训资料[30] vty结构分析
http://blog.chinaunix.net/u2/79955/showart_1333795.html[31] Todd Lammle,Eric Quinn.CCNP:交换学习指南.北京:电子工业出版社. 2003.[32] IEEE Standards for Local and metropolitan area networks Virtual Bridged Local Area Networks—Amendment 3: Multiple Spanning Trees.Part13[33] Klaus Wehrle,Frank Pahilke,Hartmut Ritter,Daniel Miiller,Marc Bechler.Linux网络体系结构.北京:清华大学出版社,2006[34] Prachi Kashikar.What’s compat_ioctl?.
http://kerneltrap.org/node/6528[35] 吴恒奎.Linux指令速查手册.北京:人民邮电出版社,2007[36] 俞永昌.Linux设备驱动开发技术及应用.北京:人民邮电出版社,2008[37] Regis J.(Bud) Bates,Jr.Zeecil Kimmel.北电网络第三层交换技术.北京:机械工业出版社,2002[38] IEEE Standards for Local and metropolitan area networks Virtual Bridged Local Area Networks.Part7~8[39] TCAM.
http://baike.baidu.com/view/1135971.html[40] 韩涛.AX7000软件测试文档.北京傲天动联技术有有线公司测试资料
基于无线控制器的接口管理下载如图片无法显示或论文不完整,请联系qq752018766