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

一种流量感知的OpenFlow流表弹性节能查找方法

2022-06-18 00:56:26 来源:中国专利 TAG:

一种流量感知的openflow流表弹性节能查找方法
技术领域
1.本发明涉及openflow流表领域,具体涉及一种流量感知的openflow流表弹性节能查找方法。


背景技术:

2.软件定义网络(software defined networking,sdn)作为一种数据控制分离、软件可编程的新型网络体系架构,能有效解决传统网络流量控制难、设备繁杂、无法灵活调控等问题。sdn将传统网络设备中的控制功能统一集成到sdn控制器,并由控制器根据全局网络视图统一制定流规则,通过南向接口协议下发并安装到数据平面的交换机中,以指导分组转发。目前,sdn控制器与交换机之间通信的主流南向接口协议是openflow协议,它提取传统网络各层传输协议的匹配字段以组合成openflow流表项,进而构成openflow流表。openflow利用通配符掩码的方式,一条openflow流表项可处理多条网络流,并根据优先级决定最终匹配结果。为支持通配流表项的快速查找,openflow交换机常使用tcam存储流表。
3.然而,会出现以下问题:在软件定义网络中,由于openflow在流表匹配字段中引入通配符,openflow交换机通常使用三态内容可寻址寄存器(ternary content addressable memory,tcam)存储流表,以实现快速分组转发。但每次tcam查找需要并行访问整个数据集,查找能耗大。目前,可有效降低openflow流表查找能耗的主要方法是构建节能缓存,存储网络中最近到达的精确流,以期望大部分网络分组访问命中缓存,进而完成转发处理,而无需查找整个流表。然而,现有节能缓存往往由于其容量固定,难以适应网络流量的抖动性和波动性。具体而言,当网络流量激增时,缓存只能存储少部分流,缓存命中率将显著降低;当网络流量骤减时,缓存易出现大量空表项,缓存利用率将明显下降。对此,本专利从网络流量特性出发,设计了一种动态可伸缩的弹性节能缓存,在网络流量波动的情况下仍可保持较高的命中率和利用率。在此基础上,提出了一种流量感知的openflow流表弹性节能查找方法,以适应网络流量的动态变化性。
4.对比文件:cn111131084a公开了一种qos感知的openflow流表分级存储架构及应用,本发明架构将高优先级流存储在tcam中,保证了高优先级流的分组查找性能;采用cuckoo哈希结构缓存低优先级和无优先级活跃精确流,使这些精确流中的数据包直接命中缓存,进而快速找到对应的sram流表项,降低流表查找能耗,提升openflow交换机性能。该对比文件方案由于缓存容量无法根据网络流量自适应扩容,在数据中心等流量波动较大的网络场景中,缓存命中率显著下降,难以实现稳定高效的流表节能查找过程。


技术实现要素:

