一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种软件定义网络多级流表压缩方法及系统与流程

2021-11-15 17:49:00 来源:中国专利 TAG:
1.本发明属于软件定义网络领域,具体是关于一种软件定义网络多级流表压缩方法及系统。
背景技术
::2.软件定义网络(software‑definednetwork,sdn)将传统网络的控制面与数据面分离,逻辑集中的控制面通过下发过滤规则至数据面实现细粒度的网包过滤,极大地提高网络的服务能力。流表是存储过滤规则的关键模块,通过对传统路由设备中转发表的匹配字段及转发动作的扩展,openflow(sdn南向接口标准)定义了部署于sdn数据面的支持丰富过滤规则及处理指令的流表结构。随着网络规模的扩张及细粒度业务管控的需要,流表中过滤规则的数量快速增长。对此,openflow1.1版本首次提出基于多级流表的流水线转发机制。通过将单流表中的字段拆分存储至多级流表,可有效缓解字段间的乘积效应(字段取值的笛卡尔积)导致的规则数量扩展,缩减流表存储消耗。3.openflow标准不规定具体的多级流表构建方案,为有效拆分字段以实现高效的流表存储压缩,研究人员进行了丰富的研究。现有技术公开了一种根据字段间的共存与互斥关系进行多级流表拆分的方法,可有效缩减通配字段匹配所带来的存储浪费。基于上述方法,现有技术还公开了一种对拆分后的子流表根据匹配字段类型或字段重复率进一步拆分的方法,但是其忽略了实际系统中流表个数受限的问题。与此类似,现有技术还公开了基于匹配域裁剪的流表压缩、基于独立规则集位提取的流表压缩等方法,这些方法根据字段间的共存、互斥及继承关系,将规则集合拆分为不同子集,但是算法复杂的预处理过程增加转发设备的处理开销。与上述压缩方法不同,研究人员还直接根据各匹配字段值的重复率进行多级流表的拆分存储,取得较上述压缩方法更高效的存储压缩,但是该方法每次仅能拆分单个字段,压缩效果有限。现有技术还公开了一种软件定义网络中一种两步式多级流表构建算法,根据流类别及字段重复率分两步将单表映射为多级流表,可取得较好的压缩效果。4.然而,上述算法的流表拆分均为从原始单表逐步拆分为多表的方式,由于每步迭代过程仅根据字段共存互斥关系、字段重复率或流类别进行,其实际每步迭代的可行解搜索范围有限(o(g),g为字段互斥关系数、匹配字段数目或流类别种类数),易受局部极值影响,压缩能力有限。技术实现要素:5.针对上述问题,本发明的目的是提供一种软件定义网络多级流表压缩方法及系统,能够有效避免局部极值的影响,提高存储压缩效率。6.为实现上述目的,本发明采取以下技术方案:一种软件定义网络多级流表压缩方法,包括以下内容:7.1)获取交换机的规则集合,并将规则集合的匹配字段进行拆分,确定初始的多级流表;8.2)确定多级流表的级数是否满足预先设定的流表级数约束,若满足,则输出该多级流表为最终的压缩结果,完成多级流表的压缩;否则,进入步骤3);9.3)寻找多级流表中合并后存储冗余增加最小的两个子流表作为待合并子流表,将待合并子流表合并后的新子流表添加至多级流表中,并从多级流表中移除待合并子流表后,进入步骤2)。10.进一步地,所述步骤1)的具体过程为:11.获取规则集合;12.将规则集合的匹配字段按照特定字段拆解原则拆解为不同集合,每一集合存储于一个子流表中,得到初始的多级流表。13.进一步地,所述步骤3)的具体过程为:14.3.1)获取多级流表内第l个子流表间的两两组合,并将该组合内的两个子流表合并为一个新子流表;15.3.2)确定该组合内的两个子流表合并后新增的存储开销是否满足预先设定的存储开销约束,若满足,则重新设定存储开销约束,并将该组合内的两个子流表作为待合并子流表后,进入步骤3.3);否则,直接进入步骤3.3);16.3.3)确定子流表两两组合的次数l是否满足预先设定的次数约束,若满足,则令l=l 1,并进入步骤3.1);否则,进入步骤3.4);17.3.4)将待合并子流表合并后的新子流表添加至多级流表中,并从多级流表中移除待合并子流表,进入步骤2)。18.进一步地,所述步骤3.2)的具体过程为:19.3.2.1)分别确定合并后的新子流表以及合并前的两个子流表各自的存储开销;20.3.2.2)若合并前的两个子流表合并后新增的存储开销满足预先设定的存储开销约束,则设定存储开销约束值等于两个子流表合并后新增的存储开销,并将两个子流表作为待合并子流表后,进入步骤3.3);否则,直接进入步骤3.3)。21.进一步地,所述存储开销sj为:22.sj=fc(r,tj)wtj23.其中,sj表示第j个子流表的存储开销;fc(r,tj)表示规则集合r在tj的映射分布下不同值的计数;w表示规则集合r的各字段位宽向量;tj表示第j个子流表中的字段存储情况。24.一种软件定义网络多级流表压缩系统,包括规则集合拆分模块、级数确定模块和子流表搜寻模块;25.所述规则集合拆分模块用于获取交换机的规则集合,并将规则集合的匹配字段进行拆分,确定初始的多级流表;26.所述级数确定模块用于确定多级流表的级数是否满足预先设定的流表级数约束,若满足,则输出该多级流表为最终的压缩结果;否则,进入所述子流表搜寻模块;27.所述子流表搜寻模块用于寻找多级流表中合并后存储冗余增加最小的两个子流表作为待合并子流表,将待合并子流表合并后的新子流表添加至多级流表中,并从多级流表中移除待合并子流表后,进入所述级数确定模块。28.进一步地,所述子流表搜寻模块包括子流表获取模块、存储开销约束判定模块、搜寻次数约束判定模块和多级流表更新模块;29.所述子流表获取模块用于获取多级流表内第l个子流表间的两两组合,并将该组合内的两个子流表合并为一个新子流表;30.所述存储开销约束判定模块用于确定该组合内的两个子流表合并后新增的存储开销是否满足预先设定的存储开销约束,若满足,则重新设定存储开销约束,并将该组合内的两个子流表作为待合并子流表,进入所述次数约束判定模块;否则,直接进入所述次数约束判定模块;31.所述搜寻次数约束判定模块用于确定子流表两两组合的次数l是否满足预先设定的次数约束,若满足,则令l=l 1,并进入所述子流表获取模块;否则,进入所述多级流表更新模块;32.所述多级流表更新模块用于将待合并子流表合并后的新子流表添加至多级流表中,并从多级流表中移除待合并子流表,进入所述级数确定模块。33.一种处理设备,包括计算机程序指令,其中,所述处理设备运行所述计算机程序指令时执行上述软件定义网络多级流表压缩方法对应的步骤。34.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,其中,所述计算机程序指令用于执行上述软件定义网络多级流表压缩方法对应的步骤。35.本发明由于采取以上技术方案,其具有以下优点:36.1、本发明区别于已有算法的设计思路,采用子流表逐级合并的方式构建多级流表,每步迭代可实现o(g2)的搜索范围,从而有效避免局部极值的影响,提高存储压缩效率。37.2、传统算法在执行过程中,均局限于某一特定字段拆解原则,而本发明支持例如字段共存互斥关系、流类别等各种字段拆解原则的使用,使用者可以根据实际需求灵活选择字段拆解原则,实现多级流表的高效压缩,可以广泛应用于软件定义网络领域中。附图说明38.图1是本发明一实施例提供的多级流表结构模型示意图;39.图2是本发明一实施例提供的软件定义网络多级流表压缩方法的流程示意图;40.图3是本发明一实施例提供的采用现有技术中的全局搜索算法与本发明采用“直接拆分为单一字段”的拆解原则下的软件定义网络多级流表压缩方法的压缩效率随流表级数变化示意图;41.图4是本发明一实施例提供的采用现有技术中的全局搜索算法与本发明采用“直接拆分为单一字段”的拆解原则下的软件定义网络多级流表压缩方法的运行耗时随流表级数变化示意图;42.图5是本发明一实施例提供的软件定义网络多级流表压缩系统的整体结构示意图;43.图6是本发明一实施例提供的软件定义网络多级流表压缩系统中子流表搜寻模块的结构示意图。具体实施方式44.下面将参照附图更详细地描述本发明的示例性实施方式。虽然附图中显示了本发明的示例性实施方式,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。45.应理解的是,文中使用的术语仅出于描述特定示例实施方式的目的,而无意于进行限制。除非上下文另外明确地指出,否则如文中使用的单数形式“一”、“一个”以及“所述”也可以表示包括复数形式。术语“包括”、“包含”、“含有”以及“具有”是包含性的,并且因此指明所陈述的特征、步骤、操作、元件和/或部件的存在,但并不排除存在或者添加一个或多个其它特征、步骤、操作、元件、部件、和/或它们的组合。文中描述的方法步骤、过程、以及操作不解释为必须要求它们以所描述或说明的特定顺序执行,除非明确指出执行顺序。还应当理解,可以使用另外或者替代的步骤。46.术语解释:字段拆解原则,是指将多个匹配字段拆分成不同集合所依赖的原则,例如按照字段间共存与互斥关系拆解、按照流类别拆解、直接拆分为单一字段等不同拆解原则。47.受交换机延迟约束,设定流表级数为k,则sdn数据平面的多级流表结构如图1所示,经解析器解析后的分组包头及元数据送入多级流表,在每级流表处,由分组包头及元数据组成的搜索字进行流表查找,并执行匹配表项中的对应指令。当最后一级流表查找完成后,以该分组在各级表中的匹配结果进行索引,查找并执行动作索引模块中的对应动作。完成后的分组将被输出,以进行后续处理。48.多级流表压缩问题即是解决如何将各匹配字段合理拆解至k级流表中,以最小化总存储消耗。设定规则集合为r,含n个匹配字段,各字段位宽向量为w=(w1,w2,...,wn),其中,wi表示第i个字段的位宽。将第j个子流表中的字段存储情况表示为列向量tj=(b1,b2,...,bn)t,其中,bi=1表示第i个字段存储于该表中,bi=0表示第i个字段不存储于该表中,则第j个子流表的存储消耗sj为:49.sj=fc(r,tj)wtjꢀꢀ(1)50.其中,sj表示第j个子流表的存储开销;fc(r,tj)表示规则集合r在tj的映射分布下不同值的计数,即第j个子流表中的表项数。另外,设定en为长度为n的全1列向量,考虑不进行存储优化时原始单级表的存储消耗so为:51.so=fc(r,en)wenꢀꢀ(2)52.则多级流表的存储空间压缩效率η为:[0053][0054]其中,saction表示实现最终动作索引所需的存储消耗,与具体选择的算法有关。多级流表压缩的目标即是使η最大化。[0055]基于上述问题说明,本发明实施例提供了一种软件定义网络多级流表压缩方法及系统——基于逆序逐级合并的多级流表压缩方案,其方案的执行与具体字段拆解原则无关。核心思想是:如图2所示,首先假设按照特定字段拆解原则拆解后的各字段集合,分别存储于各子表中,然后每次选择合并后存储冗余增加最小的两个子流表进行流表合并(即逆序合并),直至最终流表数量满足级数约束。[0056]实施例1[0057]本实施例提供一种软件定义网络多级流表压缩方法,包括以下步骤:[0058]1)获取交换机的规则集合r,并将规则集合r的匹配字段按照特定字段拆解原则拆解为不同集合,每一集合存储于一个子流表中,则初始的多级流表tables为:[0059]tables={t1,t2,...,tg}ꢀꢀ(4)[0060]其中,g表示子流表的个数;tg表示第g个子流表中的字段存储情况。[0061]2)确定多级流表tables的级数,若多级流表tables的级数小于预先设定的流表级数k,则输出tables为最终的压缩结果,完成多级流表的压缩;否则,设定:[0062]tnew=told1=told2=none,δs= ∞,l=1ꢀꢀ(5)[0063]其中,tnew表示合并后的新子流表;told1、told2分别表示被合并的两个子流表;δs表示子流表合并后新增的存储开销;l为子流表两两组合的次数。[0064]3)获取多级流表tables内第l个子流表间的两两组合,设定该组合内的两个子流表分别为ta和tb,并将子流表ta和tb合并为一个新的子流表tc:[0065]tc=tavtbꢀꢀ(6)[0066]其中,v表示布尔向量的并集。[0067]4)采用上述公式(1),分别确定合并后的子流表tc以及合并前的子流表ta和tb各自的存储开销sc、sa和sb。[0068]5)若子流表ta和tb合并后新增的存储开销满足预先设定的存储开销约束,例如若δs>sc‑(sa sb),则设定参数后,进入步骤6);否则,直接进入步骤6),其中,设定的参数为:[0069]δs=sc‑(sa sb)ꢀꢀ(7)[0070]tnew=tc,told1=ta,told2=tbꢀꢀ(8)[0071]6)确定子流表两两组合的次数l是否满足预先设定的次数约束,若满足,则令l=l 1,并进入步骤3);否则,进入步骤7)。[0072]具体为:[0073]若l<c(2,lengthoftables),其中,该式表示总迭代次数(循环次数)为子流表两两组合的组合数,c表示组合数的公式,组合数为从多级流表tables中选取的两个不同子流表进行组合的组合个数,则令l=l 1,并进入步骤3);否则,进入步骤7)。[0074]7)将合并后的新子流表tnew添加至多级流表tables中,并从多级流表tables中移除子流表told1和told2,进入步骤2)。[0075]下面以采用“直接拆分为单一字段”的拆解原则为具体实施例详细说明本发明的软件定义网络多级流表压缩方法:[0076]1)获取规则集合,共包括11个字段:输入端口、源mac、目的mac、以太网类型、ipv4源ip、ipv4目的ip、ipv6源ip、ipv6目的ip、传输层协议类型、源端口和目的端口。将规则集合r的匹配字段直接拆分为多个单一字段,每一字段存储于一级子流表中,则共11个子流表,则初始的多级流表tables为:[0077]tables={t1,t2,...,t11}ꢀꢀ(9)[0078]对于第j个子流表,其字段存储向量为:[0079][0080]其中,bu表示存储状态,1表示第j个子流表存储第u个字段,0表示第j个子流表不存储第u个字段。[0081]2)确定多级流表tables的级数,若多级流表tables的级数小于预先设定的流表级数k,则输出tables为最终的压缩结果,完成多级流表的压缩;否则,设定tnew=told1=told2=none,δs= ∞,l=1。[0082]3)获取多级流表tables内第l个子流表间的两两组合,设定该组合内的两个子流表分别为ta和tb,并将子流表ta和tb合并为一个新的子流表tc。[0083]4)采用上述公式(1),分别确定合并后的子流表tc以及合并前的子流表ta和tb各自的存储开销sc、sa和sb。[0084]5)若δs>sc‑(sa sb),则设定δs=sc‑(sa sb),tnew=tc,told1=ta,told2=tb后,进入步骤6);否则,直接进入步骤6)。[0085]6)若l<c(2,lengthoftables),则令l=l 1,并进入步骤3);否则,进入步骤7)。[0086]7)将合并后的新子流表tnew添加至多级流表tables中,并从多级流表tables中移除子流表told1和told2,进入步骤2)。[0087]对比采用现有技术中的全局搜索算法与本实施例采用“直接拆分为单一字段”的拆解原则下的软件定义网络多级流表压缩方法,结果如图3和图4所示,可以看出,在压缩效率方面,本发明的方法与现有技术中的全局搜索算法产生的全局最优值相近(下降不超过9%);在运行耗时方面,本发明的方法相比全局搜索算法节省约1~3个数量级,且随流表级数增长运行耗时较为稳定。[0088]实施例2[0089]基于上述软件定义网络多级流表压缩方法,如图5所示,本实施例提供一种软件定义网络多级流表压缩系统,包括规则集合拆分模块1、级数确定模块2和子流表搜寻模块3。[0090]规则集合拆分模块1用于获取交换机的规则集合,并将规则集合的匹配字段进行拆分,确定初始的多级流表。[0091]级数确定模块2用于确定多级流表的级数是否满足预先设定的流表级数约束,若满足,则输出该多级流表为最终的压缩结果;否则,进入子流表搜寻模块3。[0092]子流表搜寻模块3用于寻找多级流表中合并后存储冗余增加最小的两个子流表作为待合并子流表,将待合并子流表合并后的新子流表添加至多级流表中,并从多级流表中移除待合并子流表后,进入级数确定模块2。[0093]在一个优选的实施例中,如图6所示,子流表搜寻模块3包括子流表获取模块31、存储开销约束判定模块32、搜寻次数约束判定模块33和多级流表更新模块34。[0094]子流表获取模块31用于获取多级流表内第l个子流表间的两两组合,并将该组合内的两个子流表合并为一个新子流表。[0095]存储开销约束判定模块32用于确定该组合内的两个子流表合并后新增的存储开销是否满足预先设定的存储开销约束,若满足,则重新设定存储开销约束,并将该组合内的两个子流表作为待合并子流表,进入次数约束判定模块33;否则,直接进入次数约束判定模块33。[0096]搜寻次数约束判定模块33用于确定子流表两两组合的次数l是否满足预先设定的次数约束,若满足,则令l=l 1,并进入子流表获取模块31;否则,进入多级流表更新模块34。[0097]多级流表更新模块34用于将待合并子流表合并后的新子流表添加至多级流表中,并从多级流表中移除待合并子流表,进入级数确定模块2。[0098]实施例3[0099]本实施例提供一种与本实施例1所提供的软件定义网络多级流表压缩方法对应的处理设备,处理设备可以是用于控制交换机的处理设备,例如配置交换机的上位机、移动终端、服务器等,以执行实施例1的方法。[0100]所述处理设备可以包括处理器、存储器、通信接口和总线,处理器、存储器和通信接口通过总线连接,以完成相互间的通信。存储器中存储有可在处理设备上运行的计算机程序指令,处理设备运行计算机程序指令时执行本实施例1所提供的软件定义网络多级流表压缩方法。[0101]在一些实现中,存储器可以是高速随机存取存储器(ram:randomaccessmemory),也可能还包括非不稳定的存储器(non‑volatilememory),例如至少一个磁盘存储器。[0102]在另一些实现中,处理器可以为中央处理器(cpu)、数字信号处理器(dsp)等各种类型通用处理器,在此不做限定。[0103]实施例4[0104]本实施例1的软件定义网络多级流表压缩方法可被具体实现为一种计算机程序产品,计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本实施例1所述的软件定义网络多级流表压缩方法的计算机程序指令。[0105]计算机可读存储介质可以为保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意组合。[0106]上述各实施例仅用于说明本发明,其中各部件的结构、连接方式和制作工艺等都是可以有所变化的,凡是在本发明技术方案的基础上进行的等同变换和改进,均不应排除在本发明的保护范围之外。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献