CN113810298B - 一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法 - Google Patents
一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法 Download PDFInfo
- Publication number
- CN113810298B CN113810298B CN202111110409.5A CN202111110409A CN113810298B CN 113810298 B CN113810298 B CN 113810298B CN 202111110409 A CN202111110409 A CN 202111110409A CN 113810298 B CN113810298 B CN 113810298B
- Authority
- CN
- China
- Prior art keywords
- cache
- flow table
- stream
- item
- flow
- 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.)
- Active
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
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- 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/742—Route cache; Operation thereof
-
- 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
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,其针对网络流量抖动性,基于网络流量局部性设计了一种动态可伸缩缓存,以存储网络中的所有活跃精确流。当网络流量出现抖动现象时,根据活跃精确流的数量变化适应性调整缓存容量,以始终取得高缓存利用率和高缓存命中率。对于属于活跃精确流的多数分组,将查找命中缓存,并根据命中缓存项中存储的流表项索引值定位对应的流表项,进而根据其中的动作集快速完成转发处理。只有属于空闲精确流的少数分组,在缓存查找失效后,需进一步查找流表。综合而言,即使在网络流量发生抖动的情况下,网络分组也将稳定保持较高的平均查找速度,从而实现OpenFlow虚拟流表的弹性加速查找。
Description
技术领域
本发明涉及一种OpenFlow虚拟流表查找方法,尤其涉及一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法。
背景技术
软件定义网络(Software-Defined Networking,SDN)作为一种新兴的网络架构,将数据转发与控制逻辑分离,通过以OpenFlow为代表的南向接口协议对数据交换设备进行集中式管控,并为上层应用提供统一的编程接口,显著提升了网络的灵活性、开放性和可编程性。在SDN数据平面中,OpenFlow协议支持远程管理和操作交换机中的流表,包括添加、修改和删除流表项,使控制器能灵活定制数据分组在底层交换网络中的传输路径。进一步,OpenFlow将各层协议首部中的关键字段作为流表项的匹配字段,并在匹配字段中引入通配符,实现了网络流的细粒度灵活管理。然而,这也使得OpenFlow虚拟流表无法直接使用哈希方法实现快速查找。
为实现OpenFlow虚拟流表的通配查找,目前主流的OpenFlow虚拟交换机采用元组空间搜索法(TSS),为每条流规则定义与其匹配字段结构相同的掩码,以标识匹配字段中的所有通配符位置。在此基础上,依据掩码将OpenFlow虚拟流表中的所有流表项划分成比流表项数量少得多的若干元组,进而在这些元组中进行哈希查找。对于到达OpenFlow虚拟交换机的每个数据分组,由于无法确定其对应的掩码和元组,需逐个探测掩码即依次查找各个元组,直到在某个元组中成功匹配一条流表项或探测完所有掩码为止。这意味着,每个数据分组需查找遍历多个元组,流表查找速度慢。更为严重的是,当网络流量激增时,元组数量和规模迅速增长,后续到达的分组需查找数量更多、规模更大的元组,导致查找速度显著下降。
图1展示了一种典型的OpenFlow虚拟流表查找过程,其工作原理如下:
(1)当数据分组到达OpenFlow虚拟交换机时,首先解析其各层协议首部,提取其中的关键字段,计算流标识符fid;(2)依次探测掩码数组中的掩码,即将流标识符fid与掩码maski进行与运算,得到关键字keyi,进而在对应的元组中查找匹配的流表项;(3)若查找成功,则执行该流表项中的动作集,并更新流表项信息(如计数器)。否则,继续探测下一个掩码;(4)若所有掩码探测均失败,则将该分组信息封装成Packet-in消息发送给SDN控制器,待SDN控制器生成并下发对应流规则后,再转发处理分组。同时,根据流规则新建一条流表项,并根据掩码将其加入OpenFlow虚拟流表中的对应元组。
目前,OpenFlow虚拟流表查找的主要优化方案是运用缓存技术,通过缓存近期出现的流以绕过流表查找过程,具体如下:
如图2所示的【方案一】是一种基于多级缓存的OpenFlow虚拟流表查找方案,该方案在OpenFlow虚拟交换机的内核空间设置微流缓存和宏流缓存。首先,从用户空间的流表中选取不相交且没有优先级的宏流,缓存至内核空间,构成宏流缓存,进而采用元组空间搜索法实现缓存查找。然后,将宏流缓存中最近出现的精确流与其掩码的对应关系存入微流缓存,使缓存流中的数据分组直接定位对应的掩码,进而根据该掩码找到对应的元组。
方案一的流表查找过程如下:(1)当数据分组到达OpenFlow虚拟交换机时,首先解析其首部提取关键字段,并生成流标识符,然后查找微流缓存;(2)若命中微流缓存,则根据缓存项中的掩码索引值定位到宏流缓存中的掩码,然后查找对应的元组;(3)若元组查找成功匹配某条流表项,则执行其中的动作集,并更新该流表项和对应的缓存项;否则,进入步骤(4);(4)查找宏流缓存,若查找成功,则根据对应流表项的动作集转发处理分组;否则,进入步骤(5);(5)由于微流缓存和宏流缓存均未命中,需将分组上传至用户空间查找OpenFlow流表。若仍未找到一条流表项,则将分组信息封装成packet-in消息发送给SDN控制器,请求下发对应的流规则。
如图3所示的【方案二】是一种基于精确流缓存的OpenFlow虚拟流表查找方案,该方案利用网络流量局部性,缓存网络中的活跃精确流,使大部分数据分组命中缓存,进而快速定位对应的流表项,从而有效提高了OpenFlow虚拟流表的查找速度。缓存采用Cuckoo哈希算法,为每条新出现的活跃精确流提供两个候选位置。当候选位置均已满时,随机踢除其中一条流,并将新流插入对应位置,同时将被踢除的流插入其另一候选位置中。通过这种方式,有效降低了缓存的哈希冲突率,提升了缓存的空间利用率,进而提高了缓存命中率,有助于进一步加快OpenFlow虚拟流表查找。
方案二的流表查找过程如下:(1)当数据分组到达OpenFlow虚拟交换机时,首先提取其首部关键字段,计算流标识符,然后查找活跃精确流缓存;(2)若缓存查找成功匹配某条缓存项,则根据其中的流表项地址直接定位流表中的对应流表项,进而根据其动作集转发分组。否则进入步骤(3);(3)由于缓存查找失败,需依次查找掩码数组对应的所有元组。若在某个元组中成功匹配一条流表项,则执行其中的动作集。(4)若所有元组查找均失败,则将分组信息封装成packet-in消息发送给SDN控制器,待SDN控制器生成并下发对应的流规则后,再转发分组。
但上述现有的OpenFlow虚拟流表查找的缓存优化方案分别存在如下缺点:
【方案一】从流表中选取宏流存入宏流缓存,并通过微流缓存存储宏流缓存中最近出现的精确流与其掩码的映射关系,使部分数据分组可通过微流缓存和宏流缓存完成转发,加快了OpenFlow虚拟流表查找。然而,当分组命中微流缓存,读取宏流缓存中的掩码后,仍需查找该掩码对应的元组,缓存查找速度有待进一步提升。此外,该方案每次将查找元组成功的流直接存入缓存,但该流后续可能只有少量甚至没有分组到达,缓存命中率仍有提升空间。
【方案二】通过缓存网络中的活跃精确流,使得大部分数据分组绕过元组空间搜索过程,直接完成分组转发,实现了OpenFlow虚拟流表的快速查找。然而,当网络流量激增时,由于缓存容量固定,无法存储所有的活跃精确流,导致缓存命中率显著降低。而当网络流量骤减时,缓存将出现较多空缓存项,导致缓存利用率明显降低。总之,该缓存难以同时保持较高的缓存命中率和缓存利用率,OpenFlow虚拟流表查找性能不稳定,无法适应网络流量的抖动性。
基于以上,本发明拟提供一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法。
发明内容
本发明要解决的技术问题是提供一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,以实现OpenFlow虚拟流表的稳定快速查找。
为了解决上述技术问题,本发明采用的技术方案是:一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,包括动态可伸缩的弹性加速缓存的构建方法和数据分组的流表查找方法。
所述可伸缩缓存的构建方法包括以下步骤:
(1)初始定义k个缓存分段,各缓存分段容量相等;
(2)依据数据分组的流标识符fid,通过哈希函数h(·)生成长度为n的流指纹ffp;对于某个分段(长度为l),从流指纹ffp中随机选取m(log2l≤m<n)个互不重复的比特,进行随机排列得到一个比特串,然后进行模l运算,作为子哈希函数;缓存新增一个分段时,生成一个新的子哈希函数;
(3)对于每个分段,每条活跃精确流通过对应的子哈希函数映射一个候选位置;每个候选位置对应一个缓存项,用于存储流信息,包括:流指纹ffp、流表项索引addr以及时间戳time;
(4)缓存缩减一个分段时,先将缩减分段中的活跃精确流移至其它分段中,再删除该分段。
所述数据分组的流表查找方法包括以下步骤:
(1)当OpenFlow虚拟交换机收到某个数据分组后,首先解析其首部字段,计算流标识符fid;
(2)与可伸缩缓存进行匹配,若缓存匹配成功,则根据匹配的缓存项快速定位对应的流表项,进而根据其中的动作集转发处理分组,并更新其字段信息;若缓存匹配失败,则进入步骤(3),继续查找OpenFlow虚拟流表,执行元组空间搜索过程;
(3)依次查找所有的元组,若成功找到一条流表项,则依据其中的动作集完成分组转发处理,然后判断分组所属的精确流是否进入活跃状态;若已进入活跃状态,则将该流存入可伸缩缓存。若流表查找失败,则将该分组信息封装成Packet-in消息发送给SDN控制器,以请求安装对应的流规则。
进一步,所述通过可伸缩缓存进行流表查找,进一步包括:
根据数据分组的流标识符fid,计算其流指纹ffp;
从流指纹中随机选取多个互不重复的比特,进行随机排列作为其子哈希函数;通过子哈希函数获取各缓存分段中的候选位置,并行匹配所有候选位置对应的缓存项;若缓存项中的流指纹与ffp匹配成功,则返回缓存项中的流表项索引值addr;若匹配失败,则返回无效值。
进一步,所述将活跃精确流存入可伸缩缓存,进一步包括:
根据子哈希函数获取流在所有缓存分段中的候选位置,判断是否存在空位;若存在空位,则将该活跃精确流存入第一个空位;否则,判断是否达到缓存扩展条件;若达到扩展条件,则新增一个分段,并生成一个新的子哈希函数,根据该子哈希函数将流存至新增分段中;若未达到扩展条件,则采用LRU策略替换所有候选位置中最近最久未被访问的缓存项。
本发明提供的一种支持网络流量抖动的OpenFlow虚拟流表查找方法,至少具有以下增益效果:
1、本发明提供的一种容量可动态伸缩的弹性加速缓存,根据活跃精确流数量的动态变化进行适应性的扩展或收缩。当活跃精确流数量激增时,缓存新增一个分段,以存储新出现的活跃精确流,从而保持高缓存命中率;当活跃精确流数量骤减时,缓存缩减一个分段,以减少空缓存项数量,从而保持高缓存利用率。
2、本发明提供的支持网络流量抖动的OpenFlow虚拟流表查找方法,采用可伸缩缓存动态存储网络中的活跃精确流,在网络流量发生抖动时,通过及时灵活调整缓存容量,始终容纳所有活跃精确流。对于属于活跃精确流的多数分组,将查找命中缓存,定位对应的流表项,进而快速完成转发处理。只有属于空闲精确流的少数分组,在缓存查找失效后,需要进一步查找流表。综合而言,网络分组将稳定保持较高的平均查找速度,从而实现OpenFlow虚拟流表的弹性加速查找。
3、本发明相比现有技术的方案一,针对方案一存在的缺陷,通过判断新出现的精确流是否处于活跃状态,进而只将活跃精确流存入缓存,以提高缓存命中率。此外,缓存项存储活跃精确流对应流表项的索引值,使得大多数分组缓存命中后,直接定位对应的流表项,进一步加快OpenFlow虚拟流表查找速度。
4、本发明相比现有技术的方案二,针对方案二存在的缺陷,设计动态可伸缩的弹性加速缓存,根据网络流量的动态变化对缓存容量进行适应性调整,以始终取得较高的缓存命中率和缓存利用率,进而保证OpenFlow虚拟流表的稳定快速查找。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可根据这些附图获得其他的附图。
图1为OpenFlow虚拟交换机的流表查找过程示意图;
图2为现有技术基于多级缓存的OpenFlow虚拟流表查找方案示意图;
图3为现有技术基于精确流缓存的OpenFlow虚拟流表查找方案示意图;
图4为本发明实施提供的可伸缩缓存的架构示意图;
图5为本发明实施提供的可伸缩缓存的查找流程示意图;
图6为本发明实施提供的可伸缩缓存的插入流程示意图;
图7为本发明实施提供的可伸缩缓存的删除流程示意图。
图8为本发明实施提供的可伸缩缓存的超时扫描流程示意图。
图9为本发明实施提供的一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法示意图;
图10为本发明实施提供的一种OpenFlow虚拟流表查找流程示意图;
图11为本发明实施提供的一种OpenFlow虚拟流表插入流程示意图;
图12为本发明实施提供的一种OpenFlow虚拟流表删除流程示意图;
图13为本发明实施提供的一种OpenFlow虚拟流表超时扫描流程示意图;
具体实施方式
下面结合实施例及附图对发明进一步说明,但不用来限制本发明的范围。
如图4所示,本发明的一个实施例,提供了一种动态可伸缩的弹性加速缓存,具体如下:
可伸缩缓存由多个逻辑分段组成,其分段数将根据网络中活跃精确流数量的动态变化进行适应性增加或减少。当活跃精确流数量显著增多时,缓存新增一个分段,以容纳新增的活跃精确流,从而保持较高的缓存命中率。当活跃精确流的数量明显减少时,缓存缩减一个分段,并尽可能将缩减分段中的活跃精确流移至其它分段中,从而在保持高缓存命中率的同时,提高缓存利用率。随着网络流量的上下波动,活跃精确流数量高低起伏,缓存随之扩展与收缩,以稳定取得较高的缓存命中率与缓存利用率,从而保证缓存整体性能。
假设可伸缩缓存当前包含k个分段。当收到一个流标识符fid时,通过哈希函数h(·)生成长度为n的流指纹ffp。对于某个分段(长度为l),从流指纹ffp中随机选取m(log2l≤m<n)个互不重复的比特,进行随机排列得到一个比特串,然后进行模l运算,作为子哈希函数。当新增一个分段时,生成一个新的子哈希函数。对于每个分段,每条活跃精确流通过对应的子哈希函数映射一个候选位置。每个候选位置对应一个缓存项,用于存储流信息,包括:流指纹ffp、流表项索引addr以及时间戳time。流指纹ffp通常为16或32位比特,用于标识流。流表项索引addr指向当前活跃精确流对应的流表项,以便进一步执行动作集读取、计数器更新等操作。时间戳time记录该缓存项的最近访问时间,用于缓存的定期超时扫描和新流插入时的缓存替换。
参照图5-8,上述实施例具体包括以下操作:
a、可伸缩缓存查找操作
如图5所示为可伸缩缓存的查找流程。首先获取分组的流标识符fid,对其进行哈希运算得到流指纹ffp。然后针对每个分段,根据其对应的子哈希函数计算流的候选位置。进而将流指纹ffp与所有候选位置对应的缓存项进行匹配。若成功匹配某条缓存项,则返回其中的流表项索引值addr,并更新其时间戳。否则,返回无效值。
b、可伸缩缓存插入操作
如图6所示为可伸缩缓存的插入流程。当一条精确流进入活跃状态时,需将其存入可伸缩缓存,具体过程如下:首先,根据流标识符fid生成流指纹ffp。然后,利用子哈希函数得到其在各缓存分段的候选位置。若存在空位,则将流指纹ffp、对应流表项的索引值addr以及当前分组的时间戳time等流信息插入第一个空位。否则,根据当前缓存利用率和缓存命中率判断是否达到缓存扩展条件。若达到扩展条件,则新增一个缓存分段,并生成一个对应的子哈希函数,然后将流信息插入该分段中对应的候选位置。否则,采用LRU策略替换所有候选位置中最近最久未访问的缓存项。
c、可伸缩缓存删除操作
如图7所示为可伸缩缓存的删除流程。当从缓存中删除某条缓存项时,首先根据流标识符fid计算其流指纹ffp。然后,通过子哈希函数计算其在各分段的候选位置,进而依据流指纹ffp与对应的缓存项进行匹配。若成功匹配一条缓存项,则重置该缓存项。然后,根据缓存装载率和缓存命中率判断是否达到缓存收缩条件。若达到收缩条件,则先将最后一个缓存分段中的缓存项移至其他分段(该操作可视为可伸缩缓存插入操作),然后删除最后一个缓存分段。
d、可伸缩缓存的超时扫描操作
如图8所示为可伸缩缓存的超时扫描流程。由于网络流量具有动态变化性,随着时间的推移,可伸缩缓存中的活跃精确流可能只有零散甚至没有分组到达,即进入空闲状态。因此,需通过超时扫描机制及时清除缓存中的空闲流,以容纳新出现的活跃精确流。首先获取系统当前时间。然后依次扫描所有缓存分段。对于当前扫描的分段,依次检查每个缓存项是否超时,即读取缓存项中的时间戳,并将系统当前时间和时间戳的差值与超时间隔相比较。若超出超时间隔,则重置该缓存项。
如图9所示,本发明的另一个实施例,提供了一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,具体如下:
该方法根据数据分组到达间隔,识别网络中的活跃精确流,并将其存入可伸缩缓存。在网络流量发生抖动时,缓存根据活跃精确流数量的动态变化适应性调整缓存容量,以始终容纳所有活跃精确流。对于属于活跃精确流的多数分组,将查找命中缓存,定位对应的流表项,进而快速完成转发处理。只有属于空闲精确流的少数分组,在缓存查找失效后,需要进一步查找流表。综合而言,网络分组将稳定保持较高的平均查找速度,从而实现OpenFlow虚拟流表的弹性加速查找。
参照图10-13,上述实施例具体包括以下操作:
a、OpenFlow虚拟流表查找操作
如图10所示为OpenFlow虚拟流表的查找流程。当OpenFlow虚拟交换机收到网络中的某个数据分组后,首先解析并提取其头部信息,以获取流标识符fid。然后使用流标识符fid查找可伸缩缓存。
若缓存查找成功,则根据匹配缓存项中的流表项索引值addr定位对应的流表项。进一步,读取该流表项的匹配字段,并检验流标识符fid是否与该匹配字段一致。若一致,则跳过元组空间搜索操作,直接根据该流表项的动作集完成分组转发。最后,更新流表项中的相关字段(如计数器和时间戳),并更新匹配缓存项的时间戳。
若缓存查找失败,则继续执行元组空间搜索,即依次查找各个掩码对应的元组。若成功匹配某条流表项,则根据其中的动作集转发处理分组。然后,判断该分组所属的精确流是否进入活跃状态,即判断当前分组和最近分组的到达时间间隔是否小于某个阈值PIT。若小于PIT,则表明该流已进入活跃状态,将该流存入可伸缩缓存。
若元组空间搜索失败,则该分组属于一条新流,OpenFlow虚拟交换机将把该分组信息封装成Packet-in消息发送给SDN控制器,以请求下发对应的流规则。
b、OpenFlow虚拟流表查找操作
如图11所示为OpenFlow虚拟流表的插入流程。当OpenFlow虚拟交换机收到控制器下发的带ADD命令的flow_mod消息时,需根据消息内容新建一条流表项,并插入到OpenFlow虚拟流表中。依据新流表项的掩码,在OpenFlow虚拟流表中搜索对应的元组,即依次与所有元组对应的掩码进行比对。若成功找到一个元组,则将新流表项插入其中,即计算新流表项在该元组中的哈希位置,并将其插入对应的哈希桶中。若元组搜索失败,则根据新流表项的掩码新建一个元组,并将其加入OpenFlow虚拟流表的元组空间中,再将新流表项插入该元组中。
c、OpenFlow虚拟流表删除操作
如图12所示为OpenFlow虚拟流表的删除流程。当OpenFlow交换机收到SDN控制器下发的带DELETE命令的flow_mod消息后,需删除对应的流表项。首先,从消息内容中解析流关键字key和掩码mask。然后,依据掩码mask,在OpenFlow虚拟流表中搜索对应的元组,即依次与所有元组对应的掩码进行匹配。若匹配成功,则计算流关键字key在对应元组中的哈希位置,并在哈希桶中查找对应的流表项。若查找成功,则将找到的流表项从该桶中删除,并将其对应的缓存项从可伸缩缓存中删除。流表项删除后,若其所在元组变为空,则将该元组从OpenFlow虚拟流表中删除。若查找失败,则向控制器发送error消息,报告流表项删除失败结果。
d、OpenFlow虚拟流表的超时扫描操作
如图13所示为OpenFlow虚拟流表的超时扫描流程。首先获取掩码数组,然后逐一扫描对应的元组。对于每个元组,依次遍历其所有哈希桶,检查其中每个流表项是否超时。具体而言,读取流表项中的时间戳,并判断系统当前时间和流表项时间戳的差值是否超过超时间隔(IDLE_TIMEOUT和HARD_TIMEOUT)。若已超时,则将该流表项从对应的桶中删除,并同步更新可伸缩缓存。若元组中的所有流表项均已超时,即超时扫描完毕后元组变成空,则将该元组从OpenFlow虚拟流表中删除。
与现有技术相比,针对网络流量抖动性,本发明基于网络流量局部性设计了一种动态可伸缩缓存,进而提出了一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法。对于到达OpenFlow虚拟交换机的绝大多数分组,该方法将查找命中缓存,并根据命中缓存项中存储的流表项索引值定位对应的流表项,进而根据其中的动作集完成分组转发,从而跳过元组空间搜索操作,显著提升了OpenFlow虚拟流表查找速度。当网络流量出现抖动现象时,可伸缩缓存将根据活跃精确流的数量变化动态调整容量,始终存储当前所有的活跃精确流,从而在确保高缓存利用率的同时,保持高缓存命中率,进而实现OpenFlow虚拟流表的弹性加速查找。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等同物界定。
Claims (10)
1.一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,其特征在于,所述流表弹性加速查找方法根据数据分组到达间隔,识别网络中的活跃精确流,并将其全部存入可伸缩缓存;可伸缩缓存由多个逻辑分段组成,在网络流量发生抖动时,通过增加或缩减分段以及时调整缓存容量,始终容纳所有活跃精确流;对于到达OpenFlow虚拟交换机的分组,将查找命中缓存,并根据命中缓存项中存储的流表项索引值定位对应的流表项,进而根据其中的动作集完成分组转发。
2.根据权利要求1所述的一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,其特征在于,所述OpenFlow虚拟流表弹性加速查找方法,具体包括以下操作:
a、OpenFlow虚拟流表查找操作
每个到达OpenFlow虚拟交换机的数据分组,通过查找流表匹配对应的流表项,进而根据其中的动作集完成分组转发;
每个到达OpenFlow虚拟交换机的数据分组,通过查找可伸缩缓存以定位流表中对应的流表项;
b、OpenFlow虚拟流表插入操作
当OpenFlow虚拟交换机收到控制器下发的带ADD命令的flow_mod消息时,需根据消息内容新建一条流表项,并插入到OpenFlow虚拟流表中;
c、OpenFlow虚拟流表删除操作
当OpenFlow交换机收到SDN控制器下发的带DELETE命令的flow_mod消息后,需删除对应的流表项,并同步更新可伸缩缓存;
d、OpenFlow虚拟流表的超时扫描操作
根据系统当前时间和流表项时间戳的差值判断是否超过超时间隔,若已超时,则将该流表项从OpenFlow虚拟流表中删除,并同步更新可伸缩缓存。
3.根据权利要求2所述的一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,其特征在于,所述a、OpenFlow虚拟流表查找操作,具体包括以下步骤:
当OpenFlow虚拟交换机收到网络中的某个数据分组后,首先解析并提取其头部信息,以获取流标识符fid;然后使用流标识符fid查找可伸缩缓存;
若缓存查找成功,则根据匹配缓存项中的流表项索引值addr定位对应的流表项;进一步,读取该流表项的匹配字段,并检验流标识符fid是否与该匹配字段一致;若一致,则跳过元组空间搜索操作,直接根据该流表项的动作集完成分组转发;最后,更新流表项中的相关字段,并更新匹配缓存项的时间戳;
若缓存查找失败,则继续执行元组空间搜索,即依次查找各个掩码对应的元组;若成功匹配某条流表项,则根据其中的动作集转发处理分组;然后,判断该流表项是否进入活跃状态,即判断当前分组和最近分组的到达时间间隔是否小于某个阈值PIT;若小于PIT,则表明该流表项已进入活跃状态,将该流表项存入可伸缩缓存;
若元组空间搜索失败,则该分组属于一条新流,OpenFlow虚拟交换机将把该分组信息封装成Packet-in消息发送给SDN控制器,以请求下发对应的流规则。
4.根据权利要求3所述的一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,其特征在于,所述查找可伸缩缓存,具体包括如下步骤:
获取分组的流标识符fid,通过哈希函数h(·)得到流指纹ffp;然后针对每个分段,根据其对应的子哈希函数计算流的候选位置,进而将流指纹ffp与所有候选位置对应的缓存项进行匹配;若成功匹配某条缓存项,则返回其中的流表项索引值addr;否则,返回无效值。
5.根据权利要求3所述的一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,其特征在于,所述将流表项存入可伸缩缓存,具体包括如下步骤:
根据数据分组的关键字段,获取流标识符fid、流表项地址索引值addr、时间戳time,并根据流标识符fid生成流指纹ffp;
根据子哈希函数获取所有缓存分段中的候选位置,判断是否存在空位;若存在空位,则将流指纹ffp、流表项地址索引值addr、时间戳time等流信息存入第一个空位;否则,根据当前缓存利用率和缓存命中率判断是否达到缓存扩展条件;
若达到扩展条件,则新增一个缓存分段,并生成一个对应的子哈希函数,然后将流信息插入该分段中对应的候选位置;否则,采用LRU策略替换所有候选位置中最近最久未访问的缓存项。
6.根据权利要求2所述的一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,其特征在于,所述b、OpenFlow虚拟流表插入操作,具体包括以下步骤:
首先根据消息内容,新建一条流表项,然后依据新流表项的掩码mask,在OpenFlow虚拟流表中搜索对应的元组,即依次与所有元组对应的掩码进行比对;
若成功找到一个元组,则将新流表项插入其中,即计算新流表项在该元组中的哈希位置,并将其插入对应的哈希桶中;若元组搜索失败,则根据新流表项的掩码新建一个元组,并将其加入OpenFlow虚拟流表的元组空间中,再将新流表项插入该元组中。
7.根据权利要求2所述的一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,其特征在于,所述c、OpenFlow虚拟流表删除操作,具体包括以下步骤:
首先,从消息内容中解析流关键字key和掩码mask;然后,依据掩码mask,在OpenFlow虚拟流表中搜索对应的元组,即依次与所有元组对应的掩码进行匹配;
若匹配成功,则计算流关键字key在对应元组中的哈希位置,并在哈希桶中查找对应的流表项;若查找成功,则将找到的流表项从该哈希桶中删除,并将其对应的缓存项从可伸缩缓存中删除;流表项删除后,若其所在元组变为空,则将该元组从OpenFlow虚拟流表中删除;若查找失败,则向控制器发送error消息,报告流表项删除失败结果。
8.根据权利要求7所述的一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,其特征在于,所述将其对应的缓存项从可伸缩缓存中删除,具体包括以下步骤:
首先,根据系统当前时间计算流表项的分组到达间隔是否大于PIT,若大于,则该删除的流为活跃精确流,需将其对应的缓存项从可伸缩缓存中删除;
然后,根据流标识符fid计算其流指纹ffp;通过子哈希函数计算其在各分段的候选位置,进而依据流指纹ffp与对应的缓存项进行匹配;若成功匹配一条缓存项,则重置该缓存项,并根据缓存利用率和缓存命中率判断是否达到缓存收缩条件;
若达到收缩条件,则先将最后一个缓存分段中的缓存项移至其他分段,然后删除最后一个缓存分段。
9.根据权利要求2所述的一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,其特征在于,所述d、OpenFlow虚拟流表超时扫描操作,具体包括以下步骤:
首先获取掩码数组,然后逐一扫描对应的元组;对于每个元组,依次遍历其所有哈希桶,检查其中每个流表项是否超时;具体而言,读取流表项中的时间戳,并判断系统当前时间和流表项时间戳的差值是否超过空闲时间隔IDLE_TIMEOUT或其硬超时HARD_TIMEOUT;若已超时,则将该流表项从对应的桶中删除,并同步更新可伸缩缓存;若元组中的所有流表项均已超时,即超时扫描完毕后元组变成空,则将该元组从OpenFlow虚拟流表中删除。
10.根据权利要求1所述的一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法,其特征在于,所述可伸缩缓存还包括超时扫描机制,具体如下:
首先获取系统当前时间,然后依次扫描所有缓存分段;对于当前扫描的分段,依次检查每个缓存项是否超时,即读取缓存项中的时间戳,并将系统当前时间和时间戳的差值与超时间隔相比较;若超出超时间隔,则重置该缓存项;超时扫描完毕后,根据当前缓存利用率和缓存命中率判断是否需要收缩缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111110409.5A CN113810298B (zh) | 2021-09-23 | 2021-09-23 | 一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111110409.5A CN113810298B (zh) | 2021-09-23 | 2021-09-23 | 一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113810298A CN113810298A (zh) | 2021-12-17 |
CN113810298B true CN113810298B (zh) | 2023-05-26 |
Family
ID=78896187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111110409.5A Active CN113810298B (zh) | 2021-09-23 | 2021-09-23 | 一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113810298B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114640641B (zh) * | 2022-03-01 | 2024-03-12 | 长沙理工大学 | 一种流量感知的OpenFlow流表弹性节能查找方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107995031A (zh) * | 2017-11-22 | 2018-05-04 | 郑州市景安网络科技股份有限公司 | 一种sdn网络的建立方法、系统及相关装置 |
CN111131084A (zh) * | 2019-12-06 | 2020-05-08 | 湖南工程学院 | 一种QoS感知的OpenFlow流表分级存储架构及应用 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4028453B2 (ja) * | 2003-08-28 | 2007-12-26 | Kddi株式会社 | 通信端末装置 |
CN103560963B (zh) * | 2013-11-18 | 2016-08-17 | 中国科学院计算机网络信息中心 | 一种OpenFlow流表存储空间压缩方法 |
US9996467B2 (en) * | 2013-12-13 | 2018-06-12 | Nicira, Inc. | Dynamically adjusting the number of flows allowed in a flow table cache |
US10331573B2 (en) * | 2016-11-04 | 2019-06-25 | Oracle International Corporation | Detection of avoidable cache thrashing for OLTP and DW workloads |
CN107809385B (zh) * | 2017-10-11 | 2020-08-14 | 中国电子科技集团公司第三十研究所 | 一种Packet-In消息的触发与控制方法 |
CN108924047B (zh) * | 2018-06-20 | 2021-10-12 | 新华三技术有限公司 | 一种流表项存储方法、装置、交换机和计算机可读介质 |
CN109921996B (zh) * | 2018-12-29 | 2021-11-09 | 长沙理工大学 | 一种高性能的OpenFlow虚拟流表查找方法 |
US11343189B2 (en) * | 2019-10-21 | 2022-05-24 | Arista Networks, Inc. | Systems and methods for augmenting TCAM bank processing with exact match |
CN111966284B (zh) * | 2020-07-16 | 2022-06-03 | 长沙理工大学 | 一种OpenFlow大规模流表弹性节能与高效查找系统及方法 |
-
2021
- 2021-09-23 CN CN202111110409.5A patent/CN113810298B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107995031A (zh) * | 2017-11-22 | 2018-05-04 | 郑州市景安网络科技股份有限公司 | 一种sdn网络的建立方法、系统及相关装置 |
CN111131084A (zh) * | 2019-12-06 | 2020-05-08 | 湖南工程学院 | 一种QoS感知的OpenFlow流表分级存储架构及应用 |
Also Published As
Publication number | Publication date |
---|---|
CN113810298A (zh) | 2021-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108337172B (zh) | 大规模OpenFlow流表加速查找方法 | |
CN109921996B (zh) | 一种高性能的OpenFlow虚拟流表查找方法 | |
CN110808910B (zh) | 一种支持QoS的OpenFlow流表节能存储架构及其方法 | |
US11811660B2 (en) | Flow classification apparatus, methods, and systems | |
US6842791B2 (en) | Method and apparatus for memory efficient fast VLAN lookups and inserts in hardware-based packet switches | |
US6570877B1 (en) | Search engine for forwarding table content addressable memory | |
US6768739B1 (en) | Router with a cache having a high hit probability | |
US8898204B1 (en) | System and method for controlling updates of a data structure | |
EP2643762B1 (en) | Method and apparatus for high performance, updatable, and deterministic hash table for network equipment | |
US6691124B2 (en) | Compact data structures for pipelined message forwarding lookups | |
CA2274962C (en) | High speed variable length best match look-up in a switching device | |
US8200686B2 (en) | Lookup engine | |
CN111966284B (zh) | 一种OpenFlow大规模流表弹性节能与高效查找系统及方法 | |
CN107528783B (zh) | 利用对前缀长度进行两个搜索阶段的ip路由缓存 | |
US20080192754A1 (en) | Routing system and method for managing rule entries of ternary content addressable memory in the same | |
CN111131029B (zh) | 一种支持规则依赖的高能效OpenFlow流表查找方法 | |
US8762362B1 (en) | System and method for updating a data structure | |
US20050141519A1 (en) | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware | |
CN111131084B (zh) | 一种QoS感知的OpenFlow流表查找方法 | |
GB2365666A (en) | Controlling data packet transmission through a computer system by means of filter rules | |
CN113810298B (zh) | 一种支持网络流量抖动的OpenFlow虚拟流表弹性加速查找方法 | |
US10901897B2 (en) | Method and apparatus for search engine cache | |
Yu et al. | Forwarding engine for fast routing lookups and updates | |
US9152661B1 (en) | System and method for searching a data structure | |
US11782895B2 (en) | Cuckoo hashing including accessing hash tables using affinity table |
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 |