论文部分内容阅读
社会的需求和技术的进步促进了网络带宽和传输速度的飞速发展。当网络进入Gbit或者更高速度传输时,提高TCP/IP协议性能的主要任务已经从网络转移到主机CPU上,传统的基于软件进行TCP/IP协议处理的方式成为高性能网络传输的瓶颈,这对服务器、路由器、防火墙等网络设备的性能提高带来了很大的负面影响。
为提高性能,国内外一些科研机构及相关领域的跨国公司对TCP/IP协议栈的加速技术进行了深入的研究。通过分析协议栈的实现过程,得出数据复制、协议解析和中断处理等三个因素是占据主机CPU的主要开销的结论。围绕这三个方面,本文对国内外相关研究的各种成果,进行了评述和系统分析。
在综述的基础上,本文进行了TCP/IP协议卸载及硬件加速技术的研究,针对开源Linux操作系统,设计了一种基于TOE-Linux体系结构的整体加速方案。基本思想是利用硬件处理速度快的特性,将协议处理过程放到FPGA等硬件处理单元(为了便于实验和调试)上完成,分担服务器CPU对TCP/IP协议栈的处理任务。同时,采用多种加速技术复用的技术思路,综合运用软硬件实现协议技术、零拷贝技术和减少中断技术,从而将服务器的CPU解放出来,提高CPU的工作效率,从解决瓶颈的角度使高速网络的整体传输性能大幅提高。
在对Linux系统内核协议栈整体流程和可加载内核模块机制(LKM)进行分析的基础上,给出了一种改进的、以Linux系统内核网络设备驱动程序为基础的零拷贝原理及其实现方法。对Linux网络设备驱动结构与功能进行了具体研究,并对零拷贝技术从原理到实现进行了深入的分析。详细描述了驱动程序模块和零拷贝技术实现程序的设计过程。在设计中,将零拷贝技术的实现划分为网络设备内存到内核内存映射和内核内存到应用程序内存映射两部分,并在编写Linux网络设备驱动程序的基础上,通过proc文件系统和mmap函数,完成了内核内存到应用程序内存映射的实现,完成的软件模块不但可以替代普通网络设备驱动程序,还可以实现内核内存的映射、输出。同时,给出了相应的实验和测试方法、测试结果达到了预期目的。
对Linux操作系统中的TCP/IP协议栈的卸载方法展开了研究。针对Linux操作系统,定义了卸载引擎的体系结构,讨论了卸载引擎与服务器操作系统连接接口的解决办法,提出了使用卸载支持模块来完成两者之间连接的实现策略。根据所提出的策略,对Linux系统内核协议栈进行了分析和修改;利用LKM机制对卸载支持模块进行编程实现。测试证明卸载支持模块可以成功地屏蔽原来的Linux内核协议栈,使INETSocket层与驱动程序之间可以直接交互。
最后,完成支持TCP/IP协议栈卸载、硬件实现协议、多种加速技术复用的新型网卡的总体设计方案,并且就协议栈的设计以及硬件实现方法进行了研究。利用VHDL语言、FPGA和Xilinx公司的ML403开发板,对协议栈的几个主要模块进行了状态和硬件描述,对部分模块进行了功能仿真,最终形成了一种新的加速网卡的总体技术原型。
测试和功能仿真的实验结果表明:这种智能的TOE网络接口卡原型带有可编程处理器和缓冲内存,可以通过硬件快速地实现TCP/IP协议栈,并在解析过程中,实现了数据的零拷贝,并且大大减少了中断次数。因此,所定义的卸载引擎体系结构和设计是合理的,相应的解决方案也是可行的,这项成果为开发实用化产品打下了技术基础。