一种支持规则依赖的高能效OpenFlow流表查找方法技术

技术编号:24103173 阅读:48 留言:0更新日期:2020-05-09 14:06
本发明专利技术公开了一种支持规则依赖的高能效OpenFlow流表查找方法,本方法实现了高能效的OpenFlow流表查找以及支持规则依赖的OpenFlow流表管理。本发明专利技术方法使大部分数据分组会直接命中缓存并进行转发,而缓存采用能耗低的SRAM存储,显著降低了流表查找能耗,本发明专利技术方法还设计了TCAM流表的规则依赖检测与合并/分散调整更新算法,调整了活跃精确节点位置,及时纠正了流表缓存与TCAM流表的映射关系,保证了流表查找的正确性。

A high-energy openflow flow flow table lookup method supporting rule dependency

【技术实现步骤摘要】
一种支持规则依赖的高能效OpenFlow流表查找方法
本专利技术涉及OpenFlow流表
,特别涉及一种支持规则依赖的高能效OpenFlow流表查找方法。
技术介绍
为了实现灵活的流管理,OpenFlow流表项中的任意匹配字段均可携带通配符,这将导致多条OpenFlow流规则出现重叠现象,从而使得同一网络分组可能会成功匹配多条流规则。解决该问题的常用办法是为每条流规则赋予不同的优先级,这种具有不同优先级的多条流规则存在重叠的情况,称为规则依赖。当一个数据分组在OpenFlow流表中匹配到多条流表项时,往往选择优先级最高的那条作为最终匹配结果。为实现这样的效果,OpenFlow流表管理需要考虑流表项之间的依赖关系,并实时调整流表缓存与OpenFlow流表之间的映射关系,以保证OpenFlow流表查找结果的正确性。规则依赖问题具体而言,当TCAM中插入一条新流表项时,由于TCAM现有流表项可能与其存在规则依赖关系,存在流规则重叠部分。同时现有流表项可能又有部分活跃精确流缓存在流表缓存中,并且这些活跃精确流也隶属于该流表项。倘若不及时调整流表缓存与TCAM流表之间的映射关系,部分数据分组将依旧查找旧的缓存项,根据旧的流表项动作集进行转发,而不是根据优先级更高的新流表项动作集进行转发,从而导致OpenFlow流表查找结果失败。当TCAM中删除一条高优先级流表项时,也存在相同问题。由于高优先级流表项的删除,使得旧的缓存项失效,直接删除缓存项将导致查找性能降低,更好的方式是根据规则依赖关系重新建立这些缓存项与TCAM现有流表之间的关系。附图1给出了OpenFlow流表的主流存储查找方案,其查找流程如下:当某个数据分组pi到达OpenFlow交换机时,首先解析提取其分组首部中的重要字段,并计算其对应的流标识符fid,然后查找TCAM流表。若成功匹配TCAM中的某条流表项,则执行流表项中的动作集,更新相关统计信息;否则,交换机将分组信息封装成流安装请求消息发送给SDN控制器。SDN控制器学习生成新的流规则后,下发给OpenFlow交换机,并添加到流表中。与此同时,控制器也可主动下发流规则,更新交换机中的OpenFlow流表。从图中OpenFlow交换机的流表查找过程可知,每个数据分组的转发处理过程都需要查找TCAM流表,然而TCAM流表采用并行查找方式,能耗大,难以满足低能耗OpenFlow网络的构建要求。同时,倘若为了支持多优先级的OpenFlow流表查找,可在TCAM流表项中添加对应的优先级字段。如附图2所示,提供了一种基于缓存预测的OpenFlow节能存储架构(以下称为现有技术方案一),工作原理如下:现有技术方案一通过在OpenFlow交换机每个入端口处设置一个预测缓存,并借助该缓存尽可能地预测交换机接收到的数据分组(通过比对数据分组的签名),从而绕过流表查找过程,避免查找TCAM,达到节能目的。方案一的流表查找过程为:当OpenFlow交换机接收到一个数据分组,首先解析提取出数据分组中重要头部信息(如源IP地址SourceIP、目的IP地址DestinationIP、源端口SourcePort、目的端口DestinationPort、协议类型Protocoltype等),计算获得流关键字flowkey。与传统的方案不同,该方案不直接使用流关键字flowkey查找TCAM,而是使用哈希技术(直接映射技术、子域哈希技术)将关键字生成签名,然后查找缓存。而缓存项由三个部分构成:分组签名、流关键字以及动作集。因此,当某个数据分组的签名与缓存项中的分组签名匹配,并且其流关键字与缓存项中关键字的一致,则可直接进行数据分组转发,从而避免查找TCAM。这种方法使得大部分的数据分组可以通过查找缓存直接进行转发,只有少部分数据分组需要查询TCAM,从而能够大幅度节省能耗。由于TCAM能够容纳的流规则有限,因此可能会有一部分数据分组在TCAM中无法找到对应的流表项,无法进行转发处理,从而需要发送packet-in消息给控制器。这些数据分组的TCAM失败查找会产生大量的能耗。针对这个问题,研究人员提出了一种基于分段熟化布鲁姆过滤器(SegmentedAgingBloomFilter,SA-BF)的OpenFlow节能存储架构(以下称为现有技术方案二),如附图3所示。现有技术方案二的查找过程是:当OpenFlow交换机收到一个数据分组后,通过包预处理统一编码生成独特的可编码的二进制代码字节,然后使用哈希方式查找SA-BF中存储所有TCAM流表项信息的活跃块。若活跃块查找成功,则意味着该数据分组能够在TCAM中匹配到对应的流表项,需要进一步查找TCAM。否则,说明该数据分组隶属于新流,查找TCAM必定失败,则可直接发送packet-in消息到控制器,请求下发对应的流规则。该方案使得新流的数据分组不需要查询TCAM,从而有效降低了能耗。上述方案一基于网络流量局部性设计了预测缓存,通过使用预测缓存直接转发大量的数据分组,避免了查找TCAM流表,大幅度降低了能耗。然而,还存在有以下缺陷:(1)该方案使用CAM实现预测缓存,其查找能耗依旧较高。CAM与TCAM的区别是能否支持三态数据的存储与查找,但两者均采用并行查找方法,查找能耗均比一般的器件高。(2)在该方案中,若数据分组查找缓存失败,接着命中某条TCAM流表项,则将该流表项替换到缓存中。由于网络中并发流的数量非常庞大,而TCAM容量有限,这将会产生频繁的缓存替换,严重影响流表查找性能,增加能耗开销。(3)该方案的OpenFlow流表查找不支持规则依赖。当OpenFlow流表项之间存在依赖关系时,随着依赖流表项的增加、删除、替换等系列操作,缓存项与流表项之间的映射可能会发生变化,从而导致缓存查找结果出现错误。上述方案二采用分段伸长式过滤器直接判断出属于新流的网络分组,避免其TCAM流表查找操作,进而降低查找能耗。然而,还存在有以下缺陷:(1)在OpenFlow查找过程中,一条新流中往往只有第一个数据分组会查找失败,经由控制器下发新规则后,后续数据分组都会成功匹配。该方案的过滤器仅能够预测出新流第一个数据分组查找TCAM失败,仅降低了第一个数据分组的TCAM查找能耗,后续大量的数据分组依然需要查找TCAM流表,降低能耗有限。(2)为了支持通配流表项查找,该方案将通配流规则统一编码成普通规则,以配合过滤器实现预测查找。然而,在该方案中,掩码长度不同,数据分组编码而成的规则不同,因此唯有探测到正确的掩码长度才能匹配到对应的通配流规则。虽然本方案可并行探测多个掩码长度,但其探测能耗较大。
技术实现思路
本专利技术的目的在于至少解决现有技术中存在的技术问题之一,提供一种支持规则依赖的高能效OpenFlow流表查找方法,能够支持多优先级的OpenFlow流表查找,解决因规则依赖导致的缓存查找不一致问题,保证流表查找的正确性,并能够降低流表查找能耗。本专利技术提供了一种支持规则依赖的高能效Open本文档来自技高网
...

