大规模OpenFlow流表分级存储架构与加速查找方法技术

技术编号:18556843 阅读:27 留言:0更新日期:2018-07-28 13:42
本发明专利技术提供一种大规模OpenFlow流表分级存储架构与加速查找方法,其中:分级存储架构为分层加速流表架构,包括TCAM活跃流表层,SRAM静默流表层及DRAM流表存储层。本发明专利技术还提供一种基于上述分级存储架构的加速查找方法。本发明专利技术提出的分层加速流表架构,首先根据网络中数据包成批到达特性,建立TCAM和SRAM相结合的流表分级存储体系,进而实现大部分数据包的快速流表查找;然后基于网络数据包流对应到流表项和流表项对应到掩码的不均匀性,应用MA1启发法自适应调整掩码顺序,以加快后续数据包的掩码成功探测速度;再利用数据包探测掩码往往会失败的特点,借助BF过滤器预测出掩码失败探测结果,从而能避免对应的流表查找遍历过程,提高查找效率。

【技术实现步骤摘要】
大规模OpenFlow流表分级存储架构与加速查找方法
本专利技术涉及一种流表存储架构与查找方法,尤其涉及一种大规模OpenFlow流表分级存储架构及基于该分级存储架构的加速查找方法。
技术介绍
软件定义网络(SoftwareDefinedNetwork,以下简称“SDN”)作为一种新型的网络架构,其提升网络灵活性是通过解耦数据、控制平面实现的,SDN控制器通过南向协议接口统一制定并下发流规则,交由数据平面的SDN交换机以流表的形式进行存储,从而指导网络分组的处理。OpenFlow协议是目前应用最广泛的南向接口协议之一,它将网络协议栈扁平化,将各层网络协议首部的重要字段作为流表项的匹配域,并支持通配符实现任意字段的组合,从而实现网络流的细粒度灵活管理。OpenFlow流表是帮助灵活管理细粒度网络流的关键技术,其作为OpenFlow交换设备的核心组件之一,对其存储和查找对数据交换性能有着关键性的影响。为了实现网络分组的快速转发,OpenFlow硬件交换机常采用三态内容可寻址存储器(TernaryContentAddressableMemory,以下简称“TCAM”)存储流表。因为TCAM支持带通配符的三态数据查询,具有并行查找整个数据集合的能力,能在一个时间周期输出查找结果。然而TCAM单比特成本高、能耗大、集成度低,容量有限,在一定成本和能耗限制前提下,无法满足现阶段OpenFlow流表存储。现有OpenFlow流表在存储和查找时也容易出现如下问题:1、OpenFlow流表存储方面当OpenFlow网络部署到形如广域网、数据中心等大规模网络中时,OpenFlow流表面临存储问题。OpenFlow流表存储问题可以概括为:如何选取存储介质、如何保证架构的可伸缩性。(1)如何选取存储介质:即如何选择性价比高的存储器件存储OpenFlow流表。常用于存储OpenFlow流表的存储器件有三态内容可寻址存储器(TernaryContentAddressableMemory,以下简称“TCAM”)、静态随机存取存储器(StaticRandomAccessMemory,以下简称“SRAM”)以及动态随机存取存储器(DynamicRandomAccessMemory,以下简称“DRAM”)。TCAM能支持线性速率的多状态查找,但其存储容量有限、能耗大、成本高昂,集成力度低,从而限制了其的使用规模。而SRAM查找较TCAM慢,且本身只支持精确查找,但其成本较低,适合于存储规模较大的流表。DRAM查找速率更慢,但存储容量更充足。(2)如何保证架构的可伸缩性:即该存储架构应该支持灵活的流表操作。常见的流表操作有新增流表项、删除流表项、以及替换流表项。新增流表项操作要求从OpenFlow控制器下发流规则到OpenFlow交换机存储该流表项的开销要小,速度要快,必要的时候还要进行分类处理,从而分类存储在不同的存储介质中。删除流表项操作要求当某条流表项的生存期失效后,该存储架构需要及时进行删除处理,保证流表存储的有效性和容量剩余。流表项替换操作是当某存储介质容量存储不足时或需要改善存储的高效性时,需要出替换部分不合适流表项,换入新流表项或高效流表项,保证存储有效的流表项。2、OpenFlow流表查找方面OpenFlow为了高效管理网络流,从而引入了通配查找。通配查找与精确查找不同,精确查找可以直接散列函数进行多次散列查找,而对于支持通配查找的流表而言,由于其流表内携带着大量通配符信息,无法直接采用散列查找的方式进行匹配,需要借助形如TCAM这种具有多态查找能力的存储器进行匹配,或者为形如SRAM这种不具备该能力的存储器设计额外的查找结构进行匹配。目前,OpenFlow流表的主流存储方案是将TCAM和SRAM相结合存储流表,TCAM存储带通配符的流表项,支持流表任意字段的模糊匹配查找,SRAM存储精确流表项,使用散列函数来实现全字段的精确匹配查找。如附图1所示的【方案一】提供的是一种主流存储查找方案,其查找流程如下:当某个数据分组pi到达OpenFlow交换机时,首先解析提取其分组首部中的重要字段,并计算其对应的流标识符fid,然后同时在TCAM和SRAM中并行查找,若TCAM和SRAM中流表项同时匹配成功,则需要交与仲裁器进行查找结果仲裁,从而根据仲裁结果执行对应流表项中的动作集;否则,交换机将分组信息封装成流安装请求消息发送给SDN控制器。SDN控制器学习生成新的流规则后,下发给OpenFlow交换机,并添加到流表中。与此同时,控制器也可主动下发流规则,更新交换机中的流表项。【方案一】的查找方案指出使用TCAM存储通配流,使用SRAM存储精确流表,能在一定程度上缓解流表的存储压力,同时也在一定程度上保证流表查找效率。但是面临大规模网络频繁的数据传输,控制器将会下发更多的通配流表代替多条精确流表,使得通配流表数目激增,TCAM存储支持通配的流表将再次面临存储问题。附图2所示的【方案二】给出的是另一种结合TCAM和SRAM存储流表的存储查找方案,在该方案中将SRAM划分为多个散列桶,并在每个散列桶中设计了多个查找单元,每个查找单元存储着唯一标识某条流的流标识指纹。同时,由于指纹信息存在冲突问题,其将发生指纹冲突的流规则存储到另一个SRAM或TCAM中,从而避免指纹匹配冲突。其查找流程相类似,如下:当某个数据分组pi到达OpenFlow交换机时,首先解析提取其分组首部中的重要字段,并计算其对应的流标识符fid,然后使用散列函数对fid进行散列处理,获得该数据包在主表中的位置,并使用另一个散列函数处理fid获得的流标识指纹进行流标匹配。从而获得并执行对应的流表项动作集。主表查找失败则查找辅表,辅表查找失败则查找TCAM,TCAM查找失败则需请求交换机下发流规则。【方案二】的查找方案指出使用多个SRAM作为主要的流表存储场所,TCAM只是作为SRAM流表存储发生指纹冲突后的存储场所,能在一定程度上缓存流表存储压力,节省流表存储成本。但其只是对精确流表存储查找做出了优化,无法解决支持通配符的流表场景,且其将TCAM作为第二、第三级流表查找结构,无法充分利用TCAM的查找优势,查找速率还可进一步得到提高。目前国内外也有不少关于优化Openflow流表存储、查找的报道:对比文件1:CN105591914A公开一种Openflow流表的查表方法,控制平面上,将各级Openflow流表按照关键字域划分为精确匹配流表和至少一个分类匹配流表,按照流表配置信息的关键字域,将流表配置信息作为表项下发到精确匹配流表或分类匹配流表中,转发平面上,采用报文的所有关键字对精确匹配流表进行查表,在查找到匹配的表项时,按照所述表项的功能进行报文处理;在没有查找到匹配的表项时,提取报文的不同关键字域的关键字对所述至少一个分类匹配流表进行并行查表,根据查表的结果,动态建立精确匹配流表的表项,并按照所述表项的功能进行报文处理。对比文件2:CN103368851B公开一种基于资源复用的Openflow流表存储优化方法,涉及软件定义网络中Openflow流表,包括步骤:S1.在Openflow流表的表项中添加掩码标识字段和范围标识字段,从掩码标识索引至一个掩码表,从本文档来自技高网...

