实现交换机芯片OPENFLOW流表优先级的方法及系统.pdf

上传人:e2 文档编号:4331641 上传时间:2018-09-14 格式:PDF 页数:12 大小:554.23KB
返回 下载 相关 举报
摘要
申请专利号:

CN201210335079.4

申请日:

2012.09.12

公开号:

CN102843298A

公开日:

2012.12.26

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 12/56申请日:20120912|||公开

IPC分类号:

H04L12/56

主分类号:

H04L12/56

申请人:

盛科网络(苏州)有限公司

发明人:

赵怡

地址:

215021 江苏省苏州市苏州工业园区星汉街5号B幢4楼13/16单元

优先权:

专利代理机构:

苏州威世朋知识产权代理事务所(普通合伙) 32235

代理人:

姚锦程

PDF下载: PDF下载
内容摘要

本发明提供一种实现交换机芯片Openflow流表优先级的方法及系统,其方法包括:建立一存储有若干Openflow流的优先级值的哈希表,并相应建立一将哈希表中所有优先级值从大到小进行排序的排序表;将每一优先级值与一组哈希数据相对应,每一组哈希数据包括若干与ACL表对应的entry_id值,并将所述哈希数据存储于一entry_id链表中;按照所述排序表中的优先级值的次序,对所述哈希表中的所有优先级值进行重排序;根据排序后的哈希表,获取所述entry_id值的优先级次序,并根据所述优先级次序对交换机的ACL表作相应地排序。本发明利用传统交换机的芯片上的ACL功能,实现满足Openflow协议的流表优先级功能,且实现方式简单。

权利要求书

1.一种实现交换机芯片Openflow流表优先级的方法,其特征在于,所述方法包括:S1、建立一存储有若干Openflow流的优先级值的哈希表,并相应建立一将哈希表中所有优先级值从大到小进行排序的排序表;S2、将每一优先级值与一组哈希数据相对应,每一组哈希数据包括若干与ACL表对应的entry_id值,其中,所述entry_id值存储于entry_id链表中;S3、按照所述排序表中的优先级值的次序,对所述哈希表中的所有优先级值进行重排序;S4、根据排序后的哈希表,获取所述entry_id值的优先级次序,并根据所述优先级次序对交换机的ACL表作相应地排序。2.根据权利要求1所述的方法,其特征在于,该方法S1步骤还包括:新建一优先级值Priority_new;判断所述优先级值Priority_new是否存在于当前哈希表中,若是,不作操作;若否,在所述哈希表及排序表中分别插入该优先级值Priority_new。3.根据权利要求2所述的方法,其特征在于,所述步骤S2还具体包括:为所述优先级值Priority_new对应维护一个或多个entry_id值entry_id_new;在该优先级值Priority_new所对应的哈希数据中插入所述一个或多个entry_id值entry_id_new。4.根据权利要求3所述的方法,其特征在于,所述“在该优先级值Priority_new所对应的哈希数据中插入所述一个或多个entry_id值entry_id_new”的步骤中,所述entry_id值entry_id_new插置于对应的哈希数据的最后面。5.根据权利要求1所述的方法,其特征在于,所述步骤S4还具体包括:按照优先级由高到低的次序,逐一读出与每一优先级值相对应的entry_id值;根据entry_id值的读出先后顺序来获取所述entry_id值的优先级次序。6.一种实现交换机芯片Openflow流表优先级的系统,其特征在于,所述系统包括:软表建立单元、用于建立一存储有若干Openflow流的优先级值的哈希表,并相应建立一将哈希表中所有优先级值从大到小进行排序的排序表;哈希数据对应单元、用于将每一优先级值与一组哈希数据相对应,每一组哈希数据包括若干与ACL表对应的entry_id值,其中,所述entry_id值存储于entry_id链表中;哈希表排序单元、用于按照所述排序表中的优先级值的次序,对所述哈希表中的所有优先级值进行重排序;ACL表排序单元、用于根据排序后的哈希表,获取所述entry_id值的优先级次序,并根据所述优先级次序对交换机的ACL表作相应地排序。7.根据权利要求6所述的系统,其特征在于,所述软表建立单元还用于:新建一优先级值Priority_new;判断所述优先级值Priority_new是否存在于当前哈希表中,若是,不作操作;若否,在所述哈希表及排序表中分别插入该优先级值Priority_new。8.根据权利要求7所述的系统,其特征在于,所述哈希数据对应单元还用于:为所述优先级值Priority_new对应维护一个或多个entry_id值entry_id_new;在该优先级值Priority_new所对应的哈希数据中插入所述一个或多个entry_id值entry_id_new。9.根据权利要求8所述的系统,其特征在于,在所述哈希数据对应单元中,所述entry_id值entry_id_new插置于对应的哈希数据的最后面。10.根据权利要求6所述的系统,其特征在于,所述ACL表排序单元还具体用于:按照优先级由高到低的次序,逐一读出与每一优先级值相对应的entry_id值;根据entry_id值的读出先后顺序来获取所述entry_id值的优先级次序。

说明书

实现交换机芯片Openflow流表优先级的方法及系统

技术领域

本发明涉及以太网通信技术,尤其涉及一种实现交换机芯片Openflow流表优先级的方法及系统。

背景技术

目前互联网发展迅速,其应用规模的庞大及其地位的重要性,远远超出了设计者们的想象,而现在的互联网主要有以下弊端:特定的范围内没有统一的管理、网络转发机制与策略单一、运营商难以最大限度优化自身网络、以及传统交换机用于转发的功能和协议多且杂,很难配置,系统容易出错等问题。为应对上述弊端,人们提出了Openflow交换机,其将传统交换机上的报文转发和转发策略分离开来,采用专门的一台控制器(controller)通过网线和交换机连接。这样原来同在一台交换机设备上的报文转发功能(硬件芯片实现)和报文转发策略(各种软件协议)就被分开到了不同的硬件设备上。而一台控制器还可以控制多台Openflow交换机,从而实现了统一的转发控制端,更有效地控制了网络。

