论文部分内容阅读
随着万兆链路进入实际部署以及数据包处理功能迅速向协议栈高层转移,网络系统的处理能力正面临越来越严峻的挑战。传统上,高速网络设备主要依靠专用硬件(如ASIC、网络处理器)达到高性能。但是硬件方案可编程性差,只能承担简单的包处理功能。随着网络应用日趋复杂,网络系统的处理任务正从简单的包转发、包过滤演变到深度数据包检查、网络异常检测、基于内容的交换、数据加密等复杂功能。这种深度的包处理要求网络系统提供更多的计算能力和编程灵活性。自双核处理器出现后,通用多核处理器的发展令人瞩目。目前通用多核处理器的核数已经接近、甚至超过了网络处理器中计算单元的数量,其高层协议处理能力更是专用硬件无法比拟的。基于通用多核平台开发网络设备已成为目前学术界和工业界感兴趣的研究课题。然而通用多核平台并不是为网络处理而设计,将它应用于高速网络系统面临诸多难题,比如缺乏高效的核间通信机制,通用操作系统的网络子系统不够高效,网络程序的并行化方法没有先例可借鉴,等等。本论文系统研究基于通用多核平台构建高速网络系统的若干关键技术,并在Intel通用多核平台和Linux操作系统上实现网络系统原型。本论文从构建一个具体的网络流量监视系统入手,研究并实现流水线并行模型、高效的核间通信机制、基于无锁设计的全局数据结构、串行代码到并行代码的转换等关键技术。本论文的主要贡献及创新点如下:(1)结合流水线并行和任务级并行模型,在Intel通用多核平台上实现了一个高性能的流量监视系统原型。该系统原型可达到2Gbps应用层处理能力。(2)针对流水线并行模型中最关键的流水线级间通信问题,设计并实现了一个简单、高效且实用的单生产者/单消费者并发无锁队列B-Queue。B-Queue性能与已有同类算法相同,且在真实环境中性能稳定。(3)针对全局数据结构共享难有有效解决方案的问题,提出面向特定应用设计定制化无锁数据结构的解决思路和方法,并运用到一个具体的TCP SYN洪泛攻击检测应用程序中,为将无锁设计思想运用到具体的程序设计实践中进行了有益的探索。本论文工作为利用通用多核服务器建立高速网络系统的研究与实践积累了宝贵的经验。