一种OpenFlow流表存储空间压缩方法

文档序号:6519673阅读:537来源:国知局
一种OpenFlow流表存储空间压缩方法
【专利摘要】本发明涉及一种OpenFlow流表存储空间压缩方法。该方法通过分析OpenFlow流表结构特点,根据流表项字段的冲突关系与共存关系对OpenFlow流表进行分类,将初始流表项划分到不同的类中进行存储,从而将大规模、结构复杂流表转化为多个规模更小、结构简单的流表;并根据OpenFlow流表的频繁、快速更新特性设定动态调整阀值,通过对现有的类进行分裂或合并操作来优化流表存储空间。本发明可以有效降低流表存储空间且适应于OpenFlow流表的动态、快速更新,对流表存储空间的压缩率能稳定在70%左右,而且可以用更少的运行时间获得与最优方法相似的空间压缩率。
【专利说明】—种OpenF1w流表存储空间压缩方法
【技术领域】
[0001]本发明属于信息【技术领域】,涉及一种高效启发式OpenFlow流表存储空间压缩方法,根据流表项字段之间的冲突与共存关系,将大规模、结构复杂流表转化为多个规模更小、结构简单的流表,并根据OpenFlow流表的频繁、快速更新特性设定动态调整阀值,对流表存储空间进行优化。
【背景技术】
[0002]随着网络规模的急剧膨胀和应用类型的不断丰富,传统互联网的结构和功能日趋复杂与僵化,对网络的管控能力日趋减弱。应用与网络相对割裂,应用不能感知网络的状态且不能控制网络,而网络也无法感知应用的需求并根据需求来调整网络。软件定义网络(SDN)是一种控制逻辑和数据转发分离的创新网络架构,具有接口标准化、全局视图、灵活控制、开放可编程等特点,为网络及应用的创新提供了良好的平台,对未来网络将产生革命性的影响。
[0003]OpenFlow是美国斯坦福大学于2007年提出的一种支持网络创新研究的新型网络交换模型,实现网络控制平面和转发平面的分离,基于开放的、可动态修改的流表对网络进行编程。OpenFlow在设备上维护流表(Flow Table)结构。其中,流表由OpenFlow流表项组成,且流表项包含OpenFlow支持的字段。数据分组按照流表进行转发。而流表的生成、维护、配置则由控制器来管理。OpenFlow以其高度的开放性和易操控性逐渐成为实现SDN的核心技术。目前OpenFlow技术正处于研究发展阶段。OpenFlow技术的全球规模化部署还存在很多问题。主要是由于网络带宽的爆炸性增长、网络应用的多样化、新型网络体系结构的发展以及网络灵活高效管控的需求等因素对OpenFlow的流表规模、结构以及查找效率等方面提出了更高的挑战。
[0004]对规则分类存储以降低OpenFlow流表存储空间的思想来源于IP网络的报文分类方法。在IP网络中,报文分类是指根据报文头部信息的关键字段对报文进行分类,使得网络设备对多样化和差异化的业务可以采取不同的操作。目前,Recursive FlowClassification (RFC)、Grid of Trie、HiCuts 以及 HyperCuts 等算法是基于软件实现的典型报文分类算法。其中,RFC算法具有很高的吞吐量,但存储空间需求大,不适用于大型规则库分类,所以并不能应用在大规模OpenFlow流表的高效查找中。Grid of Trie算法基于搜索树结构,节约存储空间,但更新复杂度高。由于OpenFlow流表项更新频繁,所以Gridof Trie算法不能应用于快速更新的OpenFlow流表查找中。HiCuts算法和HyperCuts算法是解决低维度报文分类问题。由于OpenFlow流表项包含多维字段,所以低维度报文分类算法应用于OpenFlow流表高效查找时会导致存储空间爆炸,查找效率低。
[0005]传统网络中的ACL与OpenFlow流表具有类似的存储结构,因此可以借鉴ACL的压缩存储方法优化OpenFlow流表存储空间。曾旷怡等(曾旷怡,杨家海.访问控制列表的优化问题.软件学报,2007,18(4):978-986.http://www.jos.0rg.cn/1000-9825/18/978.htm)提出了基于一条语句与多条语句之间或多条语句与多条语句之间的交叉覆盖或包含关系优化ACL,减少了 ACL的条数。Daly J等(Daly J,LiuA X, Torng E.A Difference Resolution Approach to Compressing Access ControlLists.1n Proc.0f INFOCOM,13,2013.2040-2048.)提出了 Diplomat 算法来压缩 ACL,通过将原始的匹配模型划分成多个超平面,从而将高维的匹配目标分解成多个低维的匹配目标,能够减少30.6%的ACL存储空间。文献“Liu A X,Torng E, Meiners CR.Compressing network access control lists.1EEE Transactions on Paralleland Distributed Systems, 2011, 22(12):1969-1977.” 提出了 ACL 压缩机框架,分别处理一维ACL和多维ACL来优化其存储,能够减少50.22%的存储空间。文献“CurtisAR, Mogul JC,Tourrilhes J, Yalagandula P,Sharma P,Banerjee S.DevoFlow:Scalingflow management for high performance networks.1n:Proc.0f the SIGC0MM2011.Toronto:ACM Press, 2011.254-265.”指出OpenFlow是基于流而不是基于目的地址的,同样的网络数据流量,OpenFlow流表比路由表包含更多的表项,即OpenFlow中数据流可以通过匹配不同的流表项实现不同粒度的控制;利用OpenFlow流表项之间的关系进行流表优化,可能会破坏流表对于流的控制粒度。因此传统网络中ACL的存储优化并不适用于OpenFlow流表的存储优化。
[0006]传统的报文分类算法主要应用于低维小型规则库,同时不适应规则库的动态更新,并不能直接有效的解决大规模复杂OpenFlow流表的查找问题。对路由表和ACL存储空间优化算法主要是针对路由表项和ACL项的特定结构提出的,不具有可扩展性。

【发明内容】

[0007]面对硬件设备无法满足大规模OpenFlow流表存储的挑战,本发明结合OpenFlow流表项字段结构特点,提出了一种高效启发式OpenFlow流表存储空间压缩方法,根据流表字段的冲突与共存关系,将大规模、结构复杂流表转化为多个规模更小、结构简单的流表,并能够根据OpenFlow流表项的更新变化动态调整每个存储模块包含的有效字段,对流表存储空间进行优化。
[0008]本发明采用的技术方案如下:
[0009]—种OpenFlow流表存储空间压缩方法,其步骤包括:
[0010]I)根据OpenFlow流表的结构,确定同一传输单元中流表项字段之间的冲突关系与共存关系;
[0011]2)利用所述冲突关系与共存关系对OpenFlow流表进行分类,将字段可共存的流表项划分到一个类中、字段不可共存的流表项划分到不同类中进行存储;
[0012]3)将初始流表项添加到划分好的OpenFlow流表类中;
[0013]4)根据OpenFlow流表的频繁、快速更新特性设定动态调整阀值,当新加入的流表项条数超过限定的阀值时,对现有的类进行分裂操作,当类的个数超过限定的阀值时,对现有的类进行合并操作,以优化流表存储空间。
[0014]进一步地,步骤I)中流表项字段之间的冲突关系是指不能在同一传输单元中同时出现的字段,流表项字段之间的共存关系是指能够在同一传输单元中同时出现的字段。
[0015]进一步地,步骤2)对流表进行划分的具体方法为:利用所述冲突关系与共存关系,将初始流表划分成两个类,在所划分的两个类中选择出可以再进行分裂且存储代价最大的类,再利用所述冲突关系与共存关系划分成两个类,以此类推;如果所有的类都已进行过分裂或类的分裂个数大于类的限定阀值时,结束分裂操作;其中存储代价表示该类存储的有效字段所占用的字节数。
[0016]进一步地,步骤3)通过迭代2)所述的已经划分的所有类,把每个类的有效字段集合所对应向量中的每一位减去流表项中对应的向量位,得到向量位差值绝对值之和以及向量位差值之和;比较这两个值,当二者相等时,则该流表项可以加入到该类中;在所有可能加入的类中选择存储代价增加最小的类完成加入。
[0017]进一步地,步骤4)中当新加入的流表项条数超过限定的阀值时,对现有的类进行分裂操作;具体分裂方法为:
[0018]将下一条新流表项加入到某个类中,列举所有对该类进行预分裂成两个类的可能的操作,并计算每种可能的分裂情况下的存储空间大小;通过比较所有可能的分裂情况下所计算出的存储空间大小,选择存储空间减少最多的一个分裂情况;将该类按照这种方式进行分裂成两个类,并删除原类。
[0019]进一步地,步骤4)中当类的个数超过限定的阀值时,对现有的类进行合并操作;具体合并方法为:
[0020]列举所有选择任意两个类进行预合并成一个类的可能情况,并计算每种可能的合并情况下的存储空间大小;通过比较所有可能的合并情况下计算出的存储空间大小,选择存储空间增加最少的一个合并可能;合并这两个类产生一个新类。
[0021]本发明提出的OpenFlow流表存储空间压缩方法基于现有OpenFlowl.3标准,利用流表项结构特点对高维稀疏的OpenFlow流表进行分类划分,具有实际可操作性。与现有技术相比,本发明的主要贡献和优点如下:
[0022]I)实现了大规模、复杂结构的OpenFlow流表的存储空间优化。本发明将一个OpenFlow流表划分成多个规模小、结构简单的存储模块,每个存储模块中存储不同的有效字段。以OpenFlow流表结构为基础进行划分,使得每个类中包含的有效字段总长度更小。每条流表项划分到不同的存储模块中,从而降低流表存储空间。
[0023]2)支持OpenFlow流表项的快速更新。本发明能够根据OpenFlow流表项的更新变化,动态调整每个存储模块包含的有效字段,使得流表存储结构更有效地降低更新后的流表存储空间。
[0024]3)本发明提出的OpenFlow流表存储空间压缩方法是启发式算法,当类的个数不小于4时,对流表存储空间的压缩率能稳定在70%左右,与现有的最优算法(针对每一条新流表都对类进行分裂或合并操作)的压缩效率差别很小,而该算法执行时间远小于最优算法所需时间,即可以用更少的运行时间获得与最优方法相似的空间压缩率。
【专利附图】