现有技术中,普遍地通过访问控制列表(ACL)来实现流表,并通过ACL的entry_id来指定流表的优先级。然而,传统交换机芯片必须要用户指定一个值(entry_id)代表其在TCAM里的位置顺序(即优先级),而这个值必须是唯一的,而Openflow的优先级是可以有相同值的,即并不是唯一的,故,采用传统交换机ACL里的entry_id来指定流的优先级的技术无法满足Openflow的协议要求。

发明内容

本发明的目的在于提供一种实现交换机芯片Openflow流表优先级的方法。

相应于上述方法,本发明的另一发明目的还在于提供一种实现交换机芯片Openflow流表优先级的系统。

为实现上述发明目的,本发明的技术方案为:一种实现交换机芯片Openflow流表优先级的方法,其包括:

S1、建立一存储有若干Openflow流的优先级值的哈希表,并相应建立一将哈希表中所有优先级值从大到小进行排序的排序表;

S2、将每一优先级值与一组哈希数据相对应,每一组哈希数据包括若干与ACL表对应的entry_id值,其中,所述entry_id值存储于entry_id链表中;

S3、按照所述排序表中的优先级值的次序,对所述哈希表中的所有优先级值进行重排序;

S4、根据排序后的哈希表,获取所述entry_id值的优先级次序,并根据所述优先级次序对交换机的ACL表作相应地排序。

作为本发明的进一步改进,该方法S1步骤还包括:新建一优先级值Priority_new;判断所述优先级值Priority_new是否存在于当前哈希表中,若是,不作操作;若否,在所述哈希表及排序表中分别插入该优先级值Priority_new。

作为本发明的进一步改进,所述步骤S2还具体包括:为所述优先级值Priority_new对应维护一个或多个entry_id值entry_id_new;在该优先级值Priority_new所对应的哈希数据中插入所述一个或多个entry_id值entry_id_new。

作为本发明的进一步改进,所述“在该优先级值Priority_new所对应的哈希数据中插入所述一个或多个entry_id值entry_id_new”的步骤中,所述entry_id值entry_id_new插置于对应的哈希数据的最后面。

作为本发明的进一步改进,所述步骤S4还具体包括:按照优先级由高到低的次序,逐一读出与每一优先级值相对应的entry_id值;根据entry_id值的读出先后顺序来获取所述entry_id值的优先级次序。

相应地,本发明提供的一种实现交换机芯片Openflow流表优先级的系统,其包括:

软表建立单元、用于建立一存储有若干Openflow流的优先级值的哈希表,并相应建立一将哈希表中所有优先级值从大到小进行排序的排序表;

哈希数据对应单元、用于将每一优先级值与一组哈希数据相对应,每一组哈希数据包括若干与ACL表对应的entry_id值,其中,所述entry_id值存储于entry_id链表中;

哈希表排序单元、用于按照所述排序表中的优先级值的次序,对所述哈希表中的所有优先级值进行重排序;

ACL表排序单元、用于根据排序后的哈希表,获取所述entry_id值的优先级次序,并根据所述优先级次序对交换机的ACL表作相应地排序。

作为本发明的进一步改进,所述软表建立单元还用于:新建一优先级值Priority_new;判断所述优先级值Priority_new是否存在于当前哈希表中,若是,不作操作;若否,在所述哈希表及排序表中分别插入该优先级值Priority_new。

作为本发明的进一步改进,所述哈希数据对应单元还用于:为所述优先级值Priority_new对应维护一个或多个entry_id值entry_id_new;在该优先级值Priority_new所对应的哈希数据中插入所述一个或多个entry_id值entry_id_new。

作为本发明的进一步改进,在所述哈希数据对应单元中,所述entry_id值entry_id_new插置于对应的哈希数据的最后面。

作为本发明的进一步改进,所述ACL表排序单元还具体用于:按照优先级由高到低的次序,逐一读出与每一优先级值相对应的entry_id值;根据entry_id值的读出先后顺序来获取所述entry_id值的优先级次序。

本发明的有益效果是:本发明的技术方案通过建立维护Priority及entry_id的关系的哈希表及排序表,利用传统交换机的芯片上的ACL功能,实现满足Openflow协议的流表优先级功能,且实现方式简单。

附图说明

图1是本发明具体实施方式中实现交换机芯片Openflow流表优先级的方法的流程图;

图2是本发明具体实施方式中未排序的哈希表、排序表及相对应的哈希数据的示意图;

图3是本发明具体实施方式中已排序的哈希表、排序表及相对应的哈希数据的示意图;

图4是本发明具体实施方式中实现交换机芯片Openflow流表优先级的系统的单元示意图。

具体实施方式

以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。

参图1至图3所示,其为本发明实现交换机芯片Openflow流表优先级的方法的一具体实施方式。在本实施方式中,其通过构建ACL的entry_id和Openflow流的priority对应关系,重新建立传统交换机ACL的entry_id的排列顺序。如图1所示,所述实现交换机芯片Openflow流表优先级的方法,包括如下步骤:

S1、建立一存储有若干Openflow流的优先级值的哈希表,并相应建立一将哈希表中所有优先级值从大到小进行排序的排序表;

本发明为利用传统交换机的芯片上的ACL功能来完全满足Openflow协议上提出的流表优先级,首先需要建立2张软表来建立entry_id和priority的值,其具体数据结构如下:

