基于openflow交换机的流表表项空闲超时检测方法技术

技术编号:17117365 阅读:22 留言:0更新日期:2018-01-25 00:20
本发明专利技术涉及一种基于openflow交换机的流表表项空闲超时检测方法,包括:建立以超时时刻为键值的哈希表,所述哈希表以秒为时间粒度来标识每个流表表项的最早可能出现的超时时刻;在接收到流表后,计算出每个流表表项最早可能出现的超时时刻,接着将流表表项ID及该表项最近一次有包匹配的时间存入对应哈希表中;在交换机运行时,将所述哈希表作为超时检测用表,以当前时刻为键值遍历那些最可能在当前时刻超时的流表表项,从而检测出超时表项。

A free timeout detection method for table list items based on openflow switches

The invention relates to a openflow switch flow table idle timeout detection method based on hash table key include: the establishment for the hash table timeout time in seconds for time granularity to identify each table item at the earliest possible time in the received timeout; flow table, calculate each flow table is the earliest possible overtime time, then the flow table and the ID table last packet matching time in the corresponding hash table; in the operation of the switch, the hash table as a timeout detection meter, at the current moment for those most likely in key traversal the current flow timeout table, so as to detect the timeout table.

【技术实现步骤摘要】
基于openflow交换机的流表表项空闲超时检测方法
本专利技术涉及网络通信领域,特别涉及一种基于openflow交换机的流表表项空闲超时检测方法。
技术介绍
随着互联网的高速发展,互联网数据中心也迅速发展。而云计算的发展,使得更多的应用处理集中到云端,促使云计算数据中心的规模急剧增长。数据中心网络面临着诸多问题,如集中高效的网络管理要求,高效灵活的组网需求,虚拟机的部署和迁移需求,虚拟多租户业务支撑要求和全面的数据中心IaaS要求。对此,学界提出了软件定义网络(SoftwareDefinedNetwork,SDN)的概念。SDN具有转发和控制分离、控制逻辑集中、网络虚拟化、网络能力开放化等特点。目前,控制层与转发层通信的主流标准是openflow协议。在SDN中,数据层与控制层分离,交换机将繁重的控制策略部分交由控制器来负责,而它仅根据控制器下发的规则对数据包进行快速转发。下发的流表存储在交换机端,交换机端的存储空间是有限的,所以需要及时移除一些不常使用的流表表项,openflow也定义了空闲(idle_time)超时移除机制,并且时间粒度为秒,但是具体检测方法是由交换机端实现的。目前检测方法主要有:在对每一条流处理时,测量各个包的到达时间间隔,同时与idle_time做比较来检测超时。此方法的缺点就是同时检测所有表项,而且每条流上包与包之间间隔的检测也会引入很大的计算开销,而且在很大程度上影响了包转发效率。
技术实现思路
本专利技术的目的在于克服已有的流表表项空闲超时检测方法计算开销较大、包转发效率较低的缺陷,从而提供一种能够减少计算开销、提高流表表项超时检测效率的方法。为了实现上述目的,本专利技术提供了一种基于openflow交换机的流表表项空闲超时检测方法,包括:建立以超时时刻为键值的哈希表,所述哈希表以秒为时间粒度来标识每个流表表项的最早可能出现的超时时刻;在接收到流表后,计算出每个流表表项最早可能出现的超时时刻,接着将流表表项ID及该表项最近一次有包匹配的时间存入对应哈希表中;在交换机运行时,将所述哈希表作为超时检测用表,以当前时刻为键值遍历那些最可能在当前时刻超时的流表表项,从而检测出超时表项。上述技术方案中,该方法进一步包括:步骤1、建立超时配置哈希表;该步骤进一步包括:步骤1-1、首先,在流表下发时,根据(1)式计算出流表表项的超时时刻,其中tc是指添加流表的时刻,ti是指流表表项的空闲超时时间,tout是指流表表项最早的可能出现空闲超时的时刻,即流表表项的超时时刻;tout=tc+ti(1)步骤1-2:以步骤1-1得到的流表表项的超时时刻tout为键值,通过(2)式,计算出哈希值h,然后将相应的流表表项ID及此表项最近一次有包匹配的时间tlast插入哈希数组Hash[h]所指向的链表中;其中,在插入链表时采用链表头插法,即每次插入新节点,都是Hash[h]中指针指向该新节点,而新节点中的next指针则指向原Hash[h]中指针指向的节点,tlast初始值为添加流表的时刻tc;h=tout%tcycle(2)其中,tcycle表示本专利技术的方法所能检测的最大超时时间,其大小为86400秒;步骤1-3、按照之前的步骤1-1和步骤1-2,将后续其他流表表项ID及该表项最近一次有包匹配的时间tlast插入哈希数组Hash[h]所指向的链表中;步骤2、在交换机运行时,每隔一定的间隔时间进行一次超时检测;其中,一次超时检测的具体实现步骤如下:步骤2-1、首先获得当前时间tnow,然后以tnow为键值,将tnow代替(2)式中的tout计算出哈希值h,在哈希表中找到Hash[h]所指向的链表;步骤2-2、遍历该链表中的下一个表项,计算该表项的tlast是否满足(3)式,如果该表项tlast满足式(3),则表明该表项超时,通过表项ID找到该表项并移除,同时移除该链表中相应表项的信息,然后再执行步骤2-3;tnow-tlast≥ti(3);如果该表项tlast不满足式(3),则通过(4)式计算出新的该表项最早的可能出现空闲超时的时刻tout,然后完成该表项在哈希表中的新位置的调整;接着再执行步骤2-3;tout=tlast+ti(4);其中,流表表项在哈希表中的新位置的调整包括:以流表表项的超时时刻tout为键值(key),通过(2)式,计算出哈希值h,然后将相应的流表表项ID及此表项最近一次有包匹配的时间tlast插入哈希数组Hash[h]所指向的链表中;步骤2-3、判断哈希表中Hash[h]所指向的链表中所有表项是否都检测完毕,如果哈希表中Hash[h]所指向的链表中还有待检测表项,则继续执行步骤2-2;如果哈希表中Hash[h]所指向的链表中所有表项都检测结束,则判断检测间隔是否到超时检测的间隔时间,如果是,则继续执行步骤2;如果不是,则等待。上述技术方案中,所述间隔时间为1秒。本专利技术的优点在于:本专利技术的方法通过简单预处理来筛选出在某一时刻最有可能发生表项超时事件的流表进行超时检测,减少了计算开销,提高了流表表项超时检测效率。附图说明图1是超时配置哈希表的示意图;图2是本专利技术的基于openflow交换机的流表表项空闲超时检测方法的流程图。具体实施方式现结合附图对本专利技术作进一步的描述。考虑到现有的流表表项空闲超时检测方法在计算开销与包转发效率上的缺陷,本专利技术的方法建立一个以超时时刻为键值的哈希表,该哈希表以秒(second)为时间粒度来标识每个流表表项的最早可能出现的超时时刻。然后在接收到流表后,计算出每个流表表项最早可能出现的超时时刻,接着将流表表项ID及该表项最近一次有包匹配的时间存入对应哈希表中。在交换机运行时,该哈希表作为超时检测用表,以当前时刻为键值遍历那些最可能在当前时刻超时的流表表项,从而检测出超时表项。本专利技术的方法在每一时刻都只检测那些最可能在那一时刻超时的流表表项,然后通过维护此超时检测哈希表来实现流表表项空闲超时的高效检测。在本专利技术方法中,超时时间的选择需要权衡,时间过短,可能会导致流表的重新下发增多;时间过长,可能会导致流表占用空间过大,不能很好的发挥timeout的作用。流表超时时间配置更多以秒为粒度,而设置空闲时长为小时或天在实际中应用比较少。基于以上考虑,从工程实际出发并充分考虑流表空闲超时配置的灵活性,本专利技术的方法在实现时条件限制为:空闲超时值最大为一天,即86400s,在不超出这一值的前提下,超时时间可以是其他值,如1秒、10秒、100秒等。如图2所示,本专利技术的基于openflow交换机的流表表项空闲超时检测方法包括以下步骤:步骤201:建立超时配置哈希表。该步骤进一步包括:首先,在流表下发时,根据(1)式计算出流表表项的超时时刻,其中tc是指添加流表的时刻,ti是指流表表项的空闲超时时间,tout是指流表表项最早的可能出现空闲超时的时刻,即流表表项的超时时刻。tout=tc+ti(1)然后,以流表表项的超时时刻tout为键值(key),通过哈希函数(2)式,计算出哈希值h,然后将相应的流表表项ID及此表项最近一次有包匹配的时间tlast插入哈希数组Hash[h]所指向的链表中。其中,在插入链表时采用链表头插法,即每次插入新节点,都是Hash[h]中指针指向该新节点,本文档来自技高网...
基于openflow交换机的流表表项空闲超时检测方法

