CN111131029A - 一种支持规则依赖的高能效OpenFlow流表查找方法 - Google Patents
一种支持规则依赖的高能效OpenFlow流表查找方法 Download PDFInfo
- Publication number
- CN111131029A CN111131029A CN201911220371.XA CN201911220371A CN111131029A CN 111131029 A CN111131029 A CN 111131029A CN 201911220371 A CN201911220371 A CN 201911220371A CN 111131029 A CN111131029 A CN 111131029A
- Authority
- CN
- China
- Prior art keywords
- flow
- flow table
- rule
- tcam
- entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/64—Routing or path finding of packets in data switching networks using an overlay routing layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种支持规则依赖的高能效OpenFlow流表查找方法,本方法实现了高能效的OpenFlow流表查找以及支持规则依赖的OpenFlow流表管理。本发明方法使大部分数据分组会直接命中缓存并进行转发,而缓存采用能耗低的SRAM存储,显著降低了流表查找能耗,本发明方法还设计了TCAM流表的规则依赖检测与合并/分散调整更新算法,调整了活跃精确节点位置,及时纠正了流表缓存与TCAM流表的映射关系,保证了流表查找的正确性。
Description
技术领域
本发明涉及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地址Source IP、目的IP地址Destination IP、源端口Source Port、目的端口Destination Port、协议类型Protocol type等),计算获得流关键字flow key。与传统的方案不同,该方案不直接使用流关键字flow key查找TCAM,而是使用哈希技术(直接映射技术、子域哈希技术)将关键字生成签名,然后查找缓存。而缓存项由三个部分构成:分组签名、流关键字以及动作集。因此,当某个数据分组的签名与缓存项中的分组签名匹配,并且其流关键字与缓存项中关键字的一致,则可直接进行数据分组转发,从而避免查找TCAM。这种方法使得大部分的数据分组可以通过查找缓存直接进行转发,只有少部分数据分组需要查询TCAM,从而能够大幅度节省能耗。
由于TCAM能够容纳的流规则有限,因此可能会有一部分数据分组在TCAM中无法找到对应的流表项,无法进行转发处理,从而需要发送packet-in消息给控制器。这些数据分组的TCAM失败查找会产生大量的能耗。
针对这个问题,研究人员提出了一种基于分段熟化布鲁姆过滤器(SegmentedAging Bloom Filter,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流表查找,解决因规则依赖导致的缓存查找不一致问题,保证流表查找的正确性,并能够降低流表查找能耗。
本发明提供了一种支持规则依赖的高能效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流表。
进一步,还包括OpenFlow流表插入:
当OpenFlow交换机接收到SDN控制器下发的带ADD命令的flow_mod消息后,提取流规则信息,检测TCAM流表中是否存在空表项,若存在空表项,则将流规则信息插入至空表项中,并将该流规则作为待检测规则,对其进行规则依赖合并调整操作;若不存在空表项,则进行TCAM流表踢除操作,以留出一条空表项,将流规则信息插入至空表项中,并将该流规则作为待检测规则,对其进行规则依赖合并调整操作。
进一步,所述进行规则依赖合并调整操作,进一步包括:
遍历TCAM流表中的所有流表项,依次提取所有流表项中的匹配字段以及优先级字段,查找出与待检测流规则存在依赖关系的所有流表项索引值,组成对应的规则依赖集合;
对于规则依赖集合中的每个流表项索引值,依次读取DRAM中相应的活跃精确流列表,并遍历列表中的每个活跃精确流节点,然后判断该活跃精确流节点是否也隶属于待检测流规则,若属于,则将该节点调整至待检测流规则所对应的DRAM流表中的活跃精确流列表中。
进一步,还包括OpenFlow流表超时删除:
当OpenFlow交换机接收到SDN控制器下发的带DELETE命令的flow_mod消息后,根据消息中的相关信息查找TCAM流表;
若TCAM流表查找成功,则找到需要删除的TCAM流表项以及对应的DRAM流表项,并将该流表项规则作为待检测规则,对其进行规则依赖分散调整操作,对于无法进行调整的活跃精确流节点,应删除对应的流表缓存项,最后清空需要删除的TCAM流表项以及对应的DRAM流表项;
若TCAM流表查找失败,则发送删除失败指令至SDN控制器。
进一步,还包括OpenFlow流表超时扫描:
OpenFlow交换机获取系统当前时间以及流表项数量;
依次遍历DRAM流表,读取DRAM流表项中的时间戳,判断系统当前时间和时间戳的时间差是否大于预设的超时间隔,若大于,则删除超时的DRAM流表项以及对应的TCAM流表项,并将该流表项规则作为待检测规则,对其进行规则依赖分散调整操作。
进一步,所述进行规则依赖分散调整操作,进一步包括:
遍历TCAM流表中的所有流表项,依次提取所有流表项中的匹配字段以及优先级字段,查找出与待检测流规则存在依赖关系的所有流表项索引值,组成对应的规则依赖集合;
对于待检测规则对应的活跃精确流列表中每个活跃精确流节点,依次判断其是否隶属于规则依赖集合某条流表项,若属于,则将该活跃精确流节点插入至该依赖规则所对应的DRAM流表中的活跃精确流列表中。
根据本发明所述的一种支持规则依赖的高能效OpenFlow流表查找方法,至少具有以下有益效果:
(1)通过本方法,大部分数据分组会直接命中流表缓存并进行转发,而流表缓存采用能耗低的SRAM存储,显著降低了流表查找能耗;基于网络流量局部性缓存活跃精确流,进一步提高了缓存命中率;同时,设计了TCAM流表的规则依赖搜索、合并调整以及分散调整算法,在OpenFlow流表发生诸如插入、删除以及替换操作时,能够及时调整流表缓存与TCAM流表之间的映射关系,保证了流表查找的正确性。
(2)本发明相比现有技术方案一,针对方案一存在的缺陷,第一使用低能耗的RAM器件替代CAM器件设计缓存,在保障查找效率的同时,显著降低了流表查找能耗;第二提出了活跃精确流缓存策略,通过设计重要流识别算法,仅将TCAM中的活跃精确流放入缓存,在提高缓存命中率的同时,降低缓存替换率;第三基于规则依赖搜索算法,设计规则依赖合并调整与分散调整策略,动态调整缓存项与流表项之间的映射关系,以保证OpenFlow流表查找的正确性。
(3)本发明相比现有技术方案二,针对方案二存在的缺陷,第一基于SRAM设计流表缓存,存储网络中的活跃精确流,使得大部分数据分组无需查找TCAM,直接命中缓存,进而实现转发,显著降低能耗;第二基于通配流往往是由多条精确流汇聚而成的事实,根据网络流量局部性,缓存其中的活跃精确流,使得大部分数据分组到直接查找命中缓存,从而显著降低OpenFlow流表查找能耗。
附图说明
下面结合附图和实施例对本发明进一步地说明;
图1为本发明现有技术OpenFlow流表主流存储查找方案的示意图;
图2为本发明现有技术基于缓存预测的OpenFlow节能存储架构的示意图;
图3为本发明现有技术基于分段熟化布鲁姆过滤器的OpenFlow节能存储架构的示意图;
图4为本发明实施例提供的支持规则依赖的高能效OpenFlow流表查找架构的示意图;
图5为本发明实施例提供的TCAM流表设计的示意图;
图6为本发明实施例提供的活跃精确流列表的示意图;
图7为本发明实施例提供的OpenFlow流表数据分组转发的流程示意图;
图8为本发明实施例提供的OpenFlow流表插入的流程示意图;
图9为本发明实施例提供的规则依赖关系检测算法的流程示意图;
图10为本发明实施例提供的规则依赖合并调整算法的流程示意图;
图11为本发明实施例提供的OpenFlow流表超时删除的流程示意图;
图12为本发明实施例提供的规则依赖分散调整算法更新流程示意图;
图13为本发明实施例提供的OpenFlow流表超时扫描流程示意图。
具体实施方式
本部分将详细描述本发明的具体实施例,本发明之较佳实施例在附图中示出,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本发明的每个技术特征和整体技术方案,但其不能理解为对本发明保护范围的限制。
在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
参照图4至图6,本发明的一个实施例,提供了一种支持规则依赖的高能效OpenFlow流表查找方法,包括以下步骤:
步骤S100、建立支持规则依赖的高能效OpenFlow流表查找架构;架构包括:TCAM流表、DRAM流表以及使用SRAM为存储介质的流表缓存,TCAM流表用于存储流表项标识字段和优先级字段;DRAM流表用于存储流表项内容字段,还存储有活跃精确流列表;流表缓存中的每条缓存项中存储有活跃精确流签名、TCAM流表项索引值以及时间戳;架构在流表项更新阶段,将使用规则依赖算法对流表缓存与TCAM流表之间的映射关系进行自适应调整;
这里的标识字段包括但不限于:用于流表查找的匹配域字段(匹配字段、掩码信息);内容字段包括但不限于:动作集、计数器以及活跃精确流列表,用以实现数据分组的转发、流信息的统计以及流状态的判断。支持多优先级的流表查找是指:若数据分组命中TCAM流表中的多条流表项,应取优先权最高的流表项作为最终的匹配结果。
在步骤S100提供的架构中,流表缓存采用查找耗能低、访问速度快的SRAM芯片作为缓存介质,通过缓存网络中的活跃精确流,以减少查找TCAM流表次数,从而降低OpenFlow流表查找能耗,流表缓存内采用各类已公布的查找算法进行查找,例如,可以采用Cuckoo缓存、孔雀鸟缓存,d-Left缓存等。通过在每条DRAM流表项中设置活跃精确流列表,可以通过规则依赖合并/分散调整算法实时调整活跃精确流节点位置,能够动态自适应调整流表缓存与TCAM之间的映射关系,以确保缓存查找的正确性。
当网络中的数据分组到达OpenFlow交换机,通过解析提取数据分组的流关键字信息,便可以查找流表缓存中的缓存项。由于事先已将TCAM流表中重要的流表项缓存至流表缓存中(重要的流表项特指活跃精确流表项,也可以替换成活跃流或大象流流表项),以便绕过高耗能的TCAM流表查找,达到节省能耗的目的。
如图6,给出了活跃精确流列表的结构,每个节点中包含用于匹配的流关键字,用于定位到该流在流表缓存中的位置信息:行与列。
步骤S200、进行流表缓存查找;
当OpenFlow交换机接收到数据分组后,提取流关键字,根据流关键字查找流表缓存,若流表缓存查找失败,则进入步骤S300;若流表缓存查找成功,则获取与数据分组对应的TCAM流表项索引值,并读取TCAM流表中的匹配字段,判断流关键字与匹配字段是否一致,若一致,则根据对应的DRAM流表中的动作集执行相关操作;若不一致,则进入步骤S300;
步骤S300、进行TCAM流表查找;
若TCAM流表查找失败,则将数据分组封装成packet-in消息发送给SDN控制器,以请求SDN控制器下发对应的流规则;若TCAM流表查找成功,则根据对应的DRAM流表中的动作集执行相关操作,并判断当前流是否进入活跃状态,若进入活跃状态,则将当前流存储至流表缓存中,并将当前流的信息插入至对应的DRAM流表中的活跃精确流列表中,更新DRAM流表;若未进入活跃状态,则更新DRAM流表。
通过本实施例提供的方法,大部分数据分组会直接命中流表缓存并进行转发,而流表缓存采用能耗低的SRAM存储,显著降低了流表查找能耗;流表缓存采用现有高效的查找算法,提高了缓存利用率,并基于网络流量局部性缓存活跃精确流,进一步提高了缓存命中率;设计了TCAM流表的规则依赖检测与合并\分散调整更新算法(具体在后续实施例中说明),保证了流表查找的正确性。
作为一种可实施方式,参照图7,还提供一种OpenFlow流表数据分组转发方法,具体流程如下:
当OpenFlow交换机接收到网络中的某个数据分组后,首先,需要解析提取其分组头部,并获取流关键字;接着,使用流关键字查找流表缓存,若流表缓存查找成功,则能够获取该数据分组对应的TCAM流表项索引值,根据TCAM流表项索引值,读取TCAM流表项中匹配字段,进一步检验该流关键字是否与该匹配字段一致,若两者内容一致,则意味着流表缓存查找过程成功,数据分组无需查找TCAM流表,便能够根据DRAM流表项中的动作集进行转发操作,从而节省了查找能耗;最后,需要更新DRAM中的相关的内容字段信息(如计数器和时间戳),同时也需要更新成功匹配的流表缓存项中的时间戳信息,以方便后续的超时扫描流程的实现。
若流表缓存查找失败,仍需要查找TCAM流表,以获得匹配的流表项索引值,进而转发处理数据分组。如果TCAM流表查找成功,一方面需要判断该数据分组所在的流是否进入了活跃状态,如果该流进入了活跃状态,则需要将该活跃流缓存至流表缓存中,并将相关的活跃流信息插入相应的DRAM内容表项中的活跃精确流列表中。另一方面,不管该流是否进入活跃状态,系统都需要记录该流的流关键字信息到相应的DRAM流表项中,以识别活跃流。如果经过TCAM流表查找仍无法找到对应的流表项,则意味着该数据分组对应的流属于新流,此时,OpenFlow交换机将该数据分组信息封装成packet-in消息发送给SDN控制器,以请求SDN控制器下发对应的流规则。
需要说明的是,数据分组转发流程是在上述实施例的查找方法的基础上,执行相对应的动作集。另外,本实施的数据分组转发方法和下述实施例的流表插入方法、流表超时删除方法、以及流表超时扫描方法均基于上述实施例提供的支持规则依赖的高能效OpenFlow流表查找架构而实现。
作为一种可实施方式,参照图8,还提供一种OpenFlow流表插入流程方法,具体流程如下:
当OpenFlow交换机接收到SDN控制器下发的带ADD命令的flow_mod消息后,首先,提取其中的流规则信息(如匹配字段、优先级、动作集等);接着,检测TCAM是否存在空表项,若存在空表项,需要将新流的匹配字段信息、掩码信息以及优先级字段信息插入到对应的TCAM流表项中,并根据插入位置将其余的内容信息插入到与之对应的DRAM流表项中。由于插入的规则可能与TCAM流表中现有规则存在依赖关系,此时需使用规则依赖检测算法找出其依赖的流表项集合,并需要使用规则依赖合并调整算法,将其中冲突的活跃精确流节点调整到当前流表项对应的活跃精确流列表中。若不存在空表项,则需要采用TCAM流表项剔除算法,剔除一条最不重要或者最近最久未使用的流表项,以腾出空间插入新流表项。
作为一种可实施方式,参照图9,还提供一种规则依赖关系检测算法,具体流程如下:
当OpenFlow交换机下发或者删除一条流表项时,考虑到规则依赖问题,需要重新调整缓存等信息,以保证的流表查找正确性。
首先根据待检测流规则,遍历TCAM中的所有流表项,提取流表项的匹配字段信息和优先级字段信息。这里,需要说明的是,只有当待检测流规则的优先级大于当前流表项的优先级,且两者之间存在规则重叠部分(取交集操作),才意味着待检测规则和当前流表项存在依赖关系。最终将找出与待检测规则存在依赖关系的所有流表项索引值,以便后续更新处理。
作为一种可实施方式,参照图10,还提供一种规则依赖合并调整算法流程。
首先输入待检测规则和其对应的规则依赖集合。对于规则依赖集中的每条流规则索引值,读取其DRAM流表中的活跃精确流列表;对于活跃精确流列表中的每个节点,检测其流规则是否属于该待检测规则,若属于,则将节点调整至待检测规则所对应的DRAM流表中的活跃精确流列表中。
作为一种可实施方式,参照图11,还提供一种OpenFlow流表的超时删除方法,具体流程如下:
当OpenFlow交换机接收到SDN控制器下发的带DELETE命令的flow_mod消息后,首先,需要提取出该消息中与流表项相关的信息(如匹配域、掩码、优先级等信息);接着,查找TCAM流表,如果TCAM流表查找成功(找到TCAM流表项),则需要根据TCAM流表项索引值,找到需要删除的DRAM流表项(内容表项)。然后,根据将该流表项规则作为待检测规则,根据规则依赖检测算法,获取其规则依赖集合,并根据规则依赖分散调整算法,实时将其活跃精确流节点调整至其所依赖规则处。对于无法调整的节点,则需根据节点存储的流表缓存项的行与列信息,删除对应的流表缓存项;最后,清空DRAM流表项、其对应的活跃精确流列表、以及对应的TCAM流表项(匹配表项),完成流表项删除操作。此外,若查找TCAM流表时找不到需要删除的流表项,则需要将流表项删除失败结果报告发送至SDN控制器。
作为一种可实施方式,参考图12,还提供一种规则依赖分散调整算法,具体流程如下:
首先输入待检测规则和其对应的规则依赖集合。对于待检测规则对应的活跃精确流列表中每个活跃精确流节点,依次判断其是否隶属于规则依赖集合某条流表项,若属于,则将该活跃精确流节点插入至该依赖规则所对应的DRAM流表中的活跃精确流列表中。
需要说明的是,本实施例中的规则依赖分散调整算法与上述实施例中的规则依赖合并调整算法的区别在于:
合并调整操作是指:从多条依赖规则处,调整活跃精确流节点到待检测规则活跃精确流处。分散调整操作是指:将待检测规则的活跃精确流节点分散调整到其所依赖的规则处。这两个操作的方向是相反的。
作为一种可实施方式,参照图13,还提供一种OpenFlow流表超时扫描方法,具体流程如下:
首先,OpenFlow交换机获取系统当前时间和流表项数量;接着,从头遍历DRAM流表,读取DRAM流表项中的时间戳信息,并根据系统当前时间和表项时间戳的差值与超时间隔进行比较(超时间隔有hard time和idle time两种),若超过间隔时间,则意味着该流表项失效,需要删除该TCAM流表项、对应的DRAM流表项、以及调整并删除对应的活跃精确流节点,并对删除的流表项实施规则依赖分散调整操作。需要说明的是,该操作步骤与删除流程类似,此处不再赘述。
在上述实施例中,本发明提供的一种支持规则依赖的高能效OpenFlow流表查找方法实现了高能效的OpenFlow流表查找以及支持规则依赖的OpenFlow流表管理。
为了实现高能效的OpenFlow流表查找,首先,采用了能耗低、访问速度快的存储介质SRAM构建缓存,将少量、重要的流规则缓存起来,以尽可能地避开高能耗的TCAM流表查找,从而降低了OpenFlow流表查找能耗;接着,基于网络流量局部性提出了活跃精确流缓存策略,将网络中占据大部分数据包的活跃精确流缓存到SRAM中,提高了缓存命中率。
为实现支持规则依赖的OpenFlow流表管理,首先,为每条TCAM流表项设置了一个活跃精确流列表,用于存储通配流中的当前活跃精确流,以维护TCAM流表项与流表缓存中活跃精确流表项之间的映射关系;接着,提出了规则依赖检测算法,遍历查找TCAM流表项,采用“取交集”方式找出所有与待检测流表项有着依赖关系的流表项;最后,在流表项插入过程中采用了规则依赖合并调整更新算法,在流表项删除过程中采用了规则依赖分散调整算法,及时调整活跃精确流至对应的TCAM依赖流表项,并更新相应的缓存项,以确保该流后续数据分组正确查找流表。
综上,本发明提供的一种支持规则依赖的高能效OpenFlow流表查找方法,具有如下优点:大部分数据分组会直接命中缓存并进行转发,而缓存采用能耗低的SRAM存储,显著降低了流表查找能耗;设计了TCAM流表的规则依赖检测与合并/分散调整更新算法,调整了活跃精确节点位置,及时纠正了流表缓存与TCAM流表的映射关系,保证了流表查找的正确性。
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所述技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (6)
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流表查找方法,其特征在于,所述进行规则依赖合并调整操作,进一步包括:
遍历TCAM流表中的所有流表项,依次提取所有流表项中的匹配字段以及优先级字段,查找出与待检测流规则存在依赖关系的所有流表项索引值,组成对应的规则依赖集合;
对于规则依赖集合中的每个流表项索引值,依次读取DRAM中相应的活跃精确流列表,并遍历列表中的每个活跃精确流节点,然后判断该活跃精确流节点是否也隶属于待检测流规则,若属于,则将该节点调整至待检测流规则所对应的DRAM流表中的活跃精确流列表中。
4.根据权利要求1所述的一种支持规则依赖的高能效OpenFlow流表查找方法,其特征在于,还包括OpenFlow流表超时删除:
当OpenFlow交换机接收到SDN控制器下发的带DELETE命令的flow_mod消息后,根据消息中的相关信息查找TCAM流表;
若TCAM流表查找成功,则找到需要删除的TCAM流表项以及对应的DRAM流表项,并将该流表项规则作为待检测规则,对其进行规则依赖分散调整操作,对于无法进行调整的活跃精确流节点,应删除对应的流表缓存项,最后清空需要删除的TCAM流表项以及对应的DRAM流表项;
若TCAM流表查找失败,则发送删除失败指令至SDN控制器。
5.根据权利要求1所述的一种支持规则依赖的高能效OpenFlow流表查找方法,其特征在于,还包括OpenFlow流表超时扫描:
OpenFlow交换机获取系统当前时间以及流表项数量;
依次遍历DRAM流表,读取DRAM流表项中的时间戳,判断系统当前时间和时间戳的时间差是否大于预设的超时间隔,若大于,则删除超时的DRAM流表项以及对应的TCAM流表项,并将该流表项规则作为待检测规则,对其进行规则依赖分散调整操作。
6.根据权利要求4或5任一项所述的一种支持规则依赖的高能效的OpenFlow流表查找方法,其特征在于,所述进行规则依赖分散调整操作,进一步包括:
遍历TCAM流表中的所有流表项,依次提取所有流表项中的匹配字段以及优先级字段,查找出与待检测流规则存在依赖关系的所有流表项索引值,组成对应的规则依赖集合;
对于待检测规则对应的活跃精确流列表中每个活跃精确流节点,依次判断其是否隶属于规则依赖集合某条流表项,若属于,则将该活跃精确流节点插入至该依赖规则所对应的DRAM流表中的活跃精确流列表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911220371.XA CN111131029B (zh) | 2019-12-03 | 2019-12-03 | 一种支持规则依赖的高能效OpenFlow流表查找方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911220371.XA CN111131029B (zh) | 2019-12-03 | 2019-12-03 | 一种支持规则依赖的高能效OpenFlow流表查找方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111131029A true CN111131029A (zh) | 2020-05-08 |
CN111131029B CN111131029B (zh) | 2022-08-19 |
Family
ID=70497247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911220371.XA Active CN111131029B (zh) | 2019-12-03 | 2019-12-03 | 一种支持规则依赖的高能效OpenFlow流表查找方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111131029B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966284A (zh) * | 2020-07-16 | 2020-11-20 | 长沙理工大学 | 一种OpenFlow大规模流表弹性节能与高效查找架构及方法 |
CN115208810A (zh) * | 2021-04-12 | 2022-10-18 | 益思芯科技(上海)有限公司 | 一种转发流表加速方法及装置、电子设备和存储介质 |
WO2022252634A1 (zh) * | 2021-05-31 | 2022-12-08 | 平安科技(深圳)有限公司 | 数据流传输方法、装置、计算机设备及存储介质 |
WO2023024799A1 (zh) * | 2021-08-24 | 2023-03-02 | 苏州盛科通信股份有限公司 | 一种报文的转发方法、网络转发设备及计算机存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905311A (zh) * | 2012-12-28 | 2014-07-02 | 华为技术有限公司 | 流表匹配方法和装置以及交换机 |
CN104468361A (zh) * | 2014-12-15 | 2015-03-25 | 盛科网络(苏州)有限公司 | 带有优先级的tcam储存和查找方法及装置 |
US20180083876A1 (en) * | 2016-09-20 | 2018-03-22 | Radisys Corporation | Optimization of multi-table lookups for software-defined networking systems |
US20190036821A1 (en) * | 2017-07-30 | 2019-01-31 | Mellanox Technologies Tlv Ltd. | Efficient caching of TCAM rules in RAM |
-
2019
- 2019-12-03 CN CN201911220371.XA patent/CN111131029B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905311A (zh) * | 2012-12-28 | 2014-07-02 | 华为技术有限公司 | 流表匹配方法和装置以及交换机 |
CN104468361A (zh) * | 2014-12-15 | 2015-03-25 | 盛科网络(苏州)有限公司 | 带有优先级的tcam储存和查找方法及装置 |
US20180083876A1 (en) * | 2016-09-20 | 2018-03-22 | Radisys Corporation | Optimization of multi-table lookups for software-defined networking systems |
US20190036821A1 (en) * | 2017-07-30 | 2019-01-31 | Mellanox Technologies Tlv Ltd. | Efficient caching of TCAM rules in RAM |
Non-Patent Citations (2)
Title |
---|
BING XIONG 等: "Efficient Differentiated Storage Architecture for Large-scale Flow Tables in OpenFlow Networks", 《THE 21ST IEEE INTERNATIONAL CONFERENCE ON HIGH PERFORMANCE COMPUTING AND COMMUNICATIONS (HPCC)》 * |
BING XIONG等: "Efficient Differentiated Storage Architecture for Large-Scale Flow Tables in Software-Defined Wide-Area Networks", 《SPECIAL SECTION ON SOFTWARE DEFINED NETWORKS FOR ENERGY INTERNET AND SMART GRID COMMUNICATIONS》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966284A (zh) * | 2020-07-16 | 2020-11-20 | 长沙理工大学 | 一种OpenFlow大规模流表弹性节能与高效查找架构及方法 |
CN111966284B (zh) * | 2020-07-16 | 2022-06-03 | 长沙理工大学 | 一种OpenFlow大规模流表弹性节能与高效查找系统及方法 |
CN115208810A (zh) * | 2021-04-12 | 2022-10-18 | 益思芯科技(上海)有限公司 | 一种转发流表加速方法及装置、电子设备和存储介质 |
WO2022252634A1 (zh) * | 2021-05-31 | 2022-12-08 | 平安科技(深圳)有限公司 | 数据流传输方法、装置、计算机设备及存储介质 |
WO2023024799A1 (zh) * | 2021-08-24 | 2023-03-02 | 苏州盛科通信股份有限公司 | 一种报文的转发方法、网络转发设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111131029B (zh) | 2022-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111131029B (zh) | 一种支持规则依赖的高能效OpenFlow流表查找方法 | |
CN108337172B (zh) | 大规模OpenFlow流表加速查找方法 | |
CN110808910B (zh) | 一种支持QoS的OpenFlow流表节能存储架构及其方法 | |
US11811660B2 (en) | Flow classification apparatus, methods, and systems | |
CN109921996B (zh) | 一种高性能的OpenFlow虚拟流表查找方法 | |
US7313138B2 (en) | Router device and routing method | |
CN111966284B (zh) | 一种OpenFlow大规模流表弹性节能与高效查找系统及方法 | |
US6434144B1 (en) | Multi-level table lookup | |
US8938469B1 (en) | Dynamically adjusting hash table capacity | |
CN101655861B (zh) | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 | |
US8654652B2 (en) | System for managing the size of a hardware routing table | |
US8762362B1 (en) | System and method for updating a data structure | |
WO1998027662A2 (en) | High speed variable length best match look-up in a switching device | |
CN110119487B (zh) | 一种适用于发散数据的缓存更新方法 | |
US20040078516A1 (en) | Caching associative memory using non-overlapping data | |
US10901897B2 (en) | Method and apparatus for search engine cache | |
CN114205253A (zh) | 一种基于小流过滤的活跃大流精确检测架构及方法 | |
US20190294549A1 (en) | Hash Table-Based Mask Length Computation for Longest Prefix Match Caching | |
US9152661B1 (en) | System and method for searching a data structure | |
JP2009017439A (ja) | パケット転送装置およびパケット転送方法。 | |
CN104301227A (zh) | 基于tcam的高速低功耗ip路由表查找方法 | |
CN114640641B (zh) | 一种流量感知的OpenFlow流表弹性节能查找方法 | |
CN113296686A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113595906B (zh) | 一种基于策略收敛的路由订阅方法与系统 | |
CN117319298A (zh) | 一种sdn交换机的tcam流表节能缓存方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |