论文部分内容阅读
随着互联网与应用的快速蓬勃发展,网络带宽和服务复杂度不断增长,从路由查找到入侵检测等数据包处理技术面临性能挑战。多核处理器可以通过数据包并行处理有效提升数据包处理速度,但核间共享资源竞争与负载不均衡等问题使得数据包处理性能无法随着核数增加而线性增长。因此,研究和实现数据包多核并行处理方法,提升数据包处理吞吐率,具有非常重要的意义。 本文在研究分析现有数据包处理方法的基础上,探讨传统方法的固有缺陷和观察数据包并行处理架构的关键特性,针对内存资源竞争和流量负载均衡问题提出了两种改进方法,并在本文中所设计和实现的通用数据包处理原型系统中进行实验验证。论文主要有以下三点贡献: 1)针对传统的通用内存管理方法会带来大量内存资源竞争开销的问题,提出了一种基于多点缓存和对等交换的专用内存池管理机制。该机制通过将绝大部分内存操作局部化,提高了内存分配性能;通过内存池的运用和无关内存的节省,提高了内存资源利用率。实验结果表明,在使用12核并行处理和两级流水线扩展的配置下,其内存操作的锁开销较全局存储共享类型的内存管理方法降低了42%,较普通的线程局部缓存类型的内存管理方法降低了31%,且随着核心数量增加锁开销基本保持不变。 2)针对传统的负载均衡方案只支持单级负载均衡且仅局限于静态的Hash均衡算法,从而导致真实网络环境中负载容易不均衡的问题,提出了一种支持自动伸缩的多级动态负载均衡方法。该方法充分考虑了网络数据的动态性、处理线程的异构性和真实流量的波动性,通过针对流水线适配的多级负载均衡机制,扩大了负载均衡范围;通过基于EWMA的动态均衡算法,提升了负载均衡效果;通过引入自动伸缩机制,提高了系统的资源利用率。实验结果表明,在使用某真实流量数据集的测试环境下,该方法较Hash均衡算法而言数据包队列平均长度降低了93%,较单级负载均衡而言第二级队列平均长度降低了72%,在开启自动伸缩功能时能够节省34%的计算资源。 3)应用上述内存管理机制与负载均衡方法,设计并实现了一套数据包处理原型系统。该原型系统基于可双向同时扩展的并行流水线混合架构,内部实现简单而通用,可灵活配置流水线阶段数和每阶段并行度等关键参数,且支持通过线程内部模块链机制实现功能扩展。实验结果表明,在使用上述两种方法进行优化后,该数据包处理原型系统的整体吞吐率较优化前提升了22%,具有更加接近线性的多核可扩展性。