专利类型 | 发明公开 | 法律事件 | 公开; 实质审查; |
专利有效性 | 实质审查 | 当前状态 | 实质审查 |
申请号 | CN202410262001.7 | 申请日 | 2024-03-07 |
公开(公告)号 | CN118018480A | 公开(公告)日 | 2024-05-10 |
申请人 | 长沙理工大学; | 申请人类型 | 学校 |
发明人 | 熊兵; 袁月; 艾料仟; 杨豪; 赵锦元; 汤强; 冯鹏; 张锦; | 第一发明人 | 熊兵 |
权利人 | 长沙理工大学 | 权利人类型 | 学校 |
当前权利人 | 长沙理工大学 | 当前权利人类型 | 学校 |
省份 | 当前专利权人所在省份:湖南省 | 城市 | 当前专利权人所在城市:湖南省长沙市 |
具体地址 | 当前专利权人所在详细地址:湖南省长沙市天心区万家丽南路二段960号 | 邮编 | 当前专利权人邮编:410114 |
主IPC国际分类 | H04L45/74 | 所有IPC国际分类 | H04L45/74 ; H04L45/745 ; H04L49/25 ; H04L49/111 |
专利引用数量 | 0 | 专利被引用数量 | 0 |
专利权利要求数量 | 6 | 专利文献类型 | A |
专利代理机构 | 专利代理人 | ||
摘要 | 本 专利 提出了一种基于活跃度的流规则放置方法。该方法综合考虑了流规则的活跃度和放置成本,以TCAM存储收益率(即流规则及其依赖规则集的总活跃度与数量之比)为评估标准。在TCAM容量有限的前提下,优先选择TCAM存储收益率高的流规则及其依赖规则集放入TCAM,以增大TCAM的命中率,提高流表查找速度。剩余流规则放入SRAM,以满足整个流表的存储需求。进一步,本专利设计了一种支持规则依赖的SDN大规模流表区分存储方法。该方法在进行区分存储时,对于存入TCAM的一条流规则,必需将依赖该流规则的规则依赖集一起存入,进而避免分组转发语义错误。同时,采用基于活跃度的流规则放置方法将活跃度高的流规则存入TCAM,在保证分组转发语义正确的同时,加快流表查找速度。 | ||
权利要求 | 1.一种支持规则依赖的SDN大规模流表区分存储方法,该方法首先根据其所有流规则之间的依赖关系,构建规则依赖图集RDGS(Ruledependency graph set)。对于每条流规则,根据其规则依赖集中每条流规则的权重(活跃度)计算其TCAM存储收益率,进而选择收益率高的流规则及其规则依赖集存入TCAM,从而在保证分组转发语义正确的前提下,尽可能提高TCAM命中率,加快流表查找速度。对于TCAM无法容纳的流规则,则被存放在高速地址寻址存储器(如SRAM)中。此外,将内容字段从流表项中剥离出来,采用DRAM单独存储,以使TCAM和SRAM存储更多的流规则。 |
||
说明书全文 | 一种支持规则依赖的SDN大规模流表区分存储方法技术领域[0001] 本发明涉及SDN流表技术领域,更具体地说,涉及一种支持规则依赖的SDN大规模流表区分存储方法。 背景技术[0002] 软件定义网络(Software Defined Networking,SDN)是一种数据控制分离、软件可编程的新型网络体系架构,它通过SDN技术来分离控制平面和数据平面。控制平面负责中央管理和转发策略分配,数据平面中的网络设备只能转发数据包。SDN采用南向接口为其数据平面之间的进行通信,以提高网络管理的灵活性、开发性和可扩展性,可简单且高效地实现新的网络管控策略的安装,极易部署。在SDN数据平面中,主要使用OpenFlow协议作为其南向接口协议,SDN是基于流的概念来匹配转发规则,将各层网络协议首部的重要字段作为流表项的匹配域,并支持通过通配符实现任意字段的组合,从而实现对网络流的细粒度灵活管理。由于TCAM存储器支持“0、1、中间态”三种数据查找,并且TCAM表内所有条目都可以并行访问,能在单个周期内输出所有结果,因此SDN交换机通常采用TCAM存储流表,以实现网络中数据包的快速转发。 [0003] 当SDN部署在数据中心、空天地一体化信息网络等大规模网络时,由于网络中并发流数量众多,流表项的数量急剧增长。同时随着在互联网上部署的服务数量不断增加,规则数量也在迅速增加。因此使得TCAM难以满足SDN大规模流表的存储要求。同时,由于SDN流表在匹配字段引入通配符,使得不同优先级的流规则之间产生依赖关系,且低优先级规则始终依赖于高优先级规则。在TCAM中存储流规则时,需将与其有依赖关系且优先级高的规则一起存入,以保证分组转发语义正确性。 [0004] 图1展示了一个规则依赖图示例,其构建原理如下: [0005] (1)每个规则都是一个节点,每条边都对应一对规则之间的直接依赖关系。(2)如果存在一个数据包可以同时命中Ri和Rj,且Rj的优先级高于Ri,那么数据包将按照Rj的动作集转发,此时称子规则Ri和父规则Rj之间存在直接的依赖关系。(3)规则依赖图中规则之间的边是由从父节点指向子节点,一个规则的依赖关系由该规则的所有祖先共同组成。 [0006] 上述方案通过构建规则依赖图显示流规则之间的依赖关系,从而快速找到有依赖关系的流规则。目前,网络中并发流数量众多,从而导致流表存储资源紧张。同时,在存储流规则时需考虑TCAM中存在的规则依赖问题。因此,最有前景的方法是设计区分存储架构及解决规则依赖的方法,在保证分组转发语义正确性的同时,满足SDN大规模流表的存储要求,具体如下: [0007] 如图2所示的【方案一】是一种Openflow大规模流表区分存储方案。该方案根据流量分布特性将Openflow网络流区分为活跃流/空闲流区分方法,进而采用TCAM和SRAM分别存储其标识字段,并采用DRAM单独存储其内容字段,有效缓解Openflow流表存储资源紧张问题。 [0008] 方案一的区分存储过程如下:(1)首先基于Openflow网络流的包成批特性,根据包传输状态将流动态区分为活跃流和空闲流。(2)将内容字段从流表项中剥离出来,采用DRAM单独存储。同时,采用TCAM和SRAM分别存储活跃流和空闲流的匹配字段。 [0009] 如图3所示的【方案二】是一种解决规则依赖的规则放置的方法。该方法提出了一种覆盖集缓存放置算法Cover‑Set,通过去“拼接”长的规则依赖集,从而在TACM中缓存少量权重大的规则,避免缓存大量权重低的流规则,以提高TCAM命中率,并依赖软件交换机去处理在TACM中未命中流规则的数据包。 [0010] 方案二的流规则放置过程如下:(1)首先为每个规则设置权重及成本,权重为预期命中该规则的数据包的数量,成本为必须一起安装的规则数量。(2)创建一个新规则覆盖那些低权重的规则,把被覆盖的规则送到软件交换机中处理,同时新规则的的动作域为“转发给软件交换机”。 [0011] 但上述已有的流表区分存储架构及流规则放置方法分别存在如下缺点: [0012] 【方案一】基于Openflow网络流的包成批特性,设置包间隔阈值PIT将流动态区分为活跃流和空闲流,采用TCAM和SRAM分别存储其匹配字段,并采用DRAM存储对应的内容字段。然而,该架构虽然可以缓解Openflow流表存储资源紧张问题,但没有考虑规则依赖的情况,从而可能导致分组转发语义错误的问题。 [0013] 【方案二】将所有流规则构建为规则依赖图,使用覆盖集算法,将具有最大贡献值的规则缓存进TCAM,再构建新规则覆盖该依赖链上权重小的规则,被覆盖规则放入软件交换机中。然而,该算法只考虑了单条依赖链上单个规则的贡献值,没有考虑规则所在依赖链的平均贡献值,容易导致某些贡献值较大的规则被放入软件交换机,导致数据包查找速度下降。 [0014] 基于以上,本发明提供一种基于活跃度的流规则动态放置方法和一种支持规则依赖的SDN大规模流表区分存储方法。 发明内容[0015] 本发明要解决的技术问题是设计一种基于活跃度的流规则动态放置方法,然后基于本文所提出的流规则动态放置方法提供一种支持规则依赖的SDN大规模流表区分存储方法,以在保证分组转发语义正确性的同时,增大TCAM命中率。 [0016] 为了解决上述技术问题,本发明采用的技术方案是:一种支持规则依赖的SDN大规模流表区分存储方法,主要包括一种基于活跃度的流规则动态放置方法和一种支持规则依赖的流表区分存储方法。 [0017] 所述支持规则依赖的流表区分存储方法如下: [0018] 在该存储方法中,SDN流表包含SDN交换机中待放置的所有流规则。其中,每条流规则f包括:匹配字段、内容字段和TCAM存储收益率。对于一条流规则,TCAM存储收益率定义为其规则依赖集中所有流规则的总权重与数量之比。规则依赖图集是由若干个流规则依赖图构成,每个规则依赖图是由多条相互依赖的流规则组成的有向无环图。根据规则依赖图集,可计算出SDN流表中每条流规则的TCAM存储收益率,进而进行区分存储。TCAM和SRAM用于存储所有流规则的匹配字段。其中,TCAM存储效益率高的流规则及其规则依赖集,而SRAM则存储TCAM无法容纳的其余流规则。此外,DRAM单独存储所有流规则的内容字段,并与TCAM和SRAM存放的流规则一一对应,以实现快速索引。 [0019] 所述基于活跃度的流规则动态放置方法思想如下: [0020] (1)首先为原始SDN流表中的所有流规则构建规则依赖图集。其中,每个节点代表一条流规则,其直接依赖的流规则称为父节点,其间接依赖的流规则称为祖先节点。通常而言,节点在规则依赖图中所处的位置越高,对应流规则的优先级越高; [0021] (2)对于所有流规则,根据其活跃度和规则依赖图中给出的依赖关系,计算对应的TCAM存储收益率,; [0022] (3)根据所有流规则的TCAM存储收益率排名,尽可能选择TCAM存储收益率高的流规则及其规则依赖集放入TCAM。 [0023] 本发明提供的一种支持规则依赖的SDN大规模流表区分存储方法,至少具有以下增益效果: [0024] 1、相关方案中的覆盖集缓存放置算法只考虑了单条依赖链上单条流规则的活跃度及放置成本,可能导致某些活跃度较大且TCAM存储成本小的流规则误放入SRAM,从而影响TCAM的命中率。对此,本专利提出一种基于活跃度的流规则放置方法。该方法综合考虑了流规则的活跃度和放置成本,以TCAM存储收益率(即流规则及其依赖规则集的总活跃度与数量之比)为评估标准。在TCAM容量有限的前提下,优先选择TCAM存储收益率高的流规则及其依赖规则集放入TCAM,以增大TCAM的命中率,提高流表查找速度。剩余流规则放入SRAM,以满足整个流表的存储需求。 [0025] 2、针对现有的区分存储方案没有考虑到规则依赖而无法完全保证分组转发语义正确性的问题,本专利设计了一种支持规则依赖的SDN大规模流表区分存储方法。该方法在进行区分存储时,对于存入TCAM的一条流规则,必需将依赖该流规则的规则依赖集一起存入,进而避免分组转发语义错误。同时,采用上述基于活跃度的流规则放置方法将活跃度高的流规则存入TCAM,在保证分组转发语义正确的同时,加快流表查找速度。附图说明 [0026] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可根据这些附图获得其他的附图。 [0027] 图1为规则依赖图示例图; [0028] 图2为现有技术Openflow大规模流表区分存储方案示意图; [0029] 图3为现有技术覆盖集算法实例图; [0030] 图4为本发明实施提供的一种支持规则依赖的SDN大规模流表区分存储方法示意图; [0031] 图5为本发明实施提供的基于活跃度的流规则动态放置方法(ADFRP)的示例图; [0032] 图6为本发明实施提供的一种SDN流表分组转发流程示意图; [0033] 图7为本发明实施提供的一种流规则放置流程示意图; [0034] 图8为本发明实施提供的一种SDN流表插入流程示意图; [0035] 图9为本发明实施提供的一种SDN流表删除流程示意图; 具体实施方式[0036] 下面结合实施例及附图对发明进一步说明,但不用来限制本发明的范围。 [0037] 如图4所示,本发明的一个实施例,提供了一种支持规则依赖的SDN大规模流表区分存储方法,具体如下: [0038] 对于给定的一个SDN流表,该方法首先根据其所有流规则之间的依赖关系,构建规则依赖图集RDGS(Ruledependency graph set)。对于每条流规则,根据其规则依赖集中每条流规则的权重(活跃度)计算其TCAM存储收益率,进而选择收益率高的流规则及其规则依赖集存入TCAM。对于TCAM无法容纳的流规则,则被存放在高速地址寻址存储器(如SRAM)中。此外,将内容字段从流表项中剥离出来,采用DRAM单独存储,以使TCAM和SRAM存储更多的流规则。该方法可有效解决规则依赖问题,在保证分组转发语义正确的前提下,尽可能提高TCAM命中率,加快流表查找速度。 [0039] 如图5所示,本发明的一个实施例,提供了一种基于活跃度的流规则动态放置方法(ADFRP),具体放置过程如下: [0040] 对于给定的一个SDN流表,首先为所有流规则构建规则依赖图集。然后,对于每一条流规则,在规则依赖图中定位其所处的位置。同时,往上追溯所有父节点和祖先节点,得到其依赖规则集,并统计该流规则及其依赖规则集的总活跃度和总数量,计算两者之比即为该流规则的TCAM存储收益率。最后,根据所有流规则的TCAM存储收益率排名,选择排名高的流规则及其依赖规则集放入TCAM,直至TCAM放满,其余流规则放入SRAM中。 [0041] 参照图6‑9,上述实施例具体包括以下操作: [0042] a、SDN流表分组转发流程 [0043] 图6描述了本专利的SDN流表分组转发流程。当SDN交换机接收到网络中的一个数据包后,首先解析其首部字段,并提取流关键字段。然后根据关键字段在TCAM流表中进行查找,查找成功则根据匹配表项的索引值i,获取对应的DRAM表项,执行动作集,同时更新对应的DRAM表项中的计数器与时间戳。否则,进一步查找SRAM流表,查找成功则根据匹配表项的索引值获取对应的DRAM表项,执行动作集,同时更新对应的DRAM表项中的计数器与时间戳。若在TCAM和SRAM中查找均失败,则意味着该数据包属于一条新流,SDN交换机将把该数据包的头部信息打包成packet‑in消息上交给控制器,以请求控制器下发新的流规则。 [0044] b、流规则放置流程 [0045] 图7描述了本专利的流规则放置流程。对于给定的一个SDN流表ft,TCAM容量r。首先获取ft中流规则的匹配字段及其数量n,从而构建规则依赖图集。接着,依次从流表ft中获取流规则fi。对于每条流规则fi,根据fi所在的规则依赖图的位置,获取fi及其依赖规则集,统计其数量Ci和总活跃度Ai,计算TCAM存储收益率Pi=Ai/Ci。然后,n条流规则按TCAM存储收益率Pi从大到小排序。最后,按排名从大到小,依次选取排名j且流规则fj与其规则依赖集Sj数量小于r的流规则集{fj}∪Sj,将其匹配字段存入TCAM流表中,内容字段存入DRAM流表中,直至TCAM流表存满。剩余流规则的匹配字段存入SRAM流表中,内容字段存入DRAM流表中。 [0046] c、SDN流表插入流程 [0047] 如图8所示为SDN流表插入流程。当SDN交换机接收到SDN控制器下发的带ADD命令的flow‑mod消息时,首先根据该消息内容提取待插入流规则f。然后,遍历规则依赖图集,依次获取第i个规则依赖图Si,并判断其与f是否存在依赖关系。若存在依赖关系,则将f插入Si中,并计算f的TCAM存储收益率,进而更新所有依赖f的流规则的TCAM存储收益率。最后,更新流规则的TCAM存储收益率排名,并根据流规则排名变化决定f及其规则依赖集存入TCAM或SRAM中。 [0048] d、SDN流表删除流程 [0049] 图9描述了本专利的SDN流表删除流程。当SDN交换机收到SDN控制器下发的带DELETE命令的flow‑mod消息时,首先提取流规则f,并在TCAM流表中查找待删除流规则。若查找成功,则删除其在TCAM流表和DRAM流表中对应的匹配字段和内容字段,同时更新所有依赖f的流规则的TCAM存储收益率及其排名,并根据流规则排名变化更新其放置位置。否则,进一步查找SRAM流表,若查找成功,则删除其在SRAM流表和DRAM流表中对应的匹配字段和内容字段,若查找失败,则向控制器发送error消息,报告流规则删除失败结果。 [0050] 与现有技术相比,本发明设计了一种基于活跃度的流规则放置方法,该方法综合考虑流规则及其规则依赖集的活跃度和放置成本,尽可能选择TCAM存储收益率高的流规则及其规则依赖集放入TCAM,从而在保证转发语义正确的同时,最大程度提高TCAM命中率,加快流表查找速度。进一步,本发明提供了一种一种支持规则依赖的SDN大规模流表区分存储方法。该方法在进行区分存储时,对于存入TCAM的一条流规则,必需将依赖该流规则的规则依赖集一起存入,进而避免分组转发语义错误。同时,采用上述基于活跃度的流规则放置方法将活跃度高的流规则存入TCAM,在保证分组转发语义正确的同时,加快流表查找速度。 |