【技术保护点】
1.一种支持规则依赖的高能效OpenFlow流表查找方法,其特征在于,包括以下步骤:/nS100、建立支持规则依赖的高能效OpenFlow流表查找架构;所述架构包括:TCAM流表、DRAM流表以及使用SRAM为存储介质的流表缓存;/n所述TCAM流表用于存储流表项标识字段和优先级字段;所述DRAM流表用于存储流表项内容字段,还存储有活跃精确流列表;所述流表缓存中每条缓存项存储有活跃精确流签名、TCAM流表项索引值以及时间戳;所述架构在流表项更新阶段,将使用规则依赖算法对所述流表缓存与所述TCAM流表之间的映射关系进行自适应调整;/nS200、当OpenFlow交换机接收到数据分组后,提取流关键字,根据流关键字查找流表缓存,若流表缓存查找失败,则进入步骤S300;若流表缓存查找成功,则获取与所述数据分组对应的TCAM流表项索引值,并读取TCAM流表的标识字段中的匹配字段,判断流关键字与匹配字段是否一致,若一致,则根据对应的DRAM流表中的动作集执行相关操作;若不一致,则进入步骤S300;/nS300、进行TCAM流表查找;若TCAM流表查找失败,则将所述数据分组封装成packet-in消息发送给SDN控制器,以请求SDN控制器下发对应的流规则;若TCAM流表查找成功,则根据对应的DRAM流表中的动作集执行相关操作,并判断当前流是否进入活跃状态,若进入活跃状态,则将当前流存储至流表缓存中,并将当前流的信息插入至对应的DRAM流表中的活跃精确流列表中,更新DRAM流表;若未进入活跃状态,则更新DRAM流表。/n...