【技术保护点】
1.大规模OpenFlow流表分级存储架构,其特征在于,所述存储架构为分层加速流表架构,所述分层加速流表架构包括三层:活跃流表层、静默流表层及流表存储层;所述活跃流表层采用TCAM作为存储介质,用于存储活跃流表项的流标识字段,所述流标识字段主要为匹配域信息;所述静默流表层采用SRAM作为存储介质,用于存储静默流表项的流标识字段和对应表项索引指针;由于SRAM不支持通配查找,需要将其存储的静默流表项按照掩码进行分类存储;SRAM中还存储有BF过滤器,该过滤器能降低SRAM流表的查找开销;所述流表存储层采用DRAM作为存储介质,用于分别存储活跃流表和静默流表的内容字段;活跃流表的内容字段存储空间大小固定,条目数量与TCAM相等,以支持TCAM标识字段与DRAM内容字段之间的直接映射;静默流表项内容字段采用链式结构存储,以支持流表项的动态调整。

【技术特征摘要】
1.大规模OpenFlow流表分级存储架构,其特征在于,所述存储架构为分层加速流表架构,所述分层加速流表架构包括三层:活跃流表层、静默流表层及流表存储层;所述活跃流表层采用TCAM作为存储介质,用于存储活跃流表项的流标识字段,所述流标识字段主要为匹配域信息;所述静默流表层采用SRAM作为存储介质,用于存储静默流表项的流标识字段和对应表项索引指针;由于SRAM不支持通配查找,需要将其存储的静默流表项按照掩码进行分类存储;SRAM中还存储有BF过滤器,该过滤器能降低SRAM流表的查找开销;所述流表存储层采用DRAM作为存储介质,用于分别存储活跃流表和静默流表的内容字段;活跃流表的内容字段存储空间大小固定,条目数量与TCAM相等,以支持TCAM标识字段与DRAM内容字段之间的直接映射;静默流表项内容字段采用链式结构存储,以支持流表项的动态调整。2.根据权利要求1所述的大规模OpenFlow流表分级存储架构,其特征在于,所述BF过滤器包括:CBF过滤器、DCF过滤器、SBF过滤器。3.大规模OpenFlow流表加速查找方法,其特征在于,所述方法具体包括如下步骤:S1、建立分层加速流表架构并对流表进行存储,所述分层加速流表架构包括三层:活跃流表层、静默流表层及流表存储层;所述活跃流表层采用TCAM作为存储介质,用于存储活跃流表项的流标识字段,所述流标识字段主要为匹配域信息;所述静默流表层采用SRAM作为存储介质,用于存储静默流表项的流标识字段和对应表项索引指针;由于SRAM不支持通配查找,需要将其存储的静默流表项按照掩码进行分类存储;SRAM中还存储有CBF过滤器,该过滤器能降低SRAM流表的查找开销;所述流表存储层采用DRAM作为存储介质,用于分别存储活跃流表和静默流表的内容字段;活跃流表的内容字段存储空间大小固定,条目数量与TCAM相等,以支持TCAM标识字段与DRAM内容字段之间的直接映射;静默流表项内容字段采用链式结构存储,以支持流表项的动态调整;S2、当OpenFlow交换机收到某个网络数据包p时,首先对其进行头域解析,即解析提取其首部重要字段,进而计算其流标识符fid,然后使用流标识符fid查找TCAM流表;若查找成功,则根据TCAM地址索引到DRAM流表中的对应表项内容,并做更新表项处理,执行对应动作;若查找失败,则进入SRAM预测查找阶段;S3、SRAM预测查找在SRAM预测查找阶段中,需从SRAM中逐个读取掩码maski:若读取成功,则需使用流标识符fid与掩码maski进行“与操作”计算流关键字keyi,然后使用流关键字keyi查询BF过滤器进行预测查找;若BF过滤器成功判断该子流表中不存在对应流表项,则直接读取下一个掩码,重复预测查找过程,直到掩码全部读取完毕,该时,掩码读取将会失败,意味着流表失配,交换机会发送流安装请求给SDN控制器;相反,若BF过滤器预测失败,则进入SRAM流表查找阶段,进一步查找流表项;S4、SRAM流表查找当BF过滤器预测失败,即流关键字keyi可能存在于SRAM子流表中时,会继续查找该子流表;若子流表查找仍是失败,则继续探测下一个掩码;反之,则使用查找到的DRAM指针读取表项内容,并做更新表项处理,执行对应动作;此时,判断该流表项是否进入活跃状态:对每条流表项,当有新的数据包命中时,通过新数据包与上一个数据包的到达时间间隔判定新到达数据包是否属于当前批次,并更新当前批次数据;若新到达数据包属于当前批次,则进一步判断当前批次数据包到达数目及平均到达速率是否满足活跃流表项判定阈值,若满足,则认为该流表项进入了活跃状态,采用替...

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

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

1