论文部分内容阅读
计算机网络应用的多样化和宽带化已经成为当今网络的发展趋势。在应用多样化的趋势下网络设备不再仅是简单地对数据包进行转发,还需要为不同用户提供有差别的服务,而流分类技术是差别类服务的技术基础。多维流分类问题在实现上是比较困难的,在网络宽带化的趋势下,网络设备渐渐成为网络的瓶颈,因此需要有高速的流分类方案,才能实现对数据包的线速分类转发。本文通过对常用算法的性能分析,选取了流分类算法中可以软件实现的最快算法之一RFC(Recursive Flow Classification,递归流分类)算法。RFC流分类算法的优点是查询速度快,而且算法在实现过程中存在分布式思想,各个表项可以独立并行地进行查询,为此,本文采用了多核多硬件线程的网络处理器IXP2400来实现算法。RFC算法的缺点是随着规则库规模增加,算法的占用空间会骤增。因此,本文采取压缩规则库和压缩交叉乘积表两项措施对算法进行改进。规则库压缩算法是将原来以每条规则为划分单位的规则库重新组合为以处理结果为划分单位,在有相同的处理结果的规则组内查找邻接规则并将其进行合并,RFC算法在每个阶段都要合并一些域,所以规则库压缩在RFC算法预处理的每个阶段开始之前都会产生压缩效果。交叉乘积表压缩主要采用比特向量压缩算法,将原表中连续重复出现元素占用的空间压缩掉。本文针对以上两种措施对RFC算法的综合改进方案作了数据结构设计、流程设计、代码实现。硬件资源的分配方案是改进算法能否在多核多硬件线程的网络处理器上充分利用多核多线程硬件资源,实现数据包线速转发的关键。本文对微引擎、硬件线程和存储器的分配做了详细设计。本文在网络处理器的软件开发平台上对改进算法进行了仿真试验和分析。仿真结果显示:RFC算法占用空间会随着规则库规模的增大急剧增加,改进算法相对于原RFC算法空间的压缩率会随着规则库规模的增加而提高,对算法的空间占用情况有极大改善,最多能够实现54%的空间压缩。