嵌入式TCPIP协议栈LWIP的并发性能优化资料下载.pdf
- 文档编号:5967180
- 上传时间:2023-05-05
- 格式:PDF
- 页数:66
- 大小:1.92MB
嵌入式TCPIP协议栈LWIP的并发性能优化资料下载.pdf
《嵌入式TCPIP协议栈LWIP的并发性能优化资料下载.pdf》由会员分享,可在线阅读,更多相关《嵌入式TCPIP协议栈LWIP的并发性能优化资料下载.pdf(66页珍藏版)》请在冰点文库上搜索。
鲍建行导师姓名:
冀振燕工程领域:
软件工程学号:
09122391职称:
副教授学位级别:
硕士北京交通大学2011年6月致谢本论文的工作是在本人的导师冀振燕副教授的悉心指导下完成的,冀振燕老师严谨的治学态度和科学的工作方法给了本人极大的帮助和影响。
在此衷心感谢两年来冀振燕老师对本人的关心和指导。
冀振燕老师悉心指导本人完成了实验室的科研工作,在学习上和生活上都给予了本人很大的关心和帮助,在此向冀振燕老师表示衷心的谢意。
冀振燕老师对于本人的科研工作和论文都提出了许多的宝贵意见,在此表示衷心的感谢。
在实验室工作及撰写论文期间,么刚、韩啸等同学对本人论文中的LWIP研究工作给予了热情帮助,在此向他们表达本人的感激之情。
另外也感谢家人,他们的理解和支持使本人能够在学校专心完成本人的学业。
中文摘要嵌入式TCPIP协议栈LWIP主要应用于资源有限的嵌入式设备,它在数据结构和算法的设计上旨在减少内存的使用和代码的大小,在此基础之上能够满足通信的功能而不是传输大规模的网络数据。
但是LWIP在一个安全网关当中作为用户态的协议栈满足不了安全网关设备对实时性和高并发性的要求。
因此需要对LWIP的数据结构和算法在并发性上进行优化。
本人独立完成了LWIP的性能瓶颈分析、LWIP的优化方案制定和实施以及LWIP优化以后的性能对比分析。
首先使用gprof性能剖析工具分析了LWIP的性能瓶颈。
LWIP的性能瓶颈主要在TCP的会话表链表结构和SELECT接口,对于TCP会话表的链表结构,优化方法是采用查询效率最高的哈希结构;
对于SELECT接口,改成高效的EPOLL接口;
此外还优化了主动建立连接时选择本地端口的选择算法;
为了提高并发性能还尝试了使用多线程优化技术。
然后分别使用软件和硬件设备对优化前后的性能进行了对比分析,最后得出了优化的结论。
经过优化以后LWIP的整体性能提升了300,6以上,实时性和并发性也大幅提升,满足了安全网关产品的性能需求,达到了预期的优化目标。
目前该模块已经集成到绿盟科技565版本的引擎代码当中,能够稳定运行并且具有良好的并发性能。
关键词:
LWIP;
并发;
协议栈;
优化ABSTRACTEmbeddedTCPIPprotocolstackLWlPismainlyusedinembeddeddeviceswithlimitedresourcesItsdatastructuresandalgorithmsaredesignedtoreducememoryusageandcodesize,onthisbasistomeetthecommunicationfunctionandnottolarge-scalenetworkdatatransmissionHowever,itCalltmeettherealtimeandhighconcurrencyrequirementsofsecuritygatewaydevicesHencethedatastructuresandalgorithmsofLWlPshouldbeoptimizedforconcurrencyTheauthorcompletesLWIPperformancebottleneckanalysis,LWIPoptimizationplandevelopmentandimplementation,andperformancecomparativeanalysisofLWIPafteroptimizationindependentlyThenthegprofisusedtochecksystemperformancebottlenecksTheperformancebottleneckofLWlPismainlytheTCPsessiontableliststructuresandSELECTinterfacesFortheTCPsessiontableliststructure,themostefficientquerystructure-hashstructureisused;
ForSELECTinterface,efficientEPOLLinterfaceiSused;
Andthelocalportselectionalgorithmtoestablishaconnectioninitiativelyisoptimized;
Inordertoimproveperformance,thesimultaneousmultithreadingoptimizationtechniquesist订edThenusethesoftwareandhardwaretestingdevicestocompareperformancebeforeandafteroptimizationoftheLWIPmoduleAtlastwecometotheconclusionoftheoptimizationresultsTheoverallperformanceofLWIPhasimprovedmorethan30afteroptimizingThereal-timeandconcurrencyhasincreaseddramaticallytomeettheperformancerequirementsofsecuritygatewayproductsandtoachievethedesiredoptimizationgoalsThismodulehasbeenintegratedintothecurrent565versionenginecodeofNSFOCUS,whichcanbestableandhasagoodrunconcurrentperformanceKEYWoRDS:
LWlP;
Concurrency;
Protocolstack;
Optimization目录中文摘要一iiiABSTRACTiv目录vl引言111项目背景l12开源网络协议概述l13项目的目的和意义一314本文主要工作315论文组织结构32LWIP总体概述一521HTTPS代理概述5211HTrPS代理原理5212HTTPS代理层次结构622LWIP模块架构和数据处理7221LWIP模块架构723LWIP模块性能瓶颈分析17231性能分析工具简介一l8232LWIP性能分析183LWIP模块性能优化2131top会话表结构优化2l311hash模块的设计和实现21312hash模块的应用2432select接口优化25321epoll接口的设计和实现2533本地端口选择算法优化2534多线程优化26341线程池介绍26342线程池的设计和实现264LWIP模块优化测试2941gprofi9lll试29411优化前后函数运行的时间29V412优化的总时间对比一3l42SprientTestCenter测试32421SpirentTestCenter介绍一32422SpirentTestCenter测试结果345总结和展望45参考文献46附录A47独创性声明57学位论文数据集581引言11项目背景绿盟科技安全网关设备需要实现https应用层代理的功能,在客户端和服务器之问透明的转发https数据,这样安全网关可以根据需要对加密的http数据进行过滤。
网关设备引擎收到数据包直接交给https代理模块,这些数据包需要经过m层和TCP层的解码以后才能交付给Mps应用,而且还需要维护TCP会话的信息。
因此https应用程序需要一个用户态的解码单元,轻量级的TCPIP协议栈LWIP很适合完成这个功能。
LWIP可以作为独立模块应用于基于代理方式或中间人劫持方式的高速串联网关设备(应用层安全网关、入侵检测设备、应用交付设备)中,提供高实时性,高并发的协议栈支持,为后续的深度解码和内容检测提供数据源。
标准的LWIP的实现并发性能不好,需要做一些并发性的优化来满足安全网关设备的需要。
12开源网络协议概述现今存在的开源网络协议有数十种之多,它们都有各自的特点和适用的环境。
下面介绍五种典型的网络协议,分析了每种协议的特点和选择LWIP的原因。
1BSD协议栈BSD协议栈是其他商业协议栈的起点,大多数TCPIP协议栈都是从BSD栈发展而来的。
BSD协议栈在BSD许可协议下提供了这些协议栈的雏形,而且BSD许可证允许BSD栈以修改或未修改的形式结合这些协议栈的代码而无须向创建者付版税。
BSD栈可完整实现TCPIP协议,但代码庞大,70KB150KB之间,裁减优化有难度。
主要用于unix和linux平台,功能强大,资源占用高。
2uCIP协议栈uCIP是由GuyLancaster编写的一套基于uCOS且开放源码的TCPIP协议栈,它可以移植到其它操作系统,是一套开放源码的可用于研究的TCPIP协议栈。
uCIP的大部分代码是从开源的BSD发布站点移植过来的。
uCIP的具有以下特点:
(1)支持身份验证和压缩报头的PPP协议
(2)优化了的单一请求和回复过程(3)支持IP、UDP和TCP协议t(4)可裁剪(5)可应用于串行链路网络模块(6)带有最小化用户接口根据处理器平台、编译器种类和系统所需协议的模块,协议栈代码占用的空间在30K到60K之间。
3LWIP协议栈LWIP是由AdamDunkels开发的一套用于嵌入式系统的开源TCPIP协议栈。
LWIP是LightWeightInternetProtocal的缩写,和uCIP相比,LWIP既可以移植到操作系统上使用,也可以在没有操作系统的情况下使用。
LWIP协议的实现旨在减少对内存的占用,一般情况下它仅需要几十K的内存就可以运行,这使得LWIP协议栈适合在较为低端的嵌入式设备中使用。
LWIP的特性如下:
(1)支持多网络接口下的IP转发
(2)支持ICMP协议(3)支持扩展的UDP协议(4)支持拥塞控制、R1陌估算、快速恢复和快速转发的TCP协议(5)提供可以提高应用程序性能的内部回调接口(6)提供了可选的BSD接口的API,网络程序可以比较容易的移植。
LWIP在eCos、eCosPro、FreeRTOS、QP、RTLinuxGPL等平台上都有相应的移植,应用非常广泛。
4uIP协议栈uIP是专门为8位和16位微处理器设计的TCPIP协议栈。
它是用C语言编写的,可以移植到多种不同的硬件平台和操作系统上。
它的特点是小,一个编译好的uIP协议栈可以在仅有几KROM和几百字节RAM的嵌入式系统中运行。
5TinyTcp协议栈TinyTcp协议栈是TCPIP的一个精简版的实现,它的代码中集成了FTP客户端,主要是为了固化到ROM中而设计的,可以帮助一些嵌入式系统比如无盘工作站下载操作系统和初始的配置文件,为系统的初始化工作加载文件。
其中BSD协议栈实现了完整的TCPIP协议栈,但代码量太大,高达上百l(不易裁减和优化;
uIP和TinyTcp代码小巧,但是实现功能不够,限制了在一些功能或者性能要求较高场合下的应用,比如高可靠性与大容量的数据传输。
LWIP和uCIP两个协议栈代码容量和实现的功能相似,uCIP协议是针对uCOS设计而LWIP没有操作系统针对性,LWIP当中与平台相关的代码被抽象出来,如果用户需要移植到某一种的操作系统,仅需要实现该部分平台相关代码。
为了方便用户移植,uCIP也抽象了平台相关代码,但是它所调用的系统接口都是根据uCOS系统接口API设计,和2POSIX系统相差较大,移植性和LWIP相比较差。
LWIP还为应用程序支持提供了可选的API,uCOS对应用程序的支持不够好。
根据以上分析,从应用和开发的角度看,选择LWIP作为安全网关设备中用户态的协议栈。
13项目的目的和意义LWIP协议设计的目标是为了在资源有限的小型嵌入式设备上使用。
LWIP能够减少内存的占用,但是无法适应安全网关设备对高并发性的要求。
对LWIP在并发性上进行优化既能发挥LWIP轻量、快速、高效的特点,又能提升安全网关设备的并发性能,满足安全网关设备的实时性和高并发性的要求,在不需要更新产品硬件的前提下能够支持更多的用户数量,节约了一部分硬件成本,带来了更好的用户体验。
而且LWIP可以作为独立模块应用于入侵检测设备、应用交付设备等等,同样能够提升这些设备的并发性能。
14本文主要工作LWIP优化这个项目是本人在绿盟科技实习所做的一个项目,在公司的专家指导之下独立的完成了性能分析、优化方案的制定和实施以及性能测试,圆满的完成了任务。
在这个过程当中学习了性能优化的思路和方法,加深了对网络协议的理解,锻炼了分析问题和解决问题的能力。
15论文组织结构按照项目优化工作的整个过程,将论文分成了五个章节。
第一章,引言。
这一章节主要介绍了LWIP优化项目的背景内容,对几种常见的网络协议以及它们的特点进行分析,还介绍了项目的目的和意义,本文的工作和论文的组织结构。
第二章,LWIP总体概述。
这一章节对LWIP进行了详细的分析,介绍LWIP上层的HTTPS代理模块,LWIP模块中的数据流,然后对LWIP性能瓶颈进行分析。
第三章,LWIP模块性能优化。
这一章节对上一章中分析的性能瓶颈进一步分析,指出了产生瓶颈的原因,给出了优化了方案,针对每一个性能瓶颈都实现了相应的优化。
3第四章,LWIP模块优化测试。
这一章节是优化完以后的LWIP性能测试,分别适用gprof测试软件和SpirentTestCenter设备对LWIP测试,给出了优化前后的性能对比和性能指标。
第五章,总结和展望。
这一章节对整个的优化过程进行了总结。
42LWIP总体概述绿盟科技安全网关设备中HTTPS代理模块能够对加密的HTTP数据进行管理和控制,该模块主要分为四个层次,最底层是设备引擎,实现防火墙的包过滤功能;
中间层是LWIP,主要是维护TCP会话的功能;
LWIP上层是SSL加密子层,实现加密的功能;
最上层是HTTPS代理应用,实现在客户端和服务器之间转发数据以及对数据的管理和控制的功能。
影响实时性和并发性的部分主要是LWIP模块,LWIP模块需要维护大规模的TCP会话表,这些会话表需要频繁的查询。
本章首先阐述了HTrPS代理的原理和层次结构,然后详细的介绍了需要优化的LWIP层的架构和数据流,最后介绍了性能分析的方法和常用的分析工具,并对LWIP模块的性能瓶颈进行了分析。
21HTTPS代理概述211HTTPS代理原理HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。
即H下rP下加入SSL层,HTrPS的安全基础是SSL,用于安全的HTTP数据传输。
由于连接上传输的数据都是经过SSL加密的,正常情况下网关下就不能对HvrPS的数据加以控制。
如果想要在网关处对Mps连接进行管理,必须加入对H1vrPS协议的支持,这就是HTTPS代理的作用。
它一方面接受客户端的请求,把请求转发给服务器,另一方面接受服务器返回的数据,把数据再返回给相应客户端,在客户端和服务器之间透明的转发数据,为客户和服务器之间建立一个虚拟的连接。
因此安全网关能够对客户端和服务器之间的加密数据进行识别和控制【7】。
5图21HTTPS代理212HTTPS代理层次结构HTTPS代理可以分为四个大的层次:
HTTPS应用层、SSL加密层、LWIP层和设备引擎层。
设备引擎收到数据包交给LWIP模块,经过LWIP模块的IP层路由,如果是本机的数据包,则交给LWIP的TCP层处理,否则路由该数据包或者丢弃该包。
TCP层维护会话表信息,首先查找会话表,找到该报文所属会话并把数据经过SSL层解密以后交给应用层,应用层则在客户端和服务器之间转发数据,收到的数据再经过SSL层加密以后,LWIP模块填上TCP和IP头部通过引擎发送出去。
图22是HTTPS代理的结构。
6图22HTTPS代理层次结构22LWIP模块架构和数据处理221LWIP模块架构TCPIP协议被设计成层次结构,每层协议解决通信问题的一部分。
这种分层的思想在协议的设计和实现的每一个方面都有所体现,每层协议使用下一层的服务并为上层提供服务接口。
如果协议栈以严格的分层结构来实现,各层之间的通讯会导致很大的内存拷贝开销,严重影响性能。
如果协议的某些层次的内部数据可以和其它层共享,既能减少了内存空间的占用,又能降低了内存拷贝的资源开销。
虽然底层协议之间或多或少可以进行数据互访,大多数TCPIP协议还是在应用层协议与底层协议之间进行隔离。
在大多数操作系统中,底层协议作为操作系统内核的一部分为应用程序提供通信接口,网络通信和进程问通讯或者文件输入输出相7似。
应用程序并不知道底层协议所使用的缓冲机制,它不能利用缓冲机制对频繁使用的数据进行缓冲。
当应用程序发送数据时,在数据被网络协议处理前,需要把这些数据从应用程序的存储区拷贝到协议栈的内部缓冲区IIJ。
某些嵌入式系统中使用的操作系统LWIP在内核和应用进程之问通常不存在严格的保护屏障,这样在应用程序和底层协议之问可以共享内存,另一方面应用层能够意识到底层协议使用的缓存机制,更有效地重用缓冲区,由于应用进程和网络协议可以共享内存,节省了一部分内存拷贝的开销【3】。
LWIP的设计与实现采用了分层的结构,每层协议都作为一个独立的模块来实现,提供一些与其他
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 TCPIP 协议 LWIP 并发 性能 优化
![提示](https://static.bingdoc.com/images/bang_tan.gif)