学术论文一种支持TCAM规则更新与压缩方法
所属栏目:电子技术论文
发布时间:2014-10-11 11:59:34 更新时间:2014-10-11 11:33:33
学术论文投稿期刊推荐《中关村》杂志是工业经济向知识经济转型中,以报道和推进知识经济为主要内容、具有新文化诉求的大型综合类新主流月刊杂志(128P,全彩印)。本刊立足最近被美国《新闻周刊》评为世界八大新“文化圣地”之一的中关村,力图办成中国知识经济的窗口和中国最佳新闻传播媒体。
摘要:提出了一种TCAM空间划分和规则压缩相结合的方法,使得OpenFlow网络在支持实时更新的同时能采用小容量的TCAM芯片来存储网络中的规则.所提方法将TCAM芯片空间划分为实时更新区和压缩存储区,实时更新区处在TCAM芯片的前部,用于存放中央控制器发送过来的实时更新规则.后台服务器以一定的时间周期将TCAM芯片中的实时更新区的规则以及压缩存储区中的规则进行压缩,并将压缩后的规则存入TCAM的压缩区,保持实时更新区具有空间接收实时更新规则.分析了区间划分的比率问题,并利用ClassBench工具产生原始规则集进行了仿真实验,实验结果验证了本文方法的有效性.
关键词:网络协议,OpenFlow,TCAM,规则压缩,实时更新,空间划分
A New Method for Rule Realtime
Updates and Compression in TCAM
CAI Lijun1,2,LI Du2,CHI Peng1,LI Rui2
(1.National Supercomputing Center in Changsha, Changsha,Hunan410082, China;
2.College of Computer Science and Electronic Engineering,Hunan Univ,Changsha,Hunan410082, China)
Abstract:This paper presented an approach which combines space division and rules compression in an effort to allow the realtime updates and TCAM chips storage happening at the same time. In the approach, the TCAM chip was divided into two partitions, a realtime update area and a compression storage area. The former was assigned in the front of the chip for storing realtime updating rules sent by the controller, and the latter had the function of compressing and storing rules generated by the server within certain time period. We made a comprehensive analysis of the space division ratio and conducted simulation experiments on the rules generated by the ClassBench tool. The experiment results have demonstrated the effectiveness of the approach.
Key words:network protocols; OpenFlow;ternary content addressable memory(TCAM); rules compression;realtime update;space division
OpenFlow[1]是一种新型网络交换模型,主要由OpenFlow交换机、FlowVisor和Controller三部分组成.OpenFlow交换机进行数据层的转发,FlowVisor对网络进行虚拟化,Controller对网络进行集中控制,实现控制层的功能.OpenFlow技术采用集中式的控制方法,由一个或多个包含整个网络拓扑的中心控制器通过一个开放的协议对不同交换机和路由器中的流表直接进行编程,从而实现对网络中数据流的控制.
为了实现数据包的高速转发,采用 TCAM[2]芯片来存储与匹配路由规则已经成为OpenFlow网络中事实上的工业标准.TCAM是一种三态内容寻址存储器,查询时采用全并行的方式对所有单元的数据进行搜索,因此可以在一个时钟周期内完成数据的匹配.TCAM芯片在具有快速查询处理优点的同时,也存在如下不足[3]:1)存储空间小.TCAM存储空间相当有限,目前比较流行的TCAM芯片的内存为2 Mb或1 Mb,最大的也只有18 Mb.2)能耗高、散热大.在进行数据查询时,由于TCAM采用全并行方式对整个存储空间进行搜索,因此消耗的电能大,同时散发的热量也多.一个1 Mb的TCAM芯片的功率可以达到15~30 W,大功率消耗对于核心路由以及其他网络设备来说是一个非常严重的问题,因为在机箱内需要占用更大的面积.3)价格昂贵.TCAM芯片价格相当昂贵,特别是随着容量的增加,价格增加迅速.因此,采用小容量的TCAM芯片是解决TCAM芯片面临问题的有效途径.针对小容量的存储空间,国内外研究者在规则压缩方面开展了大量的研究工作[4-5],但这些研究工作都是针对TCAM中规则相对稳定或者更新速度慢的情况.在OpenFlow网络中,规则更新频繁 [6].就我们所知,目前还没有研究工作研究如何在小容量的TCAM芯片中实现规则的实时更新. 为此,本文针对OpenFlow中规则更新频繁的特点,提出了一种支持规则实时更新和压缩的方法,在保证规则快速更新的同时,能够采用小容量的 TCAM芯片来存储规则.为了同时支持快速更新以及规则压缩,本文提出了一种对TCAM芯片存储空间进行划分的方法,将TCAM芯片空间划分为实时更新规则区和压缩规则存储区,如图1所示.实时更新规则区处在TCAM芯片的前部,用于存储由中央控制器发来的最新更新规则集,压缩规则存储区存储压缩后的规则集.中央控制器持续向交换机下发规则,每隔一定的时间片段,将交换机中的规则集复制到规则处理服务器,由规则处理服务器负责对规则集采用规则压缩算法对其进行压缩处理,压缩算法处理结束后服务器向TCAM芯片发出规则更新来替换TCAM更新区和压缩区的规则.该结构一方面能够满足OpenFlow中的实时更新要求,另外一方面又防止控制器不断产生的更新规则导致规则集过大而无法用容量较小的TCAM芯片来存储的问题.
1相关工作
与本文工作最为相关的研究工作是数据包的分类以及防火墙领域的规则压缩.文献[5]提出了一种对一维包分类器的动态规划算法,其一维前缀压缩实验数据显示41 455条前缀的压缩比为58%,运行时间为2.73 s.文献[6]提出的压缩算法总压缩比为54%,较以往的压缩算法在压缩效果上已经有了部分改进,但在该文中未公布其算法运行时间.在此基础上,文献 [3]提出了一种多维规则的压缩算法,总的压缩比为3.9%,压缩效果有了大幅度的提高,但是缺点在于算法运行速度比较慢,661条规则压缩运行时间为 31.9 s.这些研究工作都是针对静态规则集的压缩,没有考虑规则的实时更新问题.
OpenFlow网络具有规则更新快的特点,仅仅考虑规则的压缩而忽略规则的更新是没有意义的,而目前规则压缩的研究还未延伸到OpenFlow领域,因此本文的主要难点在于如何科学分配TCAM芯片中的实时更新区和压缩存储区,使得TCAM芯片既能持续不断地接收中央控制器发出的最新规则,又能将已有规则集进行有效压缩.
2基本概念
本节给出相关概念的定义.一个域Fi的一个区间变量,记作D(Fi),是一个非负整数的有限区间,比如[0,100].TCAM规则形式为〈predicate〉→〈decision〉,其中predicate的形式为F1∈S1∧…∧Fd∈Sd,其中每一个Si都是D(Fi)的非空子集当且仅当p1∈S1∧…pd∈Sd,一个数据包(p1,…,pd)和一条predicate匹配[7].decision指满足匹配之后执行的指令,典型的 decision包括accept,disgard,accept with logging,disgard with logging.
用f表示d个域F1,F2,…,Fd上的一个规则序列,序列个数用f表示.
当且仅当对于任意的数据包都在f中至少存在一条规则与之匹配,那么,一个规则序列f是一个完全规则序列.为了保证一个规则序列f是一个完全规则序列,f 的最后一条规则通常是如下形式:F1∈D(F1)∧…∧Fd∈D(Fd).如下所示为两个域F1,F2上的两条规则,其中D(F1)=D(F2)= [0,20].
r1:F1∈[0,8]∧F2∈[0,15]→accept
r2:F1∈[0,20]∧F2∈[0,20]→disgard
在一个规则序列f中可能存在这种情况,其中的两条或者多条规则的区间部分重叠或其中一个区间包含于另一个区间,甚至两条规则不但重叠而且具有不同的 decision.为了解决这个矛盾,TCAM采用首匹配原则,也就是说一个包p的decision是p在f中匹配到的第一个规则的decision,数据包p在f中匹配的decision用f(p)表示[8].两个规则序列f1,f2等价,当且仅当对于任意包p都有f1(p)=f2(p),记作 f1≡f2.对于任意规则序列f,我们用f表示所有与f等价的规则集合.
规则的压缩:对于一个规定的规则序列f,找到另一个语义与f等价的规则序列g, 其中g拥有尽可能少的规则数量.
压缩比:压缩比=压缩后规则数/原始规则数.
3空间划分
为了实现压缩与更新的平衡,将TCAM芯片的存储空间分为两个区域:实时更新区和压缩规则存储区.实时更新区中存储了由中央控制器发来的最新更新规则.TCAM芯片采用的是首匹配方式进行规则匹配,因此,实时更新区处在TCAM的前部.压缩规则区存储压缩后的规则.引入规则处理服务器负责对TCAM 中的规则进行处理规则集的压缩.规则处理服务器定期向TCAM芯片发出规则更新来替换TCAM压缩区的规则.采用该结构,一方面能满足OpenFlow中的实时更新要求,另外一方面又防止控制器不断产生的更新规则导致规则集过大而无法用容量较小的TCAM芯片来存储的问题.
中央控制器持续向 TCAM芯片传输最新的规则集,每隔一定的时间周期,将其中的规则集复制到规则压缩处理器中进行压缩算法处理,在算法处理过程中由中央控制器传输的最新规则保存在实时规则更新区,压缩算法处理结束之后,将压缩后的规则集替换压缩规则存储区中的规则集,然后将实时规则更新区中的规则集转移至压缩规则存储区,如此循环进行算法处理,以达到规则实时更新以及压缩的目的.
TCAM中规则的实时更新以及压缩过程如图2所示.假设TCAM芯片容量总共可以存储S条规则,进行空间划分之后实时更新区可以存储α条规则,压缩存储区可以存储β条规则,其中有:
α+β=S. (1)
假设后台服务器对规则进行压缩的时间周期为T,网络中规则的更新速度为v 条/s,算法运行时间为t,规则压缩算法的压缩比为r,r<1.因此每一个时间周期内在实时更新区内更新的规则数为vT.上文已经提到,TCAM芯片采用的是首匹配原则,因此新的规则总是存放在规则集的顶端.在状态1,实时更新区处于相对空白状态,此时将TCAM中的规则复制到压缩服务器,在服务器中进行压缩算法处理.在状态2,算法结束经过一个时间周期之后将已压缩的规则集存放在TCAM的底部,此时实时更新区内已积累v T条规则.在状态3,将压缩之后的规则集与最新的更新规则组成新的规则集存放在TCAM中,重新返回状态1,进入下一个循环. 定理1 规则的更新与压缩机制中所运用的规则压缩算法运行时间t须满足:
t≤S/v. (2)
定理2更新与压缩过程中一个时间周期T的取值范围为:
t≤T≤S/v. (3)
证因为规则压缩算法运行时间为t,所以必须等待t时间之后才能将压缩后的规则集导入TCAM芯片.因为规则持续更新的速度为v,在S/v的时间段内TCAM芯片内存将占用完毕而导致没有更多的空间存放即将接受的新规则.
证毕.
定理3当时间周期一定时,同时实现规则的更新与压缩的必要条件为TCAM芯片的空间不小于v T (2-r)/(1-r).
证如图2所示,规则的更新与压缩是一个动态的循环过程,在每一次循环中都要对β条规则进行一次压缩处理,为了保证压缩过程中实时更新区的规则不溢出,实时更新区所分配的空间必须满足:
α≥vT.
压缩算法结束之后,将已压缩的规则集替换压缩存储区内的旧规则集,压缩之后的规则集存放在压缩存储区的底部,同时压缩存储区腾出的空间为β-r β.此时将实时更新区内的最新规则转移至压缩存储区的顶部,为了保证压缩之后的规则集不占用实时更新区的空间而导致规则溢出,那么压缩存储区所占空间必须满足:
vT≤β-rβ.
此时β的取值要求为:
β≥v T1-r.
因此有:
S=α+β≥vT+vT1-r=vT2-r1-r.
证毕.
在压缩算法、时间周期以及TCAM芯片空间容量等条件得到满足的前提下,对TCAM区间进行划分,分析一定容量TCAM芯片内实时更新区以及压缩存储区所占空间的比例.
性质1当其他参数一定时,实时更新区在TCAM芯片中所需空间随规则更新速度的增大而增大.
性质2当其他参数一定时,压缩存储区在TCAM芯片中所需空间随规则压缩比的增大而增大.
例如,当时间周期T以及规则更新速度v一定时,选择不同的规则压缩算法,则压缩存储区所占空间也会有差别.当r=0.5时,β的最小取值为2vT,当r=0.9时,β的最小取值为10 vT.
当实时更新区所占空间取最小值v T时,压缩存储区分配的空间为S-v T,当压缩存储区所占空间取最小值v T/(1-r)时,实时更新区的空间为S-v T/(1-r),由此可得TCAM芯片中实时更新区和压缩存储区所占空间比例的取值范围.
引理1TCAM芯片中实时更新区和压缩存储区所占空间比例取值范围为:
vTS-vT≤αβ≤S(1-r)-vTvT. (4)
证因为S≥v T (2-r)/(1-r),所以S>vT.
又由于r<1,所以有:
S(1-r)-vT(2-r)≥0
S(S-Sr+vTr-2vT)≥0.
因此有:
S2(1-r)-SvT(1-r)-SvT+(vT)2-(vT)2vT(S-vT)≥0
[S(1-r)-v] (S-vT)-(vT)2vT(S-vT)≥0
S(1-r)-vTvT-vTS-vT≥0.
证毕.
4规则压缩算法
本文设计一种适用于快速更新的动态规则压缩算法,主要思想为在不改变规则集语义的前提下将规则集转换为一个等价的BDD[9],再将实时更新的规则集嵌入改变缩减之后的BDD,最后将BDD转换为等价的规则集以减少规则集中的规则数量从而达到压缩规则的目的.将更新与压缩两种操作结合在一起,不仅能够满足网络中快速更新规则的需要,而且可以提高规则集的压缩效率.
一个二叉决策图Binary Dicesion Diagram(BDD)是有限个节点的有向无环图G=(V,E),其中,V是G中所有节点的集合,E是G中所有边的集合.其中一个BDD满足如下4个条件:
1)存在一个decision集合DS;
2)存在一个根节点,其不存在父节点,存在若干叶子节点,其不存在子节点;
3)每一个叶子节点对应一个decision,记为D(v);
4)一条从根节点到decision的路径对应规则集中的一条或多条规则.
如图3所示为规则集转换为BDD的示意图.其中D(F1)=D(F2)=[0,15],并用a表示accept,用d表示disgard.根据规则集的特点在每一个节点处每一个域进行二分,直到所有的规则都包含于BDD中.
r1:F1∈[0,7]∧F2∈[0,7]→accept
r2:F1∈[0,7]∧F2∈[11,15]→disgard
r3:F1∈[8,15]∧F2∈[0,7]→accept
r4:F1∈[8,15]∧F2∈[10,12]→disgard
r5:F1∈[8,15]∧F2∈[13,15]→disgard
对于一个已转换的BDD进行改编缩减.在这里提出BDD规则压缩算法.
算法1BDDCompress(node).
输入:原始BDDg1; 输出:缩减后的BDDg.
步骤:
1)当node为叶子节点且node的父节点不为空那么Setnode(node=node->pre);
2)BDDCompress (node)
{
以node为根节点到叶子节点的任意两条路径R1,R2,若R2包含于R1,且其叶子节点在树中的位置相对R1的叶子节点位置靠右,则移除R2所对应的叶子节点;
以node为根节点的树中任意两条从根节点到叶子节点的路径有且仅有一条边相连或相交且叶子节点所对应的decision相同,则将该两条路径的叶子节点合并; Setnode(node=node->pre);
BDDCompress (node);
本文的压缩策略是在规则快速更新的OpenFlow网络中,将实时的更新规则嵌入已有的压缩BDD,嵌入的过程完成冗余规则的去除以及特定规则的合并,最后将BDD转换为等价的规则集.
对于一个网络中实时更新的规则集f,本文的动态规则压缩算法分为如下3个步骤:
1)将规则集f转换成一个等价的BDDf1;
2)将f1嵌入已有的压缩BDD;
3)将合并后的BDD转换为等价的规则集.
在这里提出BDD动态规则压缩算法.
算法2BDDInsert(f,g).
输入:原始BDDg;更新规则集f;
输出:缩减后的BDDg1;
步骤:
1)将f转换为等价的BDDf1;
2)对f1中的每一条从叶子节点到根节点的路径与g1中从叶子节点到根节点的路径匹配
{
移除g1中包含于f1中的路径所对应的叶子节点,并将f1中对应的路径添加到g1;
若两条路径有且仅有一条边相连或相交且叶子节点所对应的decision相同,则将该两条路径的叶子节点合并;
否则将该路径添加到g1;
}
每隔一个时间周期T后台服务器调用算法2对更新的规则集进行压缩处理.假设网络中更新了如下2条规则:
r1:F1∈[0,7]∧F2∈[9,15]→disgard
r2:F1∈[8,15]∧F2∈[8,13]→accept
转换后的BDD如图5所示.
BDD中的每一个decision都对应一条规则,该规则由一条或多条路径合并而成.从decision开始寻找其父节点直到根节点,若某个 decision所对应的叶子节点只存在一个父节点,那么从其到根节点的路径唯一,且对应一条或多条压缩后的规则;若某个decision存在多个父节点,那么从其到跟节点的路径中必然存在可以合并的两条或多条路径,此时对其各路径进行判断并对满足条件的边进行合并.图4所示BDD中dicesion1 只有一个父节点,因此从其到根节点的路径唯一,对应的规则为:r1:F1∈[0,7]∧F2∈[8,15]→disgard.dicesion2存在2个父节点node2,node3,将node1至node2的边和node1至node3的边所对应的区间合并得到规则:r2:F1∈[0,15]∧F2∈[0,7]→accept.图4所示BDD转换为规则集如下:
r1:F1∈[0,7]∧F2∈[8,15]→disgard
r2:F1∈[0,15]∧F2∈[0,7]→accept
r3:F1∈[8,15]∧F2∈[10,15]→disgard
假设压缩服务器中规则集的规则数目为n,实时更新的规则数目为k,由于算法需要先将规则集转换为等价的BDD,且BDD中的每一个叶子节点对应一条规则,而调用BDD动态规则压缩算法时需要将更新BDD中的每一条从根节点到叶子节点的路径与压缩BDD中的每一条从根节点到叶子节点的路径匹配,因此 BDD动态规则压缩算法的时间复杂度为O(kn).这种动态更新与压缩的算法避免了每一次规则更新之后都将压缩服务器中的规则集与更新的规则集重新进行一次压缩算法处理,节约了运行时间,提高了规则压缩的效率.
5实验
网络中的实际规则集由于安全保密等原因很难获得,因此本文中实验用的规则集利用华盛顿大学圣路易斯分校Taylor和Turner开发的工具ClassBench产生.ClassBench产生的规则集中的每条规则包含了6个域:源IP地址、目的IP地址、源端口、目的端口、协议类型和标志域.其中源IP地址和目的IP地址以前缀表示,源端口和目的端口以范围表示,协议类型和标志域以某种精确数据类型表示.实验过程首先利用ClassBench生成若干条规则,然后利用正则表达式从规则集中截取源端口和目的端口作为实验源数据生成二维规则集,最后对二维规则集进行仿真实验,其中每条规则域的区间为[0,65 535].因为ClassBench工具产生的规则不包含decision项,所以在仿真实验时每一条规则都随机产生一个decision,其中设置 decision仅包含accept和disgard.图7为ClassBench生成的5条规则组成的规则集.
图8为算法1对20组从50~1 000条不同数量的规则所组成的规则集进行压缩处理的实验数据图,从图8可以看出,压缩算法具有较高的压缩比,1 000条规则的压缩比接近30%.
实验过程中利用ClassBench工具产生100 000条规则作为原始规则集,以不同的更新速度向仿真TCAM容器内传输规则集,利用上述规则压缩算法对规则进行周期性压缩,对规则更新速度v、仿真容器容量S、时间周期T等参数进行设置,并以上文的理论为依据对仿真TCAM容器进行区间划分,采用BDD动态规则压缩算法对压缩处理器中的实时更新规则进行压缩并实时记录容器规则数量的变化.实验采用java在PC机上(Inter Core2 双核CPU,2.53 GHz,2 GB内存)实现.
图9和图10分别为仿真容器容量S取值800和1 500时对于不同的规则更新速度选取不同的压缩周期并对其进行区间划分后仿真容器内规则数目变化的情况展示.以图9为例,当S=800,v=10时,规则平均压缩比约为r=0.5,压缩算法运行时间t<5,根据不等式(3)可得时间周期T的取值范围为 5≤T≤80,因此可取时间周期T为20,又因为.
因此仿真容器容量的大小满足所需条件,根据不等式(4)可得仿真TCAM芯片中实时更新区和压缩存储区所占空间比例取值范围为: 1∶3≤α∶β≤1∶1.
在实验中取α∶β=3∶5,从实验结果可以看出,在一个时间周期内,仿真容器中的规则呈线性增长,而每隔一个时间周期,仿真容器中的规则就会被压缩一次,最终容器内的规则在一定范围内波动.
6结束语
本文针对OpenFlow网络中规则需要进行实时更新以及TCAM芯片容量受限等问题,提出了一种对TCAM区间进行划分和规则压缩的方法.为了验证规则压缩算法的效果和效率,采用ClassBench工具产生原始规则集,并对不同的规则更新速度根据论文的理论基础对仿真TCAM容器进行区间划分,实验采用java在PC机上实现.实验结果证明本文提出的压缩与更新的平衡机制能够很好的对快速更新的规则进行实时动态压缩.
参考文献
[1]KEMPF J, BELLAGAMBA E, JOCHA D. Scalable fault management for OpenFlow [C]//Communications (ICC), 2012 IEEE International Conference on. Ottawa, ON: IEEE, 2012:6606-6610.
[2]BREMLERBARR A, HENDLER D. Spaceefficient TCAMbased classification using gray coding[J]. Computers, IEEE Transactions on, 2012:18-30.
[3]CHAD R M,ALEX X L, ERIC T. TCAM razor:a systematic approach towards minimizing packet classifiers in TCAMS [C]//Network Protocols,ICNP 2007,IEEE International Conference on.Beijing: IEEE, 2007:266-275.
[4]TAYLOR D E,TURNER J S.Class bench:a packet classification benchmark[C]//Association for Computing Machinery, Networking, IEEE/ACM Transactions on. Miami: IEEE, 2005:2068-2079.
[5]DONG Qunfeng,BANERJEE S,WANG Jia.Packet classifiers in ternary CAMs can be smaller [C]// SIGMETRICS '06/Performance '06 Proceedings of the Joint International Conference on. New York: ACM, 2006:311-322.
[6]DELY P,KASSLER A,BAYER N.OpenFlow for wireless mesh networks [C]// Computer Communications and Networks (ICCCN), 2011 Proceedings of 20th International Conference on. Maui: IEEE, 2011:1-6.
[7]朱国胜,余少华. 基于TCAM的范围匹配方法――CTCAM [J]. 通信学报,2012,33(1):31-37.
月期刊平台服务过的文章录用时间为1-3个月,依据20年经验,经月期刊专家预审通过后的文章,投稿通过率100%以上!