【技术保护点】
一种基于openflow交换机的流表表项空闲超时检测方法,包括:建立以超时时刻为键值的哈希表,所述哈希表以秒为时间粒度来标识每个流表表项的最早可能出现的超时时刻;在接收到流表后,计算出每个流表表项最早可能出现的超时时刻,接着将流表表项ID及该表项最近一次有包匹配的时间存入对应哈希表中;在交换机运行时,将所述哈希表作为超时检测用表,以当前时刻为键值遍历那些最可能在当前时刻超时的流表表项,从而检测出超时表项。

【技术特征摘要】
1.一种基于openflow交换机的流表表项空闲超时检测方法,包括:建立以超时时刻为键值的哈希表,所述哈希表以秒为时间粒度来标识每个流表表项的最早可能出现的超时时刻;在接收到流表后,计算出每个流表表项最早可能出现的超时时刻,接着将流表表项ID及该表项最近一次有包匹配的时间存入对应哈希表中;在交换机运行时,将所述哈希表作为超时检测用表,以当前时刻为键值遍历那些最可能在当前时刻超时的流表表项,从而检测出超时表项。2.根据权利要求1所述的基于openflow交换机的流表表项空闲超时检测方法,其特征在于,该方法进一步包括:步骤1、建立超时配置哈希表;该步骤进一步包括:步骤1-1、首先,在流表下发时,根据(1)式计算出流表表项的超时时刻,其中tc是指添加流表的时刻,ti是指流表表项的空闲超时时间,tout是指流表表项最早的可能出现空闲超时的时刻,即流表表项的超时时刻;tout=tc+ti(1)步骤1-2:以步骤1-1得到的流表表项的超时时刻tout为键值,通过(2)式,计算出哈希值h,然后将相应的流表表项ID及此表项最近一次有包匹配的时间tlast插入哈希数组Hash[h]所指向的链表中;其中,在插入链表时采用链表头插法,即每次插入新节点,都是Hash[h]中指针指向该新节点,而新节点中的next指针则指向原Hash[h]中指针指向的节点,tlast初始值为添加流表的时刻tc;h=tout%tcycle(2)其中,tcycle表示本发明的方法所能检测的最大超时时间,其大小为86400秒;步骤1-3、按照之前的步骤1-1和步骤1-2,将后续其他流表表项ID及该表项最近一次有包匹配...

【专利技术属性】
技术研发人员:陈晓贾正义曹作伟
申请(专利权)人:中国科学院声学研究所北京中科智网科技有限公司
类型:发明
国别省市:北京,11

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

1