第一张表(哈希表,Hash表),Hash键值为优先级(priority),Hash数据为一张存储entry_id的链表,由于Hash实现原理的原因,Hash表的优先级值是乱序的,如图2所示,图中哈希表包括4个优先级键值:65535、2、3、100,其排序未按照键值大小进行。

第二张表(排序表),一张存储优先级值的排序表,不同之处在于:其需要按照优先级值大小插入相应位置,以弥补哈希表内键值乱序的问题,依旧参图2所示,图中排序表包括4个优先级值,其排序为:65535、100、3、2,并且是按照从高到低的顺序依次排列。

值得一提的是,排序表可以使用“平衡二叉树”或“红黑树”结构,以加快排序速度。

S2、将每一优先级值与一组哈希数据相对应,每一组哈希数据包括若干与ACL表对应的entry_id值;

如图2所示,在本实施方式中,维护多个存储entry_id值的entry_id链表(图中链表1~11),其中,entry_id为传统交换机芯片中用户指定其代表ACL表(TCAM)的位置顺序,图中所示,四个优先级值65535、2、3、100分别各自对应一组哈希数据,而每一组哈希数据可包括一个或者多个entry_id值,比如,优先级值65535对应于第一组哈希数据:链表节点1、链表节点2、链表节点3、链表节点4;优先级值2对应于第二组哈希数据:链表节点5、链表节点7、链表节点6;优先级值3对应于第三组哈希数据:链表节点8、链表节点10;优先级值100对应于第四组哈希数据:链表节点9、链表节点11。其中,上述的每一组哈希数据中的entry_id值均是按照一定的次序进行排序。

于本发明中,因为上述哈希表及排序表中的优先级值会不断需要查找和更新,为了更好地实现本发明,上述方法的S1步骤还包括:

新建一优先级值Priority_new;该优先级值Priority_new被作为目标查找对象。

判断所述优先级值Priority_new是否存在于当前哈希表中,若是,不作操作;若否,在所述哈希表及排序表中分别插入该优先级值Priority_new。

相应地,在更具体的实施方式中,上述方法的步骤S2也还包括如下步骤:

为所述优先级值Priority_new对应维护一个或多个entry_id值entry_id_new;

在该优先级值Priority_new所对应的哈希数据中插入所述一个或多个entry_id值entry_id_new。

具体地来说明上述查找过程,其分为两种情况:

1、如果新添加流的优先级值在2张表里都没有,那么在排序表里按照优先级值大小插入优先级值,在Hash表的键值里插入优先级值,在Hash表数据里相应地新建一个或多个entry_id链表,并插入用户自己指定的一个或多个entry_id,其中,entry_id和Openflow流的对应关系需要用户自己维护。注意:排序表里插入priority值,插入后的顺序必须是倒序。如已存在优先级值:65535和3,那么新的优先级值100应当插在65535和3中间,那么就变成65535,100,3这个顺序。

2、如果新添加流的优先级值在2张表里都有,那么在排序链表里不用插入优先级值,在Hash表的键值里找到已经存在的优先级值,并在相对应的Hash表数据里插入一个或多个新的entry_id值。

值得一提的是,上述“在该优先级值Priority_new所对应的哈希数据中插入所述一个或多个entry_id值entry_id_new”的步骤中,所述entry_id值entry_id_new插置于对应的哈希数据的最后面。这样的话,TCAM排序时可以只需要排序此条目之后的,从而高了排序速度。

S3、按照所述排序表中的优先级值的次序,对所述哈希表中的所有优先级值进行重排序;参图3所示,其为排序过的哈希表示意图。

S4、根据排序后的哈希表,获取所述entry_id值的优先级次序,并根据所述优先级次序对交换机的ACL表作相应地排序。其中,所述步骤S4还具体包括:按照优先级由高到低的次序,逐一读出与每一优先级值相对应的entry_id值;根据entry_id值的读出先后顺序来获取所述entry_id值的优先级次序。如图3所示,在本实施方式中,从整理过的Hash表中最高的priortiy开始,依次得到Hash数据链表中的entry_id,然后得到次优先priority的entry_id,直到读完所有数据。最后可以得到entry_id值的优先级次序为:1,2,3,4,9,11,8,10,5,7,6。在此之后,再根据得到的entry_id值的优先级次序,我们可以把传统以太网交换机里的ACL表(TCAM)重新按照步骤5里新的顺序进行排序,就可以实现带优先级的Openflow的流表顺序了,从而满足了Openflow协议上的要求。

接下来,将介绍本发明的与上述方法相应的系统。如图4所示,所述实现交换机芯片Openflow流表优先级的系统,包括如下单元:

软表建立单元101、用于建立一存储有若干Openflow流的优先级值的哈希表,并相应建立一将哈希表中所有优先级值从大到小进行排序的排序表;

本发明为利用传统交换机的芯片上的ACL功能来完全满足Openflow协议上提出的流表优先级,首先需要建立2张软表来建立entry_id和priority的值,其具体数据结构如下:

第一张表(哈希表,Hash表),Hash键值为优先级(priority),Hash数据为一张存储entry_id的链表,由于Hash实现原理的原因,Hash表的优先级值是乱序的,如图2所示,图中哈希表包括4个优先级键值:65535、2、3、100,其排序未按照键值大小进行。

第二张表(排序表),一张存储优先级值的排序表,不同之处在于:其需要按照优先级值大小插入相应位置,以弥补哈希表内键值乱序的问题,依旧参图2所示,图中排序表包括4个优先级值,其排序为:65535、100、3、2,并且是按照从高到低的顺序依次排列。

