1 什么是RFC算法?
RFC算法是由Pankaj Gupt and Nick Mckeown在文献[33】 中提出的, 它的全称是RecursiveFlowClassification, 该算法利用了实际分类规则库的冗余性和结构性特点。
结构性:比如协议号,0到255,刚好一个字节可以范围。比如IPv4地址,四个字节可以表示任意单个IP地址。
冗余性:在实际使用中,比如ACL,或者路由表,通常配置的规则或路由条数远远小于需要匹配范围的所有交叉乘机。
2 RFC算法用来做什么?解决了什么问题?
从名字看,就能知道该算法是用来分流的,而在传统的路由交换机中,需要流分类的有路由,QOS,ACL,RSS或者一些业务。按照一般实现,比如ACL,匹配五元组,需要用数据包的五元组遍历ACL的所有规则,直到命中规则或全不命中。这样在规则比较大多的时候,是比较耗时的,而该算法就是为了提高匹配效率,降低匹配时间。该算法的时间复杂度是d,d表示匹配纬度。
3 RFC算法怎么实现的?
下面用ACL规则举例,举例ACL只用IP五元组作为匹配项,不包括掩码
rule num |
原ip |
目的ip |
源端口 |
目的端口 |
协议号 |
1 |
1.1.1.1 |
2.2.2.2 |
22 |
55< |