论文部分内容阅读
当今的网络需要为用户提供更多、更快和更安全的服务。提供多样性服务需要以数据包分类为基础,数据包首先根据包头中的相关域(一般为源/目的IP地址、源/目的端口号和协议五个域)被划分到不同的流中,然后根据数据包所属的流进行相应的处理。包分类已成为目前网络处理的重要支撑技术之一。随着链路速度及网络流量的不断攀升,包分类已成为高速网络处理的性能瓶颈。目前,无论硬件方法还是软件方法都不能很好地满足数据包分类处理的需要。硬件方法能够提供很高的分类速度,但不具备动态分类要求的灵活性;软件方法灵活性好,但达不到高线速处理的要求。多核处理器的出现为实现高效、灵活的数据包分类提供了新的途径,利用多核处理器的计算能力既可以获得接近硬件的分类速度,同时又具有软件算法的高度灵活性。然而,多核处理器上的并行程序设计目前依然是一个难题,如何设计具有良好可扩放性的并行算法还有许多问题需要解决。本文工作主要包括两个部分。第一部分针对目前的并行加速比模型不能很好地解释在基于共享存储的多核处理器上出现的超线性加速及并行系统效率衰减的现象,提出了一种区分工作负载的并行加速比模型。该加速比模型将工作负载进一步区分为计算负载和访存负载,通过显式地引入系统访存能力对并行系统加速比的影响,从理论上较好地解释了超线性加速和并行系统效率衰减的现象,并通过实验验证了模型的有效性。根据该加速比模型,论文对基于多核处理器的并行程序设计提出了几个设计原则,作为对设计可扩放的包分类算法的优化指导。论文的第二部分工作是设计和实现了一个面向多核平台的高速数据包分类算法TIC(Two-stage Interpreting based Classification)。TIC利用分类规则集特征以及多核平台的体系结构特点,将五元组数据包分类过程分成针对源/目的IP地址的二维前缀查找和针对另外三个域的范围查找两个阶段。第二阶段采用基于解释器的范围查找,极大地减小了算法的内存消耗,同时利用多核处理器充足的计算能力来完成解释执行的任务。从本质上说,TIC通过平衡算法的计算负载和访存负载,在时间和空间复杂度上取得了最佳的折衷,从而保证了算法在多核结构上具有良好的可扩放性。TIC算法在Intel IXP2800网络处理器和基于X86架构的Intel Xeon5410四核通用处理器平台上均获得了10Gbps的分类速度。TIC算法分类速度接近或优于目前最快的软件分类算法,并且所需的内存空间及预处理时间均有大幅度的降低。