论文部分内容阅读
随着通用多核处理器成为主流,使用高性能通用计算机实现高速网络处理成了除基于特殊硬件加速之外的另一种可行方案。使用通用多核平台实现网络系统不仅具有更高的灵活性,而且可以充分利用多核处理器丰富的计算资源获得高速处理能力,但需要解决通用操作系统中网络子系统实现低效的问题。内核旁路的高速收发包引擎有效地解决了系统底层的包输入/输出瓶颈,为一些基于原始包流进行特殊应用处理的网络系统带来了性能提升。但是,一些需要完整协议栈的网络系统无法从中获益,迫切需要开发一套在用户空间高效实现的网络协议栈。用户空间协议栈不仅可以方便协议的定制,而且有利于针对特定应用进行性能优化,因而特别适用于专用高速网络设备。本文基于一个开源的用户空间协议栈LWIP,结合内核旁路的高速收发包引擎PSIO,在Linux上移植并优化实现了一个高性能的用户空间协议栈,并在多核处理器上进行了并行化。本文工作包括LWIP移植与LWIP性能优化两大部分。在移植方面,基于LWIP的多线程应用模型和PSIO结构设计实现了基于用户空间协议栈的应用系统结构模型,改进了LWIP的系统线程模型,并基于核亲和性原则实现了并行化,通过封装PSIO的接口库实现了LWIP的收发包模块,并基于POSIX线程库实现了LWIP的操作系统抽象层。以上工作实现了一个完整的用户空间协议栈,充分利用了高速收发包引擎和多核硬件特性。在性能优化方面,使用哈希表有效提高了LWIP中的PCB查找效率,使用两级时间轮提高了定时器管理的效率,使用细粒度资源锁提高了系统的并发性。本文通过在真实软硬件平台上的实验,验证了本文提出的各项优化技术的有效性,并分析比较了基于用户空间协议栈和基于内核空间协议栈的Web系统的性能。实验表明,使用用户空间协议栈能显著提升应用系统的处理能力。