东北大学硕士学位论文TCP/IP在高速环境下优化的零拷贝技术实现方法姓名:陈枭申请学位级别:硕士专业:计算机应用技术指导教师:常桂然20060201
东北大学硕士学位论文摘要TCP/IP在高速环境下优化的零拷贝技术实现方法摘要由于高速网络的出现,尤其当网络链路速度高于CPU对TCP/IP协议栈的处理速度时,提高TCP/IP协议性能的瓶颈已经从网络转移到主机CPU上,解决这一问题的方法主要分为两种。第一种是提升NIC(网络接口卡)的功能,智能NIC拥有可编程处理器和内存,能够分担主机的部分或全部的消息处理任务,主要有TCP/IP卸载引擎(TOE)等。第二种是一些用户级别网络协议将内核从关键消息路径中移除,这意味着部分或整个协议将从内核空间移到用户空间,比如首先实现零拷贝的U-NET,以及最近的RDMA和DDP协议等。本文参考TOE和零拷贝等技术已有的研究成果,重点研究了以Linux网络设备驱动程序为基础的零拷贝原理及其实现方法。文中提出的零拷贝解决方案,可用于解决目前网络服务领域面临的问题。本文对Linux网络设备驱动程序结构与功能做了具体研究,并对零拷贝技术从原理到实现进行了较深入的分析。在介绍了Linux内核模块机制(LKM机制)、Linux网络设备驱动程序和零拷贝技术之后,详细描述了驱动程序模块和零拷贝技术实现程序的设计过程。在设计中,将零拷贝技术的实现划分为网络设备内存到内核内存映射和内核内存到应用程序内存映射两部分,并在编写Linux网络设备驱动程序的基础上通过proc文件系统和mmap函数完成了内核内存到应用程序内存映射的实现,完成的软件模块不但可以完成普通网络驱动程序的局域网ping操作,还可以实现内核内存的映射、输出。该解决方案针对Linux系统平台内核版本2.6.1l,采用Linux内核模块设计机制,这样不但有利于与Linux操作系统结合,并且有利于程序模块的开发、维护和测试。最后给出了实验方法和测试结果。测试结果表明,模块和程序运行稳定,达到了预期的目的。关键词:驱动程序,零拷贝,TCP/IP协议栈,DMA,mmap,proe,II.
东北大学硕士学位论文AbstractTheImplementationMethodofZero—copyTechnologywiththeOptimizatonofTCP/IPintheHighSpeedNetworkEnvironmentAbstractDuetotheappearanceofhighspeednetworks,especiallywhenthespeedofnetworklinkishigherthanthattheCPUprocessestheTCP/IPprotocolsstack,thebottleneckofimprovingTCP/IPperformancehasmovedfromthenetworktotheCPUofthehostcomputer.Thesolutionsforthisproblemaremainlydividedintotwotypes:thefirstoneisimprovingtheperformanceofNIC(networkinterfacecard).IntelligentNIChasprogrammableprocessorandmemory,SOitCallundertakepartorallofthemessagemanagementtasksofthehostcomputer.ThemaintechnologyisTCP/IPoffloadengine(TOE)andSOon.Thesecondoneisthatsomeuserlevelnetworkprotocolsremovethekernelfromthekeymessagepath.Thismeanspartoralloftheprotocolswillmovefromthekernelspacetotheuserspace,forexample,U-NETthatfirstimplementszero-copyandrecentlytheRDMA,DDPprotoc01.BasedonTOE,zero—copytechnology,andothersresearchresults,thisthesisfocusesonthezero—copyprincipleandimplementationmethodforLinuxnetworkdevicedriver.Thezero-copymethodproposedinthisthesisCanbeusedtosolvetheproblemsfacedbytheThethesisinvestigatesthearchitectureandfunctionofLinuxnetworkdevicedriverandthoroughlyanalyzesthezero—copytechnologyfromtheorytoimplementation.AfterintroducingLinuxkernelmodulemechanism(LKMmechanism),Linuxnetworkdevicedriver,andzero-copytechnology,thethesisdescribesthedesignofthedrivermoduleandthezero—copyimplementationparticularly.Inthedesign,Idividetheimplementationofzero—copyintotwoparts:themappingfromnetworkdevicememorytokernelmemoryandfromkernelmemorytoapplicationmemory.Thesecondmappingisimplementedbasedonprogrammingnetworkdevicedriverusingtheprocfilesystemandthemmapfunction.TheaccomplishedsoftwaremoduleCannotonlyexecutethenormaloperationsofnetworkdevicedriverinLAN,butalsoimplementkernelmemorymappingandoutputting.ThesolutionisforLinuxkerneledition2.6.11.ByusingLinuxkernelmodule..III..
东北大学硕士学位论文Abstractmechanism,itisnotonlyeasytocombinewithLinuxbutalsoeasytodevelop,maintain,andtest.Finally,thetestmethodandresultsaregiven.Theresultsindicatethatthesoftwaremodulerunsstablyandmeetstheanticipation.Keywords:driver,zero—copy,TCP/IPprotocolsstack,DMA,mmap,proc..IV..
独创性声明本人声明所呈交的学位论文是在导师的指导下完成的。论文中取得的研究成果除加以标注和致谢的地方外,不包含其他人已经发表或撰写过的研究成果,也不包括本人为获得其他学位而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均己在论文中作了明确的说明并表示谢:此思。学位论文作者签名:现象El期:一牟1日一学位论文版权使用授权书本学位论文作者和指导教师完全了解东北大学有关保留、使用学位论文的规定:即学校有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人同意东北大学可以将学位论文的全部或部分内容编入有关数据库进行检索、交流。(如作者和导师同意网上交流,请在下方签名;否则视为不同意。)学位论文作者签名:导师签名:签字日期:签字日期:
东北大学硕士学位论文第一章引言第一章引言1.1课题研究背景与意义Intemet/Intranet的快速发展,极大地推动了网络通信技术、传输模式和传输内容的发展变化。从20世纪80年代起,作为主流局域网技术的以太网由最初的lOMbit/s带宽,发展到100Mbit/s,后来又发展到1000Mbi珧,直到现在的万兆(10Gbit/s)以太网,带宽和运行速度提高了3个数量级【1】。在同一期间,常用广域网的传输速率也由几十kbit/s,发展到lOGbit/s以上。TCP/IP是目前占据主导地位的网络协议,在IntemeVIntranet上广泛应用。不幸的是,基于软件进行协议处理的TCPaP协议,使CPU承担了很大负载。随着网络速度的快速提升,传统的网络数据包处理已经成为整个系统的性能瓶颈,这是因为整个处理过程需要经过网络设备到系统内存空间,系统内存空间到用户应用程序空间这两次拷贝,同时用户还需要向系统发出系统调用。根据Intel的数据统计,由于数据拷贝及其引起的相关开销(如中断,校验等操作)占系统总开销的69%[21,Linux与FreeBSD组成的点对点通信中,数据拷贝、上下文切换和链路层操作在当数据长度分别为64768字节和1460字节时,占总开销的约62%71%[3]。因此消除无用的数据拷贝是提升系统整体性能的关键步骤。目前,低延迟、高带宽的通信系统研究发展很快。由于直接存取的支持,用户空间与NIC之间的数据传输可以不经过数据拷贝和操作系统的干涉。在面向大规模宽带网络入侵检测系统、大流量网络数据下的网络协议分析、宽带网络防火墙、高性能通信系统、高性能路由器、主机路由器、端到端通信系统、虚拟机系统开销测量【4】等领域中,零拷贝的实现都具有举足轻重的作用。为了提高系统性能,国内外的一些科研机构对零拷贝实现进行了深入研究,比如U.NET[51、RDMA[6/和DDP[7]协议等,本文描述的零拷贝实现中将其划分为两个主要方面:消除网络设备到系统内存空间拷贝和消除系统内存空间到用户应用程序空间拷贝。两者的主要实现技术包括DMA(DirectMemoryAccess)和内存映射技术。在本论文中主要研究通过内存映射技术消除数据拷贝。本课题来源于辽宁省自然基金项目,遵循实用性与先进性、高度机动性与可扩充性、安全性与可维护性、高可靠性与稳定性的原则,综合考虑当前高速网络处理数据的需要,为整个项目提供高效、便捷、功能完善的系统与网络底层接口。虽然本项目属于前瞻性
东北大学硕士学位论丈第一章引言科研课题,以研究为主,但如果将研究成果转化为产品的话,具有很广泛的应用基础和市场前景。本课题作为该项目的前期工作,侧重于对网络数据处理流程的分析,并提出一个功能完善、运行高效的总体设计方案,为后期硬件产品的设计和实现打下良好的基础。本文以Linux内核模块机制、Linux网络设备驱动程序、零拷贝技术为基础,参考了国内外先进的研究成果,重点研究了高性能网络设备驱动程序及零拷贝技术实现代码,为该项目的实现做了充分的前期准备。1.2研究内容在本课题的研究当中,我将零拷贝内存映射实现与网络设备驱动程序结合到一个内核模块中加以实现,编写的模块实现了简单的将内核内存映射到应用程序空间和模拟局域网内两台主机实现ping操作的功能,但由于零拷贝实现还包括在接收网络分组时直接通过DMA技术将数据存储到内核内存中,这会涉及到复杂的硬件知识和实现机制,因此,该模块还可以实现更加复杂的功能并达到更高的性能。本文先根据实际的应用需求实现了一个可以完成网络分组接收和发送、设置网络设备参数等多项功能的网络设备驱动程序模块,之后在这个模块的基础上实现了零拷贝的一部分——内核空间内存到应用程序空间的映射,其中使用的主要技术是PROC文件系统和MMAP函数相结合的方法。为了解决多个应用程序互斥访问映射存储空间的问题,还设计了专门的读写指针结构来对其进行解决。最后通过在Linux系统平台加载驱动程序模块和编写测试程序读取并输出映射存储空间内容与事先写入的内容进行比较来验证设计的正确性。1.3可行性分析设计和开发具有高可用性并且实现了零拷贝技术的网络设备驱动程序模块具有一定的可行性。国外主流数据通讯设备供应商提供的网络设备设计与开发方案提供了良好的功能和设计上的参考与借鉴;随着新一代基于TOE技术实现的网络设备的出现,使建立功能更为复杂、性能更为出色的使用零拷贝技术的网络数据处理架构成为可能。最后依据本项目背景,应用了零拷贝技术的网络设备和系统平台在电信运营商、网络信息中心等商业领域中有着广泛的应用前景。鉴于现阶段本课题的主要任务是为了将部分TCP/IP协议栈功能卸载到硬件上进行
东北大学硕士学位论文第一章引言底层处理,设计、实现协议卸载硬件和操作系统的连接接口,并非实现最终产品,因此选择开放式的操作系统平台进行软件模块的研究、设计和开发是一种理想的选择。Linux作为开放源代码的操作系统,为系统的设计提供了一个很好的试验平台,并且由于本系统的实现都是在操作系统级别,而随着Linux操作系统近年应用的逐渐升温,积累了很多开发文档,这些都为系统的开发提供了便利。因而我们采用高性能PC机和Linux操作系统作为开发平台,通过Linux系统的内核模块机制实现了软件模块的设计、开发与调试。1.4本人完成的工作在项目课题的研究与实现过程中,本人独立完成的工作包括:《1)对Linllx系统内核模块机制的研究;(2)对已有的Linux系统网络设备驱动程序总体框架、功能和相关数据结构的研究;(3)为了优化系统对网络数据处理的速度和提高整个系统的性能,在网络设备驱动程序的基础上部分实现了零拷贝技术;(4)零拷贝内存映射功能部分的实现和网络设备驱动程序模块的设计与编码;(5)验证零拷贝功能是否成功实现和对网络设备驱动程序功能测试的程序编码。1.5论文的组织结构根据研究过程中所涉及到的内容和系统实现的步骤,本论文分为以下六个部分:第一童:介绍了零拷贝技术的需求背景,对高速网络环境下系统性能瓶颈进行了分析,并介绍了本课题的研究内容,及本人所作的工作;第二章:分析了Linux内核模块机制、Linux网络设备驱动程序的总体框架和具体功能实现和零拷贝技术原理;第三章:给出了实现零拷贝技术的网络设备驱动程序模块的总体设计:第四章:详细介绍了网络设备驱动程序和零拷贝功能的设计与实现;第五章:介绍了测试程序的具体设计及驱动程序模块和零拷贝功能的测试结果;第六章:对本论文所做的内容进行了总结,并就本课题的后续工作进行了展望。第六章:对本论文所做的内容进行了总结,并就本课题的后续工作进行了展望。