IP数据包分类经典算法总结

1 RFC算法

1.1 RFC算法介绍

RFC(Recursive Flow Classification)算法[1]是一种多维IP分类快速查找算法,通过对实际的过滤规则数据库的考察,发现数据库中的过滤规则都有内在的结构和冗余度,这个特点可以为分类算法所利用。

RFC算法的主要思想是将IP分类问题看成一个将包头中的S比特数据到T比特的classID的一个映射(T=logN且N<<S,N是过滤规则的总数)。如果预先计算出包头中的这S位共2s种不同情况中每种情况所对应的classID值。那么每一个包只需要一次查表,即一次内存访问就可以得到相应的classID,但是这样会消耗极大的空间。RFC的思想是映射不是通过一步来完成,而是通过多个阶段(phase)完成,如图1.1所示。每个阶段的结果是将一个较大的集合映射成一个较小的集合,称其为一次缩减(reduction)。RFC算法共分P个阶段,每个阶段由一些列的并行的查找组成。每个查找的结果值比用于查找的索引值要短(故称为一次缩减)。

clip_image004     clip_image006

                      图1 RFC的基本构思                                                            图2 一个四阶段的RFC缩减树

图1.2中建立了一种4阶段的缩减树,对IP包查找过程如下:

1)在第一阶段(Phase 0),包头中的K个域被分成若干个块(chunks),每个块被用来作为并行查找的索引;

2)后面的几个阶段,每次查找内存的索引值都是由前几个阶段的查找结果合并而成的。一种简单的合并办法就是将查找结果按二进制串连接起来(concatenation),

    但还有更好的方法可以节省空间;

3)在最后一个阶段,查找的结果得到一个值。由于我们进行了预先的计算,这个值就是该包对应的classID。

1.2 RFC算法性能分析

RFC算法受到两个参数的影响:

1)选取的阶段的数目P

2)在给定P的情况下,"缩减"树的形状.也就是后面的阶段的索引值从前面哪几个阶段的查找结果进行合并。

    在给定P的情况下,给出一种严格的判定方法来选择最优的缩减树很困难。[1]中给出了两种启发性原则:

1)尽可能合并具有一定“相关性”的块。如我们尽可能早的将同一个IP地址的两个块进行合并。因为具有“相关性”的两个块往往在同一条规则或者在少数几个规则中

   集中出现。尽早对其进行合并,可以避免后续合并产生不必要的扩展;

2)在不引起内存激增的情况下.尽可能合并多的块。

   在P和缩减树固定的情况下,随着过滤规则树N的增加,消耗的内存量也增加。同时,对于同样的过滤规则数据库,P=3比P=4消耗更多的内存,但是查找速度前者比后者要快。

RFC算法的优点:(1)易于并行处理,处于同一阶段的预处理表和交叉乘积表可被并行地索引,处于不同阶段的表也可被并行的索引,这些表各自独立,处于不同的存储单元。(2)与其他算法相比,更适用于实际的网络中。

RFC算法的缺点:缺乏一般性,因为它与分类器的结构有关,因此需要针对不同的分类器来进行微调(tuning)才能达到理想中的最佳工作状态。一般的解决方法是在算法设计时便留有许多的参数供日后设定,像在RFC算法中所需要的阶段数,每一阶段中所做的化简比例等都是可以在执行时期设定的。

2 Set-prunning trie

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值