值得一提的是,排序表可以使用“平衡二叉树”或“红黑树”结构,以加快排序速度。

哈希数据对应单元102、用于将每一优先级值与一组哈希数据相对应,每一组哈希数据包括若干与ACL表对应的entry_id值;

如图2所示,在本实施方式中,维护多个存储entry_id值的entry_id链表(图中链表1~11),其中,entry_id为传统交换机芯片中用户指定其代表ACL表(TCAM)的位置顺序,图中所示,四个优先级值65535、2、3、100分别各自对应一组哈希数据,而每一组哈希数据可包括一个或者多个entry_id值,比如,优先级值65535对应于第一组哈希数据:链表节点1、链表节点2、链表节点3、链表节点4;优先级值2对应于第二组哈希数据:链表节点5、链表节点7、链表节点6;优先级值3对应于第三组哈希数据:链表节点8、链表节点10;优先级值100对应于第四组哈希数据:链表节点9、链表节点11。其中,上述的每一组哈希数据中的entry_id值均是按照一定的次序进行排序。

于本发明中,因为上述哈希表及排序表中的优先级值会不断需要查找和更新,为了更好地实现本发明,上述软表建立单元101还用于:

新建一优先级值Priority_new;该优先级值Priority_new被作为目标查找对象。

判断所述优先级值Priority_new是否存在于当前哈希表中,若是,不作操作;若否,在所述哈希表及排序表中分别插入该优先级值Priority_new。

相应地,在更具体的实施方式中,上述哈希数据对应单元102也还用于:

为所述优先级值Priority_new对应维护一个或多个entry_id值entry_id_new;

在该优先级值Priority_new所对应的哈希数据中插入所述一个或多个entry_id值entry_id_new。

具体地来说明上述查找过程,其分为两种情况:

1、如果新添加流的优先级值在2张表里都没有,那么在排序表里按照优先级值大小插入优先级值,在Hash表的键值里插入优先级值,在Hash表数据里相应地新建一个或多个entry_id链表,并插入用户自己指定的一个或多个entry_id,其中,entry_id和Openflow流的对应关系需要用户自己维护。注意:排序表里插入priority值,插入后的顺序必须是倒序。如已存在优先级值:65535和3,那么新的优先级值100应当插在65535和3中间,那么就变成65535,100,3这个顺序。

2、如果新添加流的优先级值在2张表里都有,那么在排序链表里不用插入优先级值,在Hash表的键值里找到已经存在的优先级值,并在相对应的Hash表数据里插入一个或多个新的entry_id值。

值得一提的是,在所述哈希数据对应单元中,所述entry_id值entry_id_new插置于对应的哈希数据的最后面。这样的话,TCAM排序时可以只需要排序此条目之后的,从而提高了排序速度。

哈希表排序单元103、用于按照所述排序表中的优先级值的次序,对所述哈希表中的所有优先级值进行重新排序;参图3所示,其为排序过的哈希表示意图。

ACL表排序单元104、用于根据排序后的哈希表,获取所述entry_id值的优先级次序,并根据所述优先级次序对交换机的ACL表作相应地排序。其中,所述ACL表排序单元104还具体用于:按照优先级由高到低的次序,逐一读出与每一优先级值相对应的entry_id值;根据entry_id值的读出先后顺序来获取所述entry_id值的优先级次序。如图3所示,在本实施方式中,从整理过的Hash表中最高的priortiy开始,依次得到Hash数据链表中的entry_id,然后得到次优先priority的entry_id,直到读完所有数据。最后可以得到entry_id值的优先级次序为: 1,2,3,4,9,11,8,10,5,7,6。在此之后,再根据得到的entry_id值的优先级次序,我们可以把传统以太网交换机里的ACL表(TCAM)重新按照步骤5里新的顺序进行排序,就可以实现带优先级的Openflow的流表顺序了,从而满足了Openflow协议上的要求。

本发明所描述的方法及系统可通过建立维护Priority及entry_id的关系的哈希表及排序表,利用传统交换机的芯片上的ACL功能,实现满足Openflow协议的流表优先级功能,且流的Priority值可以是相同的,而一般的Openflow交换机用ACL功能并不能完全实现,且上述技术方案实现方式简单易行。

值得一提的是,本发明所介绍的方法中,所提及的步骤序号“S1”、“S2”…“Sn”等之间并不一定存在先后顺序,特此声明。

以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

实现交换机芯片OPENFLOW流表优先级的方法及系统.pdf_第1页
第1页 / 共12页
实现交换机芯片OPENFLOW流表优先级的方法及系统.pdf_第2页
第2页 / 共12页
实现交换机芯片OPENFLOW流表优先级的方法及系统.pdf_第3页
第3页 / 共12页
点击查看更多>>
资源描述

