论文部分内容阅读
大数据时代,急剧增长的网络速度和数据流量令当今各种网络设备不堪重负。更糟糕的是,随着网络应用的日趋复杂,网络系统的处理任务正从简单的包转发、包过滤演变到深度数据包检查、网络异常检测、计算密集处理(加/解密、压缩/解压缩)、数据缓存等复杂功能,然而目前主要依靠专用硬件(如ASIC、网络处理器)提供处理能力的网络设备却面临着灵活性差和开发周期长的问题。随着通用多核、众核处理器令人瞩目的发展,处理器的计算能力迅速提高,利用通用处理器开发灵活性好和性能高的网络设备成为工业界和学术界十分感兴趣的研究课题。然而在通用计算平台上实现高性能网络系统面临许多困难和挑战,其中主要的一些困难包括:通用操作系统对高速网络处理的支持能力较差,网络程序的并行化方法没有先例可循,高速网络流本质上不具备能够有效利用CPU cache的数据局部性,适合GPU大规模计算的数据并行性并不是显而易见的,建立在批处理之上的并行计算需要平衡吞吐量和处理延迟的矛盾,等等。本论文以若干个要求高吞吐、低延迟、高连接数的网络系统作为研究对象,研究基于通用多核/众核处理器构建高性能网络系统的关键技术,就以上问题给出了我们的解决方案,最终综合运用各种系统优化技术构建了实际可用的高性能网络系统。本文的主要贡献和创新点如下:1.针对目前缺少可定制的、高性能的应用层协议解析器的问题,提出了基于FLEX词法分析器构建可定制应用层协议解析器的方法,并在多核处理器上实现了并行化的协议解析器框架,利用该框架非常方便地实现了高性能的HTTP协议解析器和FIX协议解析器。2.针对目前的协议栈在大规模连接下的低效问题,提出了一种新颖的TCP查找数据结构,基于该查找结构的并行化协议栈实现首次在通用处理器上实现了10Gbps的吞吐量和一百万条并发TCP连接的支持能力。3.针对GPU处理难以保证延迟的问题,提出了以GPU为中心的实时调度策略和并行化框架,并基于该框架实现了首个利用GPU加速的实时网络流处理系统-SRTP反向代理,可以满足高速视频网站对视频流加/解密的计算需要。4.针对高速网络环境中CPU处理键值对查询低效的问题,提出并设计了适合GPU处理的索引数据结构和查找操作,首次将GPU应用于访存密集的内存键值对存储系统,并实现了目前(2015年)世界上最快的内存键值对存储系统。本论文在利用通用处理器构建高性能网络系统方面进行了积极和有益的探索,为将通用处理器应用于高性能网络系统提供了经验,所有代码均已开源,所有研究成果都可以或已经应用于实际。