【附图说明】
[0025]图1是本发明的OpenFlow流表存储空间压缩方法的总体流程图。
[0026]图2是OpenFlow流表项字段共存关系的二维矩阵表不不意图。
[0027]图3是OpenFlow流表项字段冲突关系的二维矩阵表示示意图。
[0028]图4是所述OpenFlow流表存储空间压缩方法和最优算法的运行时间比较示意图。【具体实施方式】
[0029]下面通过具体实施例和附图,对本发明做详细的说明。
[0030]图1是本发明的OpenFlow流表存储空间压缩方法的总体流程图。首先根据OpenFlow流表的结构特点,确定流表项字段之间的冲突关系与共存关系,然后利用所述冲突关系与共存关系对OpenFlow流表进行分类,将初始的流表项划分到不同的类中进行存储;再根据OpenFlow流表的频繁、快速更新特性设定动态调整阀值,当更新变化的流表项条数超过限定的阀值时,通过对现有的类进行分裂或合并操作来优化流表存储空间。为衡量本发明的效果,定义压缩率如下:
[0031]
【权利要求】
1.一种OpenFlow流表存储空间压缩方法,其步骤包括: O根据OpenFlow流表的结构,确定同一传输单元中流表项字段之间的冲突关系与共存关系; 2)利用所述冲突关系与共存关系对OpenFlow流表进行分类,将字段可共存的流表项划分到一个类中、字段不可共存的流表项划分到不同类中进行存储; 3)将初始流表项添加到划分好的OpenFlow流表类中; 4)根据OpenFlow流表的频繁、快速更新特性设定动态调整阀值,当新加入的流表项条数超过限定的阀值时,对现有的类进行分裂操作,当类的个数超过限定的阀值时,对现有的类进行合并操作,以优化流表存储空间。
2.如权利要求1所述的方法,其特征在于:步骤I)所述冲突关系是指不能在同一传输单元中同时出现的字段,所述共存关系是指能够在同一传输单元中同时出现的字段。
3.如权利要求1所述的方法,其特征在于:步骤2)对流表进行划分的具体方法为:利用所述冲突关系与共存关系,将初始流表划分成两个类,在所划分的两个类中选择出可以再进行分裂且存储代价最大的类,再利用所述冲突关系与共存关系划分成两个类,以此类推;如果所有的类都已进行过分裂或类的分裂个数大于类的限定阀值时,结束分裂操作;其中存储代价表示该类存储的有效字段所占用的字节数。
4.如权利要求1所述的方法,其特征在于:步骤3)通过迭代步骤2)已经划分的所有类,把每个类的有效字段集合所对应向量中的每一位减去流表项中对应的向量位,得到向量位差值绝对值之和以及向量位差值`之和;比较这两个值,当二者相等时,则该流表项可以加入到该类中;在所有可能加入的类中选择存储代价增加最小的类完成加入。
5.如权利要求1所述的方法,其特征在于:步骤4)中当新加入的流表项条数超过限定的阀值时,对现有的类进行分裂操作的方法为:将下一条新流表项加入到某个类中,列举所有对该类进行预分裂成两个类的可能的操作,并计算每种可能的分裂情况下的存储空间大小;通过比较所有可能的分裂情况下所计算出的存储空间大小,选择存储空间减少最多的一个分裂情况;将该类按照这种方式进行分裂成两个类,并删除原类。
6.如权利要求5所述的方法,其特征在于,进行所述分裂操作时计算减小的存储空间的方法为:假设选择类A进行预分裂计算,将其分裂成类Al和类A2,则遍历类A中的所有流表项,分别预加入到类Al和类A2中,减少的存储空间为:类A存储代价*类A流表项条数-类Al存储代价*类Al流表项条数-类A2存储代价*类A2流表项条数。
7.如权利要求1所述的方法,其特征在于:步骤4)中当类的个数超过限定的阀值时,对现有的类进行合并操作的方法为:列举所有选择任意两个类进行预合并成一个类的可能情况,并计算每种可能的合并情况下的存储空间大小;通过比较所有可能的合并情况下计算出的存储空间大小,选择存储空间增加最少的一个合并可能;合并这两个类产生一个新类。
8.如权利要求7所述的方法,其特征在于:进行所述合并操作时计算增加的存储空间的方法为:假设选择类B和类C进行合并,合并后增加的存储空间为:合并后的类存储代价*合并后的类中流表项条数-类B的存储代价*类B的流表项条数-类C的存储代价*类C的流表项条数。
9.如权利要求1所述的方法,其特征在于=OpenFlow流表项字段采用OpenFlowl.3标准支持的所有字段。
10.如权利要求1所述的方法,其特征在于:对类的分裂个数限定的阀值不小于4。
【文档编号】G06F12/08GK103560963SQ201310581078
【公开日】2014年2月5日 申请日期:2013年11月18日 优先权日:2013年11月18日
【发明者】葛敬国, 吴玉磊, 鄂跃鹏, 游军玲, 陈智, 李佟, 韩春静 申请人:中国科学院计算机网络信息中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1