【技术特征摘要】
1.一种支持规则依赖的高能效OpenFlow流表查找方法,其特征在于,包括以下步骤:
S100、建立支持规则依赖的高能效OpenFlow流表查找架构;所述架构包括:TCAM流表、DRAM流表以及使用SRAM为存储介质的流表缓存;
所述TCAM流表用于存储流表项标识字段和优先级字段;所述DRAM流表用于存储流表项内容字段,还存储有活跃精确流列表;所述流表缓存中每条缓存项存储有活跃精确流签名、TCAM流表项索引值以及时间戳;所述架构在流表项更新阶段,将使用规则依赖算法对所述流表缓存与所述TCAM流表之间的映射关系进行自适应调整;
S200、当OpenFlow交换机接收到数据分组后,提取流关键字,根据流关键字查找流表缓存,若流表缓存查找失败,则进入步骤S300;若流表缓存查找成功,则获取与所述数据分组对应的TCAM流表项索引值,并读取TCAM流表的标识字段中的匹配字段,判断流关键字与匹配字段是否一致,若一致,则根据对应的DRAM流表中的动作集执行相关操作;若不一致,则进入步骤S300;
S300、进行TCAM流表查找;若TCAM流表查找失败,则将所述数据分组封装成packet-in消息发送给SDN控制器,以请求SDN控制器下发对应的流规则;若TCAM流表查找成功,则根据对应的DRAM流表中的动作集执行相关操作,并判断当前流是否进入活跃状态,若进入活跃状态,则将当前流存储至流表缓存中,并将当前流的信息插入至对应的DRAM流表中的活跃精确流列表中,更新DRAM流表;若未进入活跃状态,则更新DRAM流表。


2.根据权利要求1所述的一种支持规则依赖的高能效OpenFlow流表查找方法,其特征在于,还包括OpenFlow流表插入:
当OpenFlow交换机接收到SDN控制器下发的带ADD命令的flow_mod消息后,提取流规则信息,检测TCAM流表中是否存在空表项,若存在空表项,则将流规则信息插入至空表项中,并将该流规则作为待检测规则,对其进行规则依赖合并调整操作;若不存在空表项,则进行TCAM流表踢除操作,以留出一条空表项,将流规则信息插入至空表项中,并将该流规则作为待检测规则,对其进行规则依赖合并调整操作。


3.根据权利要求2所述的一种支持规则依赖的高能效OpenFlow流表查找方法,其特征在于,所述进行规则依赖合并调整操...

【专利技术属性】
技术研发人员:熊兵邬仁庚罗争赵锦元曾振国
申请(专利权)人:长沙理工大学
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1