《实现交换机芯片OPENFLOW流表优先级的方法及系统.pdf》由会员分享,可在线阅读,更多相关《实现交换机芯片OPENFLOW流表优先级的方法及系统.pdf(12页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102843298 A (43)申请公布日 2012.12.26 C N 1 0 2 8 4 3 2 9 8 A *CN102843298A* (21)申请号 201210335079.4 (22)申请日 2012.09.12 H04L 12/56(2006.01) (71)申请人盛科网络(苏州)有限公司 地址 215021 江苏省苏州市苏州工业园区星 汉街5号B幢4楼13/16单元 (72)发明人赵怡 (74)专利代理机构苏州威世朋知识产权代理事 务所(普通合伙) 32235 代理人姚锦程 (54) 发明名称 实现交换机芯片Openflow流表优先级的方 法及系统 。

2、(57) 摘要 本发明提供一种实现交换机芯片Openflow 流表优先级的方法及系统,其方法包括:建立一 存储有若干Openflow流的优先级值的哈希表,并 相应建立一将哈希表中所有优先级值从大到小进 行排序的排序表;将每一优先级值与一组哈希数 据相对应,每一组哈希数据包括若干与ACL表对 应的entry_id值,并将所述哈希数据存储于一 entry_id链表中;按照所述排序表中的优先级值 的次序,对所述哈希表中的所有优先级值进行重 排序;根据排序后的哈希表,获取所述entry_id 值的优先级次序,并根据所述优先级次序对交换 机的ACL表作相应地排序。本发明利用传统交换 机的芯片上的ACL功。

3、能,实现满足Openflow协议 的流表优先级功能,且实现方式简单。 (51)Int.Cl. 权利要求书2页 说明书6页 附图3页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 6 页 附图 3 页 1/2页 2 1.一种实现交换机芯片Openflow流表优先级的方法,其特征在于,所述方法包括: S1、建立一存储有若干Openflow流的优先级值的哈希表,并相应建立一将哈希表中所 有优先级值从大到小进行排序的排序表; S2、将每一优先级值与一组哈希数据相对应,每一组哈希数据包括若干与ACL表对应 的entry_id值,其中,所述entry_id值存储于。

4、entry_id链表中; S3、按照所述排序表中的优先级值的次序,对所述哈希表中的所有优先级值进行重排 序; S4、根据排序后的哈希表,获取所述entry_id值的优先级次序,并根据所述优先级次 序对交换机的ACL表作相应地排序。 2.根据权利要求1所述的方法,其特征在于,该方法S1步骤还包括: 新建一优先级值Priority_new; 判断所述优先级值Priority_new是否存在于当前哈希表中,若是,不作操作;若否,在 所述哈希表及排序表中分别插入该优先级值Priority_new。 3.根据权利要求2所述的方法,其特征在于,所述步骤S2还具体包括: 为所述优先级值Priority_ne。

5、w对应维护一个或多个entry_id值entry_id_new; 在该优先级值Priority_new所对应的哈希数据中插入所述一个或多个entry_id值 entry_id_new。 4.根据权利要求3所述的方法,其特征在于,所述“在该优先级值Priority_new所对 应的哈希数据中插入所述一个或多个entry_id值entry_id_new”的步骤中,所述entry_id 值entry_id_new插置于对应的哈希数据的最后面。 5.根据权利要求1所述的方法,其特征在于,所述步骤S4还具体包括: 按照优先级由高到低的次序,逐一读出与每一优先级值相对应的entry_id值;根据 entr。

6、y_id值的读出先后顺序来获取所述entry_id值的优先级次序。 6.一种实现交换机芯片Openflow流表优先级的系统,其特征在于,所述系统包括: 软表建立单元、用于建立一存储有若干Openflow流的优先级值的哈希表,并相应建立 一将哈希表中所有优先级值从大到小进行排序的排序表; 哈希数据对应单元、用于将每一优先级值与一组哈希数据相对应,每一组哈希数据包 括若干与ACL表对应的entry_id值,其中,所述entry_id值存储于entry_id链表中; 哈希表排序单元、用于按照所述排序表中的优先级值的次序,对所述哈希表中的所有 优先级值进行重排序; ACL表排序单元、用于根据排序后的哈。

7、希表,获取所述entry_id值的优先级次序,并根 据所述优先级次序对交换机的ACL表作相应地排序。 7.根据权利要求6所述的系统,其特征在于,所述软表建立单元还用于: 新建一优先级值Priority_new; 判断所述优先级值Priority_new是否存在于当前哈希表中,若是,不作操作;若否,在 所述哈希表及排序表中分别插入该优先级值Priority_new。 8.根据权利要求7所述的系统,其特征在于,所述哈希数据对应单元还用于: 为所述优先级值Priority_new对应维护一个或多个entry_id值entry_id_new; 在该优先级值Priority_new所对应的哈希数据中插入。

8、所述一个或多个entry_id值 权 利 要 求 书CN 102843298 A 2/2页 3 entry_id_new。 9.根据权利要求8所述的系统,其特征在于,在所述哈希数据对应单元中,所述entry_ id值entry_id_new插置于对应的哈希数据的最后面。 10.根据权利要求6所述的系统,其特征在于,所述ACL表排序单元还具体用于:按照 优先级由高到低的次序,逐一读出与每一优先级值相对应的entry_id值;根据entry_id值 的读出先后顺序来获取所述entry_id值的优先级次序。 权 利 要 求 书CN 102843298 A 1/6页 4 实现交换机芯片 Openflo。

9、w 流表优先级的方法及系统 技术领域 0001 本发明涉及以太网通信技术,尤其涉及一种实现交换机芯片Openflow流表优先 级的方法及系统。 背景技术 0002 目前互联网发展迅速,其应用规模的庞大及其地位的重要性,远远超出了设计者 们的想象,而现在的互联网主要有以下弊端:特定的范围内没有统一的管理、网络转发机制 与策略单一、运营商难以最大限度优化自身网络、以及传统交换机用于转发的功能和协议 多且杂,很难配置,系统容易出错等问题。为应对上述弊端,人们提出了Openflow交换机, 其将传统交换机上的报文转发和转发策略分离开来,采用专门的一台控制器(controller) 通过网线和交换机连接。

10、。这样原来同在一台交换机设备上的报文转发功能(硬件芯片实现) 和报文转发策略(各种软件协议)就被分开到了不同的硬件设备上。而一台控制器还可以控 制多台Openflow交换机,从而实现了统一的转发控制端,更有效地控制了网络。 0003 现有技术中,普遍地通过访问控制列表(ACL)来实现流表,并通过ACL的entry_id 来指定流表的优先级。然而,传统交换机芯片必须要用户指定一个值(entry_id)代表其在 TCAM里的位置顺序(即优先级),而这个值必须是唯一的,而Openflow的优先级是可以有相 同值的,即并不是唯一的,故,采用传统交换机ACL里的entry_id来指定流的优先级的技术 无。

11、法满足Openflow的协议要求。 发明内容 0004 本发明的目的在于提供一种实现交换机芯片Openflow流表优先级的方法。 0005 相应于上述方法,本发明的另一发明目的还在于提供一种实现交换机芯片 Openflow流表优先级的系统。 0006 为实现上述发明目的,本发明的技术方案为:一种实现交换机芯片Openflow流表 优先级的方法,其包括: S1、建立一存储有若干Openflow流的优先级值的哈希表,并相应建立一将哈希表中所 有优先级值从大到小进行排序的排序表; S2、将每一优先级值与一组哈希数据相对应,每一组哈希数据包括若干与ACL表对应 的entry_id值,其中,所述entr。

12、y_id值存储于entry_id链表中; S3、按照所述排序表中的优先级值的次序,对所述哈希表中的所有优先级值进行重排 序; S4、根据排序后的哈希表,获取所述entry_id值的优先级次序,并根据所述优先级次 序对交换机的ACL表作相应地排序。 0007 作为本发明的进一步改进,该方法S1步骤还包括:新建一优先级值Priority_ new;判断所述优先级值Priority_new是否存在于当前哈希表中,若是,不作操作;若否,在 所述哈希表及排序表中分别插入该优先级值Priority_new。 说 明 书CN 102843298 A 2/6页 5 0008 作为本发明的进一步改进,所述步骤S。

13、2还具体包括:为所述优先级值Priority_ new对应维护一个或多个entry_id值entry_id_new;在该优先级值Priority_new所对应 的哈希数据中插入所述一个或多个entry_id值entry_id_new。 0009 作为本发明的进一步改进,所述“在该优先级值Priority_new所对应的哈希数据 中插入所述一个或多个entry_id值entry_id_new”的步骤中,所述entry_id值entry_id_ new插置于对应的哈希数据的最后面。 0010 作为本发明的进一步改进,所述步骤S4还具体包括:按照优先级由高到低的次 序,逐一读出与每一优先级值相对应的。

14、entry_id值;根据entry_id值的读出先后顺序来获 取所述entry_id值的优先级次序。 0011 相应地,本发明提供的一种实现交换机芯片Openflow流表优先级的系统,其包 括: 软表建立单元、用于建立一存储有若干Openflow流的优先级值的哈希表,并相应建立 一将哈希表中所有优先级值从大到小进行排序的排序表; 哈希数据对应单元、用于将每一优先级值与一组哈希数据相对应,每一组哈希数据包 括若干与ACL表对应的entry_id值,其中,所述entry_id值存储于entry_id链表中; 哈希表排序单元、用于按照所述排序表中的优先级值的次序,对所述哈希表中的所有 优先级值进行重。

15、排序; ACL表排序单元、用于根据排序后的哈希表,获取所述entry_id值的优先级次序,并根 据所述优先级次序对交换机的ACL表作相应地排序。 0012 作为本发明的进一步改进,所述软表建立单元还用于:新建一优先级值 Priority_new;判断所述优先级值Priority_new是否存在于当前哈希表中,若是,不作操 作;若否,在所述哈希表及排序表中分别插入该优先级值Priority_new。 0013 作为本发明的进一步改进,所述哈希数据对应单元还用于:为所述优先级值 Priority_new对应维护一个或多个entry_id值entry_id_new;在该优先级值Priority_ n。

16、ew所对应的哈希数据中插入所述一个或多个entry_id值entry_id_new。 0014 作为本发明的进一步改进,在所述哈希数据对应单元中,所述entry_id值entry_ id_new插置于对应的哈希数据的最后面。 0015 作为本发明的进一步改进,所述ACL表排序单元还具体用于:按照优先级由高到 低的次序,逐一读出与每一优先级值相对应的entry_id值;根据entry_id值的读出先后顺 序来获取所述entry_id值的优先级次序。 0016 本发明的有益效果是:本发明的技术方案通过建立维护Priority及entry_id的 关系的哈希表及排序表,利用传统交换机的芯片上的ACL。

17、功能,实现满足Openflow协议的 流表优先级功能,且实现方式简单。 附图说明 0017 图1是本发明具体实施方式中实现交换机芯片Openflow流表优先级的方法的流 程图; 图2是本发明具体实施方式中未排序的哈希表、排序表及相对应的哈希数据的示意 图; 说 明 书CN 102843298 A 3/6页 6 图3是本发明具体实施方式中已排序的哈希表、排序表及相对应的哈希数据的示意 图; 图4是本发明具体实施方式中实现交换机芯片Openflow流表优先级的系统的单元示 意图。 具体实施方式 0018 以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并 不限制本发明,本领域的。

18、普通技术人员根据这些实施方式所做出的结构、方法、或功能上的 变换均包含在本发明的保护范围内。 0019 参图1至图3所示,其为本发明实现交换机芯片Openflow流表优先级的方法的一 具体实施方式。在本实施方式中,其通过构建ACL的entry_id和Openflow流的priority 对应关系,重新建立传统交换机ACL的entry_id的排列顺序。如图1所示,所述实现交换 机芯片Openflow流表优先级的方法,包括如下步骤: S1、建立一存储有若干Openflow流的优先级值的哈希表,并相应建立一将哈希表中所 有优先级值从大到小进行排序的排序表; 本发明为利用传统交换机的芯片上的ACL功能。

19、来完全满足Openflow协议上提出的流 表优先级,首先需要建立2张软表来建立entry_id和priority的值,其具体数据结构如 下: 第一张表(哈希表,Hash表),Hash键值为优先级(priority),Hash数据为一张存储 entry_id的链表,由于Hash实现原理的原因,Hash表的优先级值是乱序的,如图2所示,图 中哈希表包括4个优先级键值:65535、2、3、100,其排序未按照键值大小进行。 0020 第二张表(排序表),一张存储优先级值的排序表,不同之处在于:其需要按照优先 级值大小插入相应位置,以弥补哈希表内键值乱序的问题,依旧参图2所示,图中排序表包 括4个优先。

20、级值,其排序为:65535、100、3、2,并且是按照从高到低的顺序依次排列。 0021 值得一提的是,排序表可以使用“平衡二叉树”或“红黑树”结构,以加快排序速度。 0022 S2、将每一优先级值与一组哈希数据相对应,每一组哈希数据包括若干与ACL表 对应的entry_id值; 如图2所示,在本实施方式中,维护多个存储entry_id值的entry_id链表(图中链表 111),其中,entry_id为传统交换机芯片中用户指定其代表ACL表(TCAM)的位置顺序,图 中所示,四个优先级值65535、2、3、100分别各自对应一组哈希数据,而每一组哈希数据可 包括一个或者多个entry_id值。

21、,比如,优先级值65535对应于第一组哈希数据:链表节点 1、链表节点2、链表节点3、链表节点4;优先级值2对应于第二组哈希数据:链表节点5、链 表节点7、链表节点6;优先级值3对应于第三组哈希数据:链表节点8、链表节点10;优先 级值100对应于第四组哈希数据:链表节点9、链表节点11。其中,上述的每一组哈希数据 中的entry_id值均是按照一定的次序进行排序。 0023 于本发明中,因为上述哈希表及排序表中的优先级值会不断需要查找和更新,为 了更好地实现本发明,上述方法的S1步骤还包括: 新建一优先级值Priority_new;该优先级值Priority_new被作为目标查找对象。 00。

22、24 判断所述优先级值Priority_new是否存在于当前哈希表中,若是,不作操作;若 说 明 书CN 102843298 A 4/6页 7 否,在所述哈希表及排序表中分别插入该优先级值Priority_new。 0025 相应地,在更具体的实施方式中,上述方法的步骤S2也还包括如下步骤: 为所述优先级值Priority_new对应维护一个或多个entry_id值entry_id_new; 在该优先级值Priority_new所对应的哈希数据中插入所述一个或多个entry_id值 entry_id_new。 0026 具体地来说明上述查找过程,其分为两种情况: 1、如果新添加流的优先级值在2。

23、张表里都没有,那么在排序表里按照优先级值大小插 入优先级值,在Hash表的键值里插入优先级值,在Hash表数据里相应地新建一个或多个 entry_id链表,并插入用户自己指定的一个或多个entry_id,其中,entry_id和Openflow 流的对应关系需要用户自己维护。注意:排序表里插入priority值,插入后的顺序必须是 倒序。如已存在优先级值:65535和3,那么新的优先级值100应当插在65535和3中间,那 么就变成65535,100,3这个顺序。 0027 2、如果新添加流的优先级值在2张表里都有,那么在排序链表里不用插入优先级 值,在Hash表的键值里找到已经存在的优先级值。

24、,并在相对应的Hash表数据里插入一个或 多个新的entry_id值。 0028 值得一提的是,上述“在该优先级值Priority_new所对应的哈希数据中插入所述 一个或多个entry_id值entry_id_new”的步骤中,所述entry_id值entry_id_new插置于 对应的哈希数据的最后面。这样的话,TCAM排序时可以只需要排序此条目之后的,从而高 了排序速度。 0029 S3、按照所述排序表中的优先级值的次序,对所述哈希表中的所有优先级值进行 重排序;参图3所示,其为排序过的哈希表示意图。 0030 S4、根据排序后的哈希表,获取所述entry_id值的优先级次序,并根据所述。

25、优先 级次序对交换机的ACL表作相应地排序。其中,所述步骤S4还具体包括:按照优先级由高 到低的次序,逐一读出与每一优先级值相对应的entry_id值;根据entry_id值的读出先 后顺序来获取所述entry_id值的优先级次序。如图3所示,在本实施方式中,从整理过的 Hash表中最高的priortiy开始,依次得到Hash数据链表中的entry_id,然后得到次优先 priority的entry_id,直到读完所有数据。最后可以得到entry_id值的优先级次序为:1, 2,3,4,9,11,8,10,5,7,6。在此之后,再根据得到的entry_id值的优先级次序,我们可以把 传统以太网。

26、交换机里的ACL表(TCAM)重新按照步骤5里新的顺序进行排序,就可以实现带 优先级的Openflow的流表顺序了,从而满足了Openflow协议上的要求。 0031 接下来,将介绍本发明的与上述方法相应的系统。如图4所示,所述实现交换机芯 片Openflow流表优先级的系统,包括如下单元: 软表建立单元101、用于建立一存储有若干Openflow流的优先级值的哈希表,并相应 建立一将哈希表中所有优先级值从大到小进行排序的排序表; 本发明为利用传统交换机的芯片上的ACL功能来完全满足Openflow协议上提出的流 表优先级,首先需要建立2张软表来建立entry_id和priority的值,其具。

27、体数据结构如 下: 第一张表(哈希表,Hash表),Hash键值为优先级(priority),Hash数据为一张存储 entry_id的链表,由于Hash实现原理的原因,Hash表的优先级值是乱序的,如图2所示,图 说 明 书CN 102843298 A 5/6页 8 中哈希表包括4个优先级键值:65535、2、3、100,其排序未按照键值大小进行。 0032 第二张表(排序表),一张存储优先级值的排序表,不同之处在于:其需要按照优先 级值大小插入相应位置,以弥补哈希表内键值乱序的问题,依旧参图2所示,图中排序表包 括4个优先级值,其排序为:65535、100、3、2,并且是按照从高到低的顺序。

28、依次排列。 0033 值得一提的是,排序表可以使用“平衡二叉树”或“红黑树”结构,以加快排序速度。 0034 哈希数据对应单元102、用于将每一优先级值与一组哈希数据相对应,每一组哈希 数据包括若干与ACL表对应的entry_id值; 如图2所示,在本实施方式中,维护多个存储entry_id值的entry_id链表(图中链表 111),其中,entry_id为传统交换机芯片中用户指定其代表ACL表(TCAM)的位置顺序,图 中所示,四个优先级值65535、2、3、100分别各自对应一组哈希数据,而每一组哈希数据可 包括一个或者多个entry_id值,比如,优先级值65535对应于第一组哈希数据。

29、:链表节点 1、链表节点2、链表节点3、链表节点4;优先级值2对应于第二组哈希数据:链表节点5、链 表节点7、链表节点6;优先级值3对应于第三组哈希数据:链表节点8、链表节点10;优先 级值100对应于第四组哈希数据:链表节点9、链表节点11。其中,上述的每一组哈希数据 中的entry_id值均是按照一定的次序进行排序。 0035 于本发明中,因为上述哈希表及排序表中的优先级值会不断需要查找和更新,为 了更好地实现本发明,上述软表建立单元101还用于: 新建一优先级值Priority_new;该优先级值Priority_new被作为目标查找对象。 0036 判断所述优先级值Priority_n。

30、ew是否存在于当前哈希表中,若是,不作操作;若 否,在所述哈希表及排序表中分别插入该优先级值Priority_new。 0037 相应地,在更具体的实施方式中,上述哈希数据对应单元102也还用于: 为所述优先级值Priority_new对应维护一个或多个entry_id值entry_id_new; 在该优先级值Priority_new所对应的哈希数据中插入所述一个或多个entry_id值 entry_id_new。 0038 具体地来说明上述查找过程,其分为两种情况: 1、如果新添加流的优先级值在2张表里都没有,那么在排序表里按照优先级值大小插 入优先级值,在Hash表的键值里插入优先级值,在。

31、Hash表数据里相应地新建一个或多个 entry_id链表,并插入用户自己指定的一个或多个entry_id,其中,entry_id和Openflow 流的对应关系需要用户自己维护。注意:排序表里插入priority值,插入后的顺序必须是 倒序。如已存在优先级值:65535和3,那么新的优先级值100应当插在65535和3中间,那 么就变成65535,100,3这个顺序。 0039 2、如果新添加流的优先级值在2张表里都有,那么在排序链表里不用插入优先级 值,在Hash表的键值里找到已经存在的优先级值,并在相对应的Hash表数据里插入一个或 多个新的entry_id值。 0040 值得一提的是,。

32、在所述哈希数据对应单元中,所述entry_id值entry_id_new插置 于对应的哈希数据的最后面。这样的话,TCAM排序时可以只需要排序此条目之后的,从而 提高了排序速度。 0041 哈希表排序单元103、用于按照所述排序表中的优先级值的次序,对所述哈希表中 的所有优先级值进行重新排序;参图3所示,其为排序过的哈希表示意图。 说 明 书CN 102843298 A 6/6页 9 0042 ACL表排序单元104、用于根据排序后的哈希表,获取所述entry_id值的优先级次 序,并根据所述优先级次序对交换机的ACL表作相应地排序。其中,所述ACL表排序单元 104还具体用于:按照优先级由高。

33、到低的次序,逐一读出与每一优先级值相对应的entry_ id值;根据entry_id值的读出先后顺序来获取所述entry_id值的优先级次序。如图3所 示,在本实施方式中,从整理过的Hash表中最高的priortiy开始,依次得到Hash数据链 表中的entry_id,然后得到次优先priority的entry_id,直到读完所有数据。最后可以 得到entry_id值的优先级次序为: 1,2,3,4,9,11,8,10,5,7,6。在此之后,再根据得到 的entry_id值的优先级次序,我们可以把传统以太网交换机里的ACL表(TCAM)重新按照 步骤5里新的顺序进行排序,就可以实现带优先级的O。

34、penflow的流表顺序了,从而满足了 Openflow协议上的要求。 0043 本发明所描述的方法及系统可通过建立维护Priority及entry_id的关系的哈希 表及排序表,利用传统交换机的芯片上的ACL功能,实现满足Openflow协议的流表优先级 功能,且流的Priority值可以是相同的,而一般的Openflow交换机用ACL功能并不能完全 实现,且上述技术方案实现方式简单易行。 0044 值得一提的是,本发明所介绍的方法中,所提及的步骤序号“S1”、“S2”“Sn”等 之间并不一定存在先后顺序,特此声明。 0045 以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明。

35、的单元 可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单 元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其 中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造 性劳动的情况下,即可以理解并实施。 0046 应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一 个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说 明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可 以理解的其他实施方式。 0047 上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说 明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式 或变更均应包含在本发明的保护范围之内。 说 明 书CN 102843298 A 1/3页 10 图1 说 明 书 附 图CN 102843298 A 10 2/3页 11 图2 说 明 书 附 图CN 102843298 A 11 3/3页 12 图3 图4 说 明 书 附 图CN 102843298 A 12 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1