5.本发明要解决的技术问题是提供一种基于可伸缩弹性节能缓存,根据网络流量大小自适应调整缓存容量,以存储所有满足要求的流表项,保证高缓存命中率。当空缓存项较多时,则收缩缓存,提高缓存空间利用率,从而提升缓存整体查找性能。据此,提出一种流量感知的openflow流表弹性节能查找方法。
6.为了解决上述技术问题,本发明采用以下技术方案:
7.本发明提供一种openflow大规模流表弹性节能与高效查找架构,包括:
8.弹性节能缓存,用于降低tcam流表查找能耗,利用低能耗存储介质sram存储活跃精确流,使大部分网络流可通过缓存直接进行转发。当活跃精确流数量变化时,缓存容量将适应性地调整,以容纳网络中绝大部分活跃精确流,保证高缓存命中率。
9.tcam流表和dram流表,将流表项进行拆分后,匹配字段存入tcam,以保证流表查找性能。内容字段存入查找开销小、存储容量大的动态随机存取存储器(dynamic random access memory,dram),以缓解tcam存储压力。
10.所述弹性节能缓存由多个逻辑分段组成,依据活跃精确流的变化,其分段数适应性增加或减少。当活跃精确流数量明显增多时,缓存动态增加一个分段,以存储网络中新出现的活跃精确流,保证高缓存命中率。当活跃精确流数量显著减少时,缓存自动缩减一个分段,并将其中的流尽可能转存到剩余分段中,以提高缓存利用率,同时确保缓存命中率不会出现明显的下滑。随着活跃精确流数量的上下波动,缓存也将进行自适应地扩展与收缩,以同时取得较高的缓存命中率与缓存利用率,从而保证缓存整体性能。
11.所述弹性节能缓存分段由2m个缓存项组成,每个缓存项包含流签名、tcam索引值和时间戳。流签名由流关键字输入签名函数计算而得,通常为2或4个字节。tcam索引值指示当前活跃精确流对应的tcam流表项,以便进一步读取对应的动作集。时间戳记录该活跃精确流中最近一个数据分组的到达时间,以便进行缓存替换和超时扫描操作。
12.所述tcam流表存储流表项中的标识字段匹配域和掩码,dram存储流表项剩余的内容字段动作集树和时间戳,通过tcam索引值可直接定位对应的dram流表项。
13.本发明方法还提供一种基于上述架构的缓存索引方法,包括:
14.所述弹性节能缓存为快速匹配网络分组,从流签名中随机选取互不重复的比特位随机排列,得到多个独立的子哈希函数,进而快速得到分组在各个分段的候选位置。缓存新增一个分段时,将同时生成一个对应的子哈希函数。
15.所述子哈希函数可通过子哈希矩阵存储,在进行缓存流索引时,首先需获取各分段对应的子哈希函数,以按序读取流签名中的相应比特,进而快速得到流在各个分段中的索引值。在缓存分段动态新增与删除的过程中,需获取的子哈希函数的个数也会随之改变。为避免子哈希函数的频繁生成与销毁,可选择将部分子哈希函数存入子哈希矩阵中。设当前分段数为n,则对应的n个子哈希函数存入矩阵a,用于当前缓存流索引;备用的子哈希函数存入矩阵b。当缓存新增分段时,将矩阵b中的第一个子哈希函数移入矩阵a中,而当缓存删除分段时,则将矩阵a的最后一个子哈希函数移入矩阵b中。
16.所述缓存流索引方法为:子哈希矩阵第i(1≤i)行记录的比特及其顺序即为第i个子哈希函数,第j(1≤j≤m)列记录在进行子哈希运算时,按序从流签名中读取的比特位,按照第i行中的比特顺序读取流签名中的比特值b
i,j
,计算2
(j-1)bi,j
的值并进行累加,然后对分段长度l取模。
17.本发明方法还提供一种基于上述架构的流表查找方法,包括:
18.所述弹性节能缓存首先根据子哈希函数计算流在各个位置的候选位置,通过并行匹配快速完成缓存查找,读取匹配缓存项中的tcam索引值,定位到相应的dram流表项,从而绕过tcam流表查找过程,直接执行dram流表项中的动作集;
19.所述tcam流表在弹性节能缓存查找失败后,需进一步在tcam流表中进行匹配,匹配成功则可定位相应的dram流表项,转发分组。若tcam流表也查找失败,则将请求sdn控制器下发相应的流规则。
20.进一步的,所述高效查找方法包括如下操作:
21.1、openflow流表项分组转发;
22.通过对每个到达的数据分组查找openflow流表项,找到对应的流表项,进而执行相应的动作集,其中,openflow流表项由匹配域和动作集的形式表示;
23.2、openflow流表项插入或删除;
24.openflow流表项插入:当openflow交换机接收到sdn控制器下发的带add命令的flow-mod消息时,将其插入tcam流表与dram流表;
25.openflow流表项删除:当openflow交换机收到sdn控制器下发的带delete命令的flow-mod消息时,删除对应的tcam流表项与dram流表项,若该流规则已被缓存,则还需删除对应的缓存项;
26.3、openflow流表项超时扫描;
27.根据当前时间戳以及dram中存储的时间戳的差值判断流表项是否过期,若差值大于超时间隔,则该流表项已过期并删除此流表项;
28.4、弹性节能缓存查找;
29.根据流关键字计算流签名,然后读取子哈希矩阵,根据流签名及各个子哈希函数计算该流在各分段中的候选位置,并行匹配各分段中的对应缓存项以快速完成缓存查找;
30.5、弹性节能缓存扩展与收缩操作;
31.弹性节能缓存扩展:新生成一个子哈希函数(或将矩阵b中的第一个子哈希函数移入矩阵a),并新增一个对应的缓存分段;
32.弹性节能缓存收缩:删除最后一个分段,并该分段中存储的活跃精确流移动到前端的分段中;
33.6、弹性节能缓存插入或删除
34.弹性节能缓存插入:通过子哈希函数得到所有候选位置,将流签名插入到最前端分段的空缓存项中,缓存在进行插入操作时,若缓存装载率较高,则会触发缓存扩展操作;
35.弹性节能缓存删除:根据流签名与子哈希函数定位该流在缓存中的候选存储位置,定位并移除对应的缓存项,缓存在进行删除操作时,若缓存装载率较低,则会触发缓存收缩操作;
36.7、弹性节能缓存更新以及超时扫描;
37.弹性节能缓存更新:首先查找缓存,若缓存查找失败,则继续查找tcam;若该流直接命中缓存,更新匹配结点的时间戳即可;若该流未命中缓存而命中tcam,需将其插入缓存或更新其活跃状态;
38.弹性节能缓存超时扫描:根据当前系统时间戳和流表项中的时间戳的差值来判断一个结点是否超时,如果差值大于超时间隔,则该结点判定为超时结点,从缓存中清除;
39.进一步的,所述openflow流表分组转发具体为:首先解析其各层协议首部,提取关键字段(如:源/目的ip地址、源/目的端口和协议类型等)生成流关键字key,进而计算流签名以查找缓存。若缓存查找成功则根据tcam索引值直接定位对应的dram表项,执行其中的
动作集以完成分组节能转发。之后,更新弹性节能缓存中匹配缓存项中的时间戳以及dram流表项中的计数器与时间戳。若缓存查找失败,则需使用流关键字key进一步查找tcam流表。若查找成功,则根据tcam索引值获取dram流表中对应的动作集以进行分组转发。分组转发成功后,若该流转换为活跃状态,需将之存入弹性节能缓存,并更新对应的dram表项的相关信息。若查找tcam流表失败,则意味着该分组属于一条新流,openflow交换机将把该数据分组的头部信息打包成packet-in消息提交给sdn控制器,请求下发新的流规则。
40.进一步的,所述openflow流表插入具体为:首先从消息中提取流规则。若tcam容量足够,则将其中的匹配字段存入tcam流表,内容字段存入dram流表。若tcam存储容量已满,则先剔除tcam中最久未被访问的流表项,再将新规则安装到流表中。
41.进一步,所述openflow流表项删除具体还包括:提取流规则信息,根据流规则匹配域查找tcam流表。若tcam流表查找成功,则删除该tcam流表项。若该流是一条活跃流,则还需缓存并删除对应的缓存项。最后,根据tcam索引值定位并删除对应的dam流表项。若tcam流表无法匹配该流规则,则向控制器发送error消息,报告表项删除失败结果。
42.进一步的,所述openflow流表项超时扫描具体还包括:遍历tcam流表,对于tcam流表中的每条流项,需根据当前时间戳以及dram流表中存储的时间戳的差值判断流表项是否过期,如果差值大于超时间隔(分为hard time和idle time两种),说明该流表项已过期,应删除该流表项。openflow流表超时扫描流程为:遍历tcam流表并读取对应dram表项中的时间戳,若检测到超时流表项,则删除该tcam流表项。若该流表项对应的流处于活跃状态,则定位并删除对应缓存中的节点。最后,删除对应的dram流表项,完成超时流表项的清除;
43.进一步的,所述弹性节能缓存查找具体还包括:根据流关键字计算流签名。然后读取子哈希矩阵,根据流签名及子哈希函数计算该流在各分段中的候选位置,并行匹配对应的缓存项以快速完成缓存查找。若缓存查找成功,则根据匹配缓存项中存储的tcam索引值直接定位对应的dram流表项,执行其中的动作集以完成分组转发。分组转发成功后,还需更新缓存时间戳以及dram表项中的计数器、时间戳等信息。若缓存查找失败,则返回缓存查找失败结果;
44.进一步的,所述弹性节能缓存插入与扩展具体还包括:根据流关键字计算流签名,通过子哈希函数得到所有候选位置。若所有候选位置均不为空,则剔除其中最久未被访问的缓存表项,并将流签名、tcam索引值以及时间戳存入该位置。若候选位置中存在为空的表项,则将流签名插入到最前端分段的空缓存项中。插入成功后,根据当前的缓存装载率以及缓存命中率判断是否需进行缓存扩展。若触发扩展条件,则新生成一个子哈希函数(或将矩阵b中的第一个子哈希函数移入矩阵a),并新增一个对应的缓存分段,以提升缓存的分组转发能力;
45.进一步的,所述弹性节能缓存删除与收缩具体还包括:首先根据流签名与子哈希函数定位该流在缓存中的候选存储位置,定位并移除对应的缓存项。缓存项移除成功后,缓存装载率将降低。若此时触发缓存收缩条件,则移除最后一个缓存分段,并删除对应的子哈希函数(或将矩阵a中的最后一个子哈希函数移入矩阵b)。在此之前,需将该分段中存储的活跃精确流移动到前端的分段中,以防止缓存命中率大幅降低。若待前移的缓存表项是所有候选表项中最久未被访问的,则该表项不需要前移;否则,定位前端分段中最久被访问的候选缓存项所在的位置,将待前移的缓存项置入该位置。因此,尾段缓存项前移操作可视作
多次缓存插入操作;
46.进一步的,所述弹性节能缓存超时扫描具体还包括:通过当前系统时间戳和流表项中的时间戳的差值来判断一个结点是否超时,如果差值大于超时间隔,则该结点判定为超时结点,需从缓存中清除。扫描缓存的过程为:依次遍历每个分段,若检测到超时缓存项则立即移除。当遍历完各缓存分段后,若此时触发缓存收缩条件,则需将最后一个分段中存储的活跃精确流移存至前端分段,回收尾段缓存空间并删除对应的子哈希函数(或将该子哈希函数移动到矩阵b中);
47.本发明的有益效果在于:
48.1、弹性节能缓存通过动态扩展与收缩缓存容量始终容纳网络中的活跃精确流,始终保持高缓存命中率,并兼顾了缓存利用率,保证了缓存节能效果;同时,通过一次哈希运算获取各个分段的流索引值,进而通过并行匹配方式实现缓存的快速查找,保证了缓存查找性能。
49.2、本发明利用上述弹性节能缓存存储活跃精确流,使得绝大部分网络分组可直接命中缓存进行低能耗转发,有效降低了openflow流表查找能耗;同时,通过实时感知网络中活跃精确流的变化,缓存动态调整缓存容量,始终存储当前所有的活跃精确流,以保证高缓存命中率,进而取得了稳定的节能效果,实现了openflow流表弹性节能查找。
附图说明
50.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
51.图1是本发明方法openflow流表弹性节能查找架构的原理图。
52.图2是本发明方法中的弹性节能缓存结构图。
53.图3是本发明方法中的子哈希矩阵示意图。
54.图4是本发明方法中openflow流表分组转发流程图。
55.图5是本发明方法中openflow流表插入流程图。
56.图6是本发明方法中openflow流表删除流程图。
57.图7是本发明方法中openflow流表超时扫描流程图。
58.图8是本发明方法中弹性节能缓存查找流程图。
59.图9是本发明方法中弹性节能缓存表项插入流程图。
60.图10是本发明方法中弹性节能缓存表项删除流程图。
61.图11是本发明方法中弹性节能缓存超时扫描流程图。
具体实施方式
62.为了更好地阐述该发明的内容,下面通过具体实施例对本发明进一步的验证。特在此说明,实施例只是为更直接地描述本发明,它们只是本发明的一部分,不能对本发明构成任何限制。
63.如图1所示,本发明实施例提供一种流量感知的openflow流表弹性节能查找架构,
包括:
64.弹性节能缓存,用于缓存网络中的活跃精确流,实现高速低功率的流表缓存查找;缓存由多个逻辑分段组成,依据活跃精确流的变化,其容量适应性增加或减少。其中弹性节能缓存的存储介质优先采用sram;
65.tcam流表存储流表项的匹配字段,如匹配域和掩码,当弹性节能缓存查找失败后,将继续查找tcam流表;dram流表存储流表项的内容字段,如动作集、时间戳等,根据tcam索引值后可直接获取dram动作集。
66.如图2所示,弹性节能缓存,用于降低tcam流表查找频率,降低tcam流表查找能耗。
67.缓存从流签名中随机选取互不重复的多个比特位随机排列,得到各个分段对对应的子哈希函数,进而快速得到分组在各个分段的候选位置。当缓存新增一个分段时,将同时生成一个新的子哈希函数。
68.如图3所示,子哈希矩阵用于降低多个分段索引的哈希计算开销。
69.分段索引的计算方法为:在计算第i个分段的索引时,按照第i行中的比特顺序读取流签名中的比特值b
i,j
,计算2(j-1)b
i,j
的值并进行累加,然后对分段长度取模。
70.本实施例还提供一种基于上述架构的方法,包括以下步骤:
71.当openflow接收到一个分组时,首先查找弹性节能缓存,若缓存查找失败,则继续查找tcam;当判断一条流转变为活跃状态后,将其存入弹性节能缓存,加快后续分组匹配速度。
72.1、openflow流表项分组转发;
73.如图4所示,通过对每个到达的数据分组查找openflow流表,找到对应的流表项,进而执行相应的动作集;
74.首先解析其各层协议首部,提取关键字段(如:源/目的ip地址、源/目的端口和协议类型等)生成流关键字key,进而计算流签名以查找缓存。若缓存查找成功则根据tcam索引值直接定位对应的dram表项,执行其中的动作集以完成分组节能转发。之后,更新弹性节能缓存中匹配缓存项中的时间戳以及dram流表项中的计数器与时间戳。若缓存查找失败,则需使用流关键字key进一步查找tcam流表。若查找成功,则根据tcam索引值获取dram流表中对应的动作集以进行分组转发。
75.分组转发成功后,若该流转换为活跃状态,需将之存入弹性节能缓存,并更新对应的dram表项的相关信息。若查找tcam流表失败,则意味着该分组属于一条新流,openflow交换机将把该数据分组的头部信息打包成packet-in消息提交给控制器,请求下发新的流规则。
76.2、openflow流表项插入或删除;
77.如图5所示,openflow流表项插入:当openflow交换机接收到sdn控制器下发的带add命令的flow-mod消息时,首先从消息中提取流规则。若tcam容量足够,则将其中的匹配字段存入tcam流表,内容字段存入dram流表。若tcam存储容量已满,则先剔除tcam中最久未被访问的流表项,再将新规则安装到流表中。
78.如图6所示,openflow流表项删除:当openflow交换机收到sdn控制器下发的带delete命令的flow-mod消息时,首先提取流规则信息,根据流规则匹配域查找tcam流表。若tcam流表查找成功,则删除该tcam流表项。若该流是一条活跃流,则还需缓存并删除对应的
缓存项。最后,根据tcam索引值定位并删除对应的dam流表项。若tcam流表无法匹配该流规则,则向控制器发送error消息,报告表项删除失败结果。
79.3、openflow流表项超时扫描;
80.如图7所示,根据当前时间戳以及dram中存储的时间戳的差值判断流表项是否过期,若差值大于超时间隔,则该流表项已过期并删除此流表项;
81.openflow流表项超时扫描具体还包括:遍历tcam流表并读取对应dram表项中的时间戳,若检测到超时流表项,则删除该tcam流表项。若该流表项对应的流处于活跃状态,则定位并删除对应缓存中的节点。最后,删除对应的dram流表项,完成超时流表项的清除。
82.4、弹性节能缓存查找;
83.如图8所示,当openflow交换机接收到一个网络分组时,将首先查找缓存,若缓存查找成功,则可绕过高能耗的tcam查找过程进行快速转发.
84.弹性节能缓存查找流程具体还包括:根据流关键字计算流签名。然后读取子哈希矩阵,根据流签名及各个子哈希函数计算该流在各分段中的候选位置,并行匹配对应的缓存项以快速完成缓存查找。若缓存查找成功,则根据匹配缓存项中存储的tcam索引值直接定位对应的dram流表项,执行其中的动作集以完成分组转发。分组转发成功后,还需更新缓存时间戳以及dram表项中的计数器、时间戳等信息。若缓存查找失败,则返回缓存查找失败结果。
85.5、弹性节能缓存插入与删除;
86.如图9所示,弹性节能缓存插入:当一条精确流转换为活跃状态时,需将之存入弹性节能缓存,以使更多后续分组能够直接通过缓存进行转发。
87.缓存插入过程具体还包括:根据流关键字计算流签名,通过子哈希函数得到所有候选位置。若所有候选位置均不为空,则剔除其中最久未被访问的缓存表项,并将流签名、tcam索引值以及时间戳存入该位置。若候选位置中存在为空的表项,则将流签名插入到最前端分段的空缓存项中。插入成功后,根据当前的缓存装载率以及缓存命中率判断是否需进行缓存扩展。若触发扩展条件,则新生成一个子哈希函数(或将矩阵b中的第一个子哈希函数移入矩阵a),并新增一个对应的缓存分段,以提升缓存的分组转发能力。
88.如图10所示,弹性节能缓存删除:当需删除某个缓存项时,同样首先根据流签名与子哈希函数定位该流在缓存中的候选存储位置,定位并移除对应的缓存项。缓存项移除成功后,缓存装载率将降低。若此时触发缓存收缩条件,则移除最后一个缓存分段,并删除对应的子哈希函数(或将矩阵a中的最后一个子哈希函数移入矩阵b)。在此之前,需将该分段中存储的活跃精确流移动到前端的分段中,以防止缓存命中率大幅降低。若待前移的缓存表项是所有候选表项中最久未被访问的,则该表项不需要前移;否则,定位前端分段中最久被访问的候选缓存项所在的位置,将待前移的缓存项置入该位置。因此,尾段缓存项前移操作可视作多次缓存插入操作。
89.6、弹性节能缓存超时扫描;
90.如图11所示,由于网络中的流不会一直处于活跃状态,当一条流存入弹性节能缓存后,可能接下来很久都不会到达。因此,需要通过超时扫描机制清除缓存中的超时结点,防止空闲流占用缓存空间而造成缓存性能的下降。
91.弹性节能缓存超时扫描操作具体还包括:通过当前系统时间戳和流表项中的时间
戳的差值来判断一个结点是否超时,如果差值大于超时间隔,则该结点判定为超时结点,需从缓存中清除。扫描缓存的过程为:依次遍历每个分段,若检测到超时缓存项则立即移除。当遍历完各缓存分段后,若此时触发缓存收缩条件,则需将最后一个分段中存储的活跃精确流移存至前端分段,回收尾段缓存空间并删除对应的子哈希函数(或将该子哈希函数移动到矩阵b中)。
92.本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所述技术领域的技术人员可以所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
再多了解一些

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

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

相关文献