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

文档序号:15049671发布日期:2018-07-27 23:57阅读:322来源:国知局
本发明涉及一种流表存储架构与查找方法,尤其涉及一种大规模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流表的表项中添加掩码标识字段和范围标识字段,从掩码标识索引至一个掩码表,从范围标识索引至一个范围表,流表的表项中仅存储能检索到计数器、操作/指令的索引;s2.转发设备收到增加表项的命令后,遍历当前流表中已存在表项,分析待增表项与每个已存表项的相关性,将该已存表项与关联度最大的待增表项合并后写入流表,删除已存表项;若关联度为0,该待增表项作为新的表项在流表中创建。技术实现要素:本发明要解决的技术问题是提供一种大规模openflow流表分级存储架构与加速查找的方法。为了解决上述技术问题,本发明采用以下技术方案:本发明通过分析openflow交换机的常用流表存储介质的存储特性2、和openflow网络中的流量分布特性2、得出。首先,本发明提供一种大规模openflow流表分级存储架构,所述分级存储架构为分层加速流表架构(hierarchicalacceleratedflowtables,以下简称“haft”),所述分层加速流表架构包括三层:活跃流表层、静默流表层及流表存储层;所述活跃流表层采用tcam作为存储介质,用于存储活跃流表项2、的流标识字段,所述流标识字段主要为匹配域信息;所述静默流表层采用sram作为存储介质,用于存储静默流表项2、的流标识字段和对应表项索引指针;由于sram不支持通配查找,需要将其存储的静默流表项按照掩码进行分类存储;sram中还存储有bf过滤器(bloomfilter,布鲁姆过滤器),该过滤器能降低sram流表的查找开销;所述流表存储层采用dram作为存储介质,用于分别存储活跃流表和静默流表的内容字段;活跃流表的内容字段存储空间大小固定,条目数量与tcam相等,以支持tcam标识字段与dram内容字段之间的直接映射;静默流表项内容字段采用链式结构存储,以支持流表项的动态调整。进一步地,dram中流表的内容字段包括:计数器,动作表以及cookies值等。进一步地,所述bf过滤器包括:cbf过滤器2、(countingbloomfilter,技术型布鲁姆过滤器)、dcf过滤器(dynamiccountfilter,动态计数型过滤器)、sbf过滤器(spectralbloomfilter,光谱型布鲁姆过滤器)。进一步地,所述bf过滤器替换为不同族的熵过滤器。为便于本文的理解和叙述,现对以下名词作出说明:1、存储介质的存储特性:openflow交换机的常用流表存储介质有:tcam、sram以及dram等。这几种介质的存储查找特性如下:(1)tcam支持通配查找方式,且具有并行查找整个数据集合的能力,能在一个时钟周期内输出查找结果,因而常用于openflow流表的存储与查找。但tcam查找能耗大,价格昂贵,集成度低,导致其存储容量受限。(2)sram访问速度快,采用地址寻址方式,支持快速的精确内容查找。(3)dram同样采用地址寻址方式,因需要不停刷新电路维持数据内容,导致其查找速度相对较慢。然而,dram造价低廉,容量充足,可用于存储流表的内容信息。2、网络中的流量分布特性:sdn作为一种新型网络架构,并没有改变网络用户行为和网络应用特性,从而也不会影响网络流量分布特点。就网络流而言,网络流量局部性有多种表现形式,包括:(a)从流量分布规律来看,大部分流量往往分布在少数流中。因此,网络流可分为长流和短流,长流少但所占的数据量却大,短流多但所占的数据量却小;(b)从时间维度上看,同一流中的许多数据包分布并不均匀,而是呈现出分批集中到达的特点;(c)从短时间范围来看,活跃流通常较少,而静默流往往居多,且长流会在活跃状态和静默状态之间反复切换。3、活跃流表项:短期内数据包到达密集,对应的流表项进入活跃状态,即称为活跃流表项。4、静默流表项:短期内数据包到达稀疏,对应的流表项进入静默状态,即称为静默流表项。5、cbf过滤器:cbf过滤器(countingbloomfilter),是bf过滤器(bloomfilter)的一种变形,常用解决成员从属问题。在本发明中,使用cbf过滤器判断到达的数据包是否能命中sram中的静默流表项,从而起预查找的作用。其次,本发明还提供一种基于上述大规模openflow流表分级存储架构的大规模openflow流表加速查找方法,所述方法具体包括如下步骤:s1、建立上述分层加速流表架构(haft)并对流表进行存储,所述分层加速流表架构包括三层:活跃流表层、静默流表层及流表存储层;所述活跃流表层采用tcam作为存储介质,用于存储活跃流表项的流标识字段,所述流标识字段主要为匹配域信息;所述静默流表层采用sram作为存储介质,用于存储静默流表项的流标识字段和对应表项索引指针;由于sram不支持通配查找,需要将其存储的静默流表项按照掩码进行分类存储;sram中还存储有cbf过滤器,该过滤器能降低sram流表的查找开销;所述流表存储层采用dram作为存储介质,用于分别存储活跃流表和静默流表的内容字段;活跃流表的内容字段存储空间大小固定,条目数量与tcam相等,以支持tcam标识字段与dram内容字段之间的直接映射;静默流表项内容字段采用链式结构存储,以支持流表项的动态调整。进一步地,dram中流表的内容字段包括:计数器,动作表以及cookies值等。流表的储存架构是流表存储的前提要求,只有流表存储架构确定了,流表查找过程才能确定。s2、当openflow交换机收到某个网络数据包p时,首先对其进行头域解析,即解析提取其首部重要字段,进而计算其流标识符fid,然后使用流标识符fid查找tcam流表;若查找成功,则根据tcam地址索引到dram流表中的对应表项内容,并做更新表项处理,执行对应动作;若查找失败,则进入sram预测查找阶段。上述步骤s2中:所述网络数据包的首部重要字段包括:源/目的mac地址、源/目的ip地址、源/目的端口、ip协议类型等;dram中对应的流表项的表项记录信息包括:包数量、最近包到达时间。s3、sram预测查找在sram预测查找阶段中,需从sram中逐个读取掩码maski:若读取成功,则使用流标识符fid与掩码maski进行“与操作”计算流关键字keyi,然后使用该流关键字keyi查询bf过滤器进行预测查找;若bf过滤器成功判断该子流表中不存在对应流表项,则直接读取下一个掩码,重复预测查找过程,直到掩码全部读取完毕,该时,掩码读取将会失败,意味着流表失配,交换机会发送流安装请求给sdn控制器;相反,若bf过滤器预测失败,则进入sram流表查找阶段,进一步查找流表项。s4、sram流表查找当bf过滤器预测失败,即流关键字keyi可能存在于sram子流表中时,会继续查找该子流表;若子流表查找仍是失败,则需继续探测下一个掩码;反之,则使用查找到的dram指针读取表项内容,并做更新表项处理,执行对应动作。此时,判断该流表项是否进入活跃状态,对活跃流表项的判定可依据当前批次数据包到达情况实现,其判定方式具体为:对每条流表项,当有新的数据包命中时,通过新数据包与上一个数据包的到达时间间隔判定新到达数据包是否属于当前批次,并更新当前批次数据。若新到达数据包属于当前批次,则进一步判断当前批次数据包到达数目及平均到达速率是否满足活跃流表项判定阈值,若满足,则认为该流表项进入了活跃状态,采用替换算法将其换入tcam流表中;否则,采用ma1启发法将该掩码maski往前移动1个位置,即与前一个掩码maski-1互换位置;如果所有掩码均已探测完毕,但仍没找到对应的流表项,则认为该数据包p属于一条新流,于是将该数据包信息封装成流安装请求消息,并发送给sdn控制器。进一步地,所述方法还包括步骤s5、流表项插入,具体如下:当openflow交换机收到sdn控制器下发的消息m时,若m为带add命令的flow_mod消息,则使用消息m携带的信息创建新流表项f。若tcam尚未存满时,直接使用其空闲条目存储新流表项f的匹配域与掩码,同时根据新流表项f的tcam地址将其他的内容字段存入dram的对应地址中。若tcam已经存满时,将新流表项f存储至sram中。首先将f的内容字段作为节点加入dram的表项内容链表中,接着将新流表项f的匹配域和dram指针加入其掩码对应的子流表中,最后根据新流表项f的流关键字更新其掩码对应的bf过滤器。进一步地,所述方法还包括步骤s6、流表项手动删除,具体如下:当openflow交换机收到sdn控制器下发的消息m时,若m为带delete命令的flow_mod消息,则需要根据m的流标识符fid查找tcam流表。若tcam查找成功,则需重置对应tcam表项和对应dram内容;反之,则需根据m的流标识符fid和掩码mask计算关键字key,并根据流关键字key查找sram中掩码mask对应的子流表。若sram查找成功,则需删除找到的sram流表项及其指针对应的dram消息内容节点,且需根据流关键字key更新掩码mask对应的bf过滤器信息。进一步地,所述方法还包括步骤s7、流表超时扫描,具体如下:对于每条流表项f,若该流最近没有数据包到达的空闲时间间隔idle_time或其安装时间间隔hard_time到期:若流表项f存储在tcam中,直接重置对应的tcam流表项和dram表项内容;若流表项f存储在sram中,首先根据该流表项f的流关键字key更新对应的bf过滤器信息,接着删除该流表项f对应的sram流表项和dram表项内容。进一步地,所述bf过滤器包括:cbf过滤器、dcf过滤器、sbf过滤器。进一步地,所述bf过滤器替换为不同族的熵过滤器。进一步地,步骤s4中的ma1启发法替换为同族mtf算法。进一步地,步骤s4中的替换算法为改进的lru(leastrecentlyused,最近最久未使用)算法。进一步地,所述改进的lru算法具体包括如下步骤:(a)对每条流表项,记录数据包到达的平均批间间隔△tavg,初始值为△tavg=0;(b)当新到达数据包不属于当前批次时,更新平均批间间隔△tavg为△tavg=α△t+(1-α)△tavg,其中α是一个权重系数;(c)计算流表项的当前空闲时间tidle=t当前-tlob;(d)根据空闲时间tidle和平均批间间隔△tavg计算流表项失效率p=tidle-△tavg,p的值越大表明流表项当前等待时间越长或平均批间间隔时间较短,流表项失效的可能性也越大,因此,当有新的流表项换入到tcam流表时,优先替换出p值最大的流表项。本发明的有益效果:1、分层加速流表架构本发明采用分层加速流表架构,该架构首先根据网络中数据包成批到达特性,建立tcam和sram相结合的流表分级存储体系,进而可实现大部分数据包的快速流表查找;然后基于网络数据包流对应到流表项和流表项对应到掩码的不均匀性,应用ma1(move-ahead-one)启发法自适应调整掩码顺序,以加快后续数据包的掩码成功探测速度;再利用数据包探测掩码往往会失败的特点,借助计数型bf过滤器,以极大的概率预测出掩码失败探测结果,从而能避免对应的流表查找遍历过程,提高查找效率。本发明提出的分层加速流表架构,首先基于流表存储介质特性,建立流表分级存储体系。接着,基于网络流量局部性和数据包到达模型,提出活跃流和静默流的分类与识别。从而,构建大规模openflow流表分级存储体系,区分存储活跃流与静默流、流表项的标识字段与内容字段,为实现大规模流表高效查找提供有效保障。2、流表存储方面:现有的流表存储方案中:通配流表使用tcam存储器进行存储,精确流表项使用sram进行存储。本发明方案中:不以流表自身性质,将流表项区分成通配符流表项和精确流表项,而是根据流表项被访问的频繁程度,动态地将流表项划分为活跃流表项和静默流表项。活跃流表项一律采用tcam进行优先存储,静默流表项则使用sram存储,并在sram中划分出多个存储元组—子流表,存储对应不同掩码的静默流表。同时,由于这种划分是动态的,当sram中的静默流表处于活跃状态则替换至tcam中,而当tcam中活跃流表项失去活跃特性,则使用替换算法换入sram,替换算法为改进的lru(leastrecentlyused,最近最久未使用)算法。3、流表查找方面现有的流表查找方案中:通配流表采用tcam进行查找,精确流表采用两个散列函数进行散列查找。本发明方案中:不区分通配符流表和精确流表,所以sram中的静默流表额外设计查找结构来辅助sram进行流表查找。本方案将静默流表按照最长前缀匹配长度组合进行流表分类,将划分为多个子流表,不同子流表具有不同的掩码。数据包的匹配字段只有匹配到对应掩码和正确的流表项才能匹配成功。同时本方案采用并行计数型布鲁姆过滤器进行预测查找,即预查找,可以减少该过程的查找开销。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明现有技术openflow流表主流存储查找方案流程示意图;图2为本发明现有技术多单元散列表的openflow交换机的流表查找方案流程示意图;图3为本发明实施例分层加速流表架构图;图4为本发明实施例分层加速流表架构下流表查找流程示意图;图5为本发明实施例分层加速流表架构下流表插入流程示意图;图6为本发明实施例分层加速流表架构下流表手动删除流程示意图;图7为本发明实施例分层加速流表架构下流表超时删除流程示意图。具体实施方式下面结合实施例及附图对发明进一步说明,但不用来限制本发明的范围。实施例1如图3所示,本实施例提供一种大规模openflow流表分级存储架构,所述分级存储架构为分层加速流表架构(haft),所述分层加速流表架构包括三层:活跃流表层、静默流表层及流表存储层;所述活跃流表层采用tcam作为存储介质,用于存储活跃流表项的流标识字段,所述流标识字段主要为匹配域信息;所述静默流表层采用sram作为存储介质,用于存储静默流表项的流标识字段和对应表项索引指针;由于sram不支持通配查找,需要将其存储的静默流表项按照掩码进行分类存储;sram中还存储有bf过滤器,该过滤器能降低sram流表的查找开销;所述流表存储层采用dram作为存储介质,用于分别存储活跃流表和静默流表的内容字段。活跃流表的内容字段存储空间大小固定,条目数量与tcam相等,以支持tcam标识字段与dram内容字段之间的直接映射;静默流表项内容字段采用链式结构存储,以支持流表项的动态调整。所述内容字段包括:计数器,动作表以及cookies值等。本实施例中的bf过滤器选用cbf过滤器,作为其他优选实施例,本实施例中的cbf过滤器还可以采用dcf过滤器、sbf过滤器,或者采用不同族的熵过滤器。实施例2如图4-7所示,本实施例提供实施例1所述的大规模openflow流表分级存储架构的加速查找方法,所述方法具体包括如下步骤:s1、建立如实施例1所述的分层加速流表架构(haft)并对流表进行存储,流表的储存架构是流表存储的前提要求,只有流表存储架构确定了,流表查找过程才能确定。s2、当openflow交换机收到某个网络数据包p时,首先对其进行头域解析,即解析提取其首部重要字段,进而计算其流标识符fid,然后使用流标识符fid查找tcam流表;若查找成功,则根据tcam地址索引到dram流表中的对应表项内容,并做更新表项处理,执行对应动作;若查找失败,则进入sram预测查找阶段。所述网络数据包的首部重要字段包括:源/目的mac地址、源/目的ip地址、源/目的端口、ip协议类型等。s3、sram查找预测在sram预测查找阶段中,需从sram中逐个读取掩码maski。若读取成功,则需使用流标识符fid与掩码maski进行“与操作”计算流关键字keyi,然后使用流关键字keyi查询bf过滤器进行预测查找。若bf过滤器成功判断该子流表中不存在对应流表项,则可直接读取下一个掩码,重复预测查找过程,直到掩码全部读取完毕。该时,掩码读取将会失败,意味着流表失配,交换机会发送流安装请求给sdn控制器。相反,若bf过滤器预测失败,则需进入sram流表查找阶段,进一步查找流表项。s4、sram流表查找当bf过滤器判定失败,即流关键字keyi可能存在于sram子流表中时,会继续查找该子流表;若子流表查找仍是失败,则需继续探测下一个掩码;反之,则使用查找到的dram指针读取表项内容,并做更新表项处理,执行对应动作。此时,需要判断该流表项是否进入活跃状态。对活跃流表项的判定可依据当前批次数据包到达情况实现,其判定方式为:对每条流表项,当有新的数据包命中时,通过新数据包与上一个数据包的到达时间间隔判定新到达数据包是否属于当前批次,并更新当前批次数据。若新到达数据包属于当前批次,则进一步判断当前批次数据包到达数目及平均到达速率是否满足活跃流表项判定阈值,若满足,则认为该流表项进入了活跃状态,采用改进的lru算法将其换入tcam流表中;否则,采用ma1启发法将该掩码maski往前移动1个位置,即与前一个掩码maski+1互换位置;如果所有掩码均已探测完毕,但仍没找到对应的流表项,则认为该数据包p属于一条新流,于是将该数据包信息封装成流安装请求消息,并发送给sdn控制器。本步骤s4中的改进lru算法具体包括如下步骤:(a)对每条流表项,记录数据包到达的平均批间间隔△tavg,初始值为△tavg=0;(b)当新到达数据包不属于当前批次时,更新平均批间间隔△tavg为△tavg=α△t+(1-α)△tavg,其中α是一个权重系数;(c)计算流表项的当前空闲时间tidle=t当前-tlob;(d)根据空闲时间tidle和平均批间间隔△tavg计算流表项失效率p=tidle-△tavg,p的值越大表明流表项当前等待时间越长或平均批间间隔时间较短,流表项失效的可能性也越大,因此,当有新的流表项换入到tcam流表时,优先替换出p值最大的流表项。s5、流表项插入,具体如下:当openflow交换机收到sdn控制器下发的消息m时,若m为带add命令的flow_mod消息,则需要使用消息m携带的信息创建新流表项f。若tcam尚未存满时,直接使用其空闲条目存储新流表项f的匹配域与掩码,同时根据新流表项f的tcam地址将其他的内容字段存入dram的对应地址中。若tcam已经存满时,需将新流表项f存储至sram中。首先将新流表项f的内容字段作为节点加入dram的表项内容链表中,接着将新流表项f的匹配域和dram指针加入其掩码对应的子流表中,最后根据新流表项f的流关键字更新其掩码对应的cbf过滤器。s6、流表项手动删除,具体如下:当openflow交换机收到sdn控制器下发的消息m时,若m为带delete命令的flow_mod消息,则需要根据m的流标识符fid查找tcam流表。若tcam查找成功,则需重置对应tcam表项和对应dram内容;反之,则需根据m的流标识符fid和掩码mask计算流关键字key,并根据流关键字key查找sram中掩码mask对应的子流表。若sram查找成功,则需删除找到的sram流表项及其指针对应的dram消息内容节点,且需根据流关键字key更新掩码mask对应的cbf过滤器信息。s7、流表超时扫描,具体如下:对于每条流表项f,若该流最近没有数据包到达的空闲时间间隔idle_time或其安装时间间隔hard_time到期:若该流表项f存储在tcam中,直接重置对应的tcam流表项和dram表项内容;若该流表项f存储在sram中,首先根据该流表项f的流关键字key更新对应的cbf过滤器信息,接着删除该流表项f对应的sram流表项和dram表项内容。作为其他优选实施例,步骤s4中的ma1启发法可替换为同族mtf算法。本发明采用分层加速流表架构,该架构首先根据网络中数据包成批到达特性,建立tcam和sram相结合的流表分级存储体系,进而可实现大部分数据包的快速流表查找;然后基于网络数据包流对应到流表项和流表项对应到掩码的不均匀性,应用ma1启发法自适应调整掩码顺序,以加快后续数据包的掩码成功探测速度;再利用数据包探测掩码往往会失败的特点,借助计数型cbf过滤器,以极大的概率预测出掩码失败探测结果,从而能避免对应的流表查找遍历过程,提高查找效率。本发明提出的分层加速流表架构,首先基于流表存储介质特性,建立流表分级存储体系。接着,基于网络流量局部性和数据包到达模型,提出活跃流和静默流的分类与识别。从而,构建大规模openflow流表分级存储体系,区分存储活跃流与静默流、流表项的标识字段与内容字段,为实现大规模流表高效查找提供有效保障。本发明中流表的存储不以流表自身性质,将流表项区分成通配符流表项和精确流表项,而是根据流表项被访问的频繁程度,动态地将流表项划分为活跃流表项和静默流表项。活跃流表项一律采用tcam进行优先存储,静默流表项则使用sram存储,并在sram中划分出多个存储元组—子流表,存储对应不同掩码的静默流表。同时,由于这种划分是动态的,当sram中的静默流表处于活跃状态则替换至tcam中,而当tcam中活跃流表项失去活跃特性,则使用替换算法换入sram,替换算法为改进的lru算法。本发明中流表的查找不区分通配符流表和精确流表,所以sram中的静默流表额外设计查找结构来辅助sram进行流表查找。本方案将静默流表按照最长前缀匹配长度组合进行流表分类,将划分为多个子流表,不同子流表具有不同的掩码。数据包的匹配字段只有匹配到对应掩码和正确的流表项才能匹配成功。同时本方案采用并行计数型布鲁姆过滤器进行预测查找,即预查找,可以减少该过程的查找开销。以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等同物界定。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1