CN104038423B - 一种Open flow流表刷新方法及路由设备 - Google Patents

一种Open flow流表刷新方法及路由设备 Download PDF

Info

Publication number
CN104038423B
CN104038423B CN201410234568.XA CN201410234568A CN104038423B CN 104038423 B CN104038423 B CN 104038423B CN 201410234568 A CN201410234568 A CN 201410234568A CN 104038423 B CN104038423 B CN 104038423B
Authority
CN
China
Prior art keywords
list item
priority
flow
open flow
new
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
Application number
CN201410234568.XA
Other languages
English (en)
Other versions
CN104038423A (zh
Inventor
王树蓬
李明玉
范路路
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Technologies Co Ltd
Original Assignee
New H3C Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by New H3C Technologies Co Ltd filed Critical New H3C Technologies Co Ltd
Priority to CN201410234568.XA priority Critical patent/CN104038423B/zh
Publication of CN104038423A publication Critical patent/CN104038423A/zh
Application granted granted Critical
Publication of CN104038423B publication Critical patent/CN104038423B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种Open flow流表刷新方法,表项查找芯片中的各表项按照优先级被划分为多个位置区间,使同一位置区间中的多个连续表项具有相同的优先级,在判断需要将所述新表项进行插入时,确定Open flow流表中优先级低于新表项的表项,并依次将与表项对应的各位置区间中的首表项置于本位置区间的尾表项之后,从而使新表相能够被插入与该新表项相同优先级的表项之后的空余位置。在保证处理正确率的前提下,有效地提高了表项查找芯片中Open flow流表的更新效率。

Description

一种Open flow流表刷新方法及路由设备
技术领域
本发明涉及通信技术领域,特别涉及一种Open flow流表刷新方法。本发明同时还涉及一种路由设备。
背景技术
TCAM(Ternary content addressable memory,三重内容可寻址内存)是一种利用TCAM芯片对大规模表项进行查找加速的查找技术。由于TCAM可以实现多路并行查询等特性,使用芯片查询可以大幅度增加查表效率,相对于传统链表的数据组织方式存在随表项数量增加查找耗时线性增加的情况,使用TCAM芯片可以做到多条表项与一条表项查找速度基本一致,优化了多表项情况下设备的查表性能。
Open flow流表的特性在于使用报文的某些特性来表示一条报文流(例如IP(Internet Protocol,互联网协议)、端口等),将符合对应信息的报文进行相应的处理。流表具有优先级属性,可以对不同的业务使用不同的优先级从而满足优先业务需求。
在现有技术中,基于TCAM芯片所进行的Open flow流表下发是将流表一次性下发到芯片中,由于TCAM芯片的固有特征,各个表项在芯片中的存储位置便代表了表项在匹配时的优先级顺序,因此在有高优先级表项插入时,需要将后续优先级表项统一向后挪动位置,导致下发效率严重降低。例如:当有一万条表项存在时,增加一条最高优先级表项,相当于需要对芯片进行一万零一次的写入操作,同时删除高优先级表项时由于需要保持芯片表项组织的可控,也需要对表项进行类似的下刷操作,效率十分低下。
由此可见,现有技术在表项查找芯片中的Open flow流表发生变化时,需要重新将整表再次下刷。这不仅增大了设备的的负担,同时也使得流表处理过程耗时长且效率低下。
发明内容
本发明提供了一种Open flow流表刷新方法,用以解决现有技术中Open flow流表处理过程耗时长且效率低下的问题,该方法包括:
根据表项查找芯片中的Open flow流表确定需要在所述Open flow流表中增加新表项;
根据所述新表项所对应的优先级以及所述Open flow流表中各表项所对应的优先级判断是否需要将所述新表项进行插入;其中,所述各表项按照优先级被划分为多个位置区间,同一位置区间中的多个连续表项具有相同的优先级;
若所述新表项需要进行插入,确定所述Open flow流表中优先级低于所述新表项的表项,并依次将与所述表项对应的各位置区间中的首表项置于本位置区间的尾表项之后;
将所述新表项插入具有与所述新表项相同优先级的表项之后的空余位置。
相应的,本发明还提出了一种路由设备,包括表项查找芯片,还包括:
确定模块,用于根据表项查找芯片中的Open flow流表确定需要在所述Open flow流表中增加新表项;
判断模块,用于根据所述新表项所对应的优先级以及所述Open flow流表中各表项所对应的优先级判断是否需要将所述新表项进行插入;其中,所述各表项按照优先级被划分为多个位置区间,同一位置区间中的多个连续表项具有相同的优先级;
置位模块,用于在所述判断模块判断所述新表项需要进行插入后,确定所述Openflow流表中优先级低于所述新表项的表项,并依次将与所述表项对应的各位置区间中的首表项置于本位置区间的尾表项之后;
插入模块,用于将所述新表项插入具有与所述新表项相同优先级的表项之后的空余位置。
通过应用以上技术方案,表项查找芯片中的各表项按照优先级被划分为多个位置区间,使同一位置区间中的多个连续表项具有相同的优先级,在判断需要将所述新表项进行插入时,确定Open flow流表中优先级低于新表项的表项,并依次将与表项对应的各位置区间中的首表项置于本位置区间的尾表项之后,从而使新表相能够被插入与该新表项相同优先级的表项之后的空余位置。在保证处理正确率的前提下,有效地提高了表项查找芯片中Open flow流表的更新效率。
附图说明
图1为本发明提出的一种Open flow流表刷新方法流程示意图;
图2为本发明提出的一种路由设备的结构示意图。
具体实施方式
如背景技术所述,现有的基于表项查找芯片进行的Open flow流表刷新,是将流表一次性下发到芯片中,当流表发生变化时需要重新将整表再次下刷。鉴于该方式所存在的效率低、易出错等问题,本发明提出了一种Open flow流表刷新方法,基于Open flow流表的特性,将TCAM芯片中的表项划分为不同的优先级,使每一个优先级内部存在多条表项。针对于不同的优先级有匹配顺序上的要求,而对于同一个优先级中的表项没有匹配顺序上的要求,这样在流表刷新时,只需完成将优先级首尾表项位置交换便可以完成新表项空间释放或删除表项空间回收,对TCAM芯片的操作次数仅相关于确实存在表项的优先级的个数。从而实现了Open flow流表的快速刷新。
如图1所示,该方法具体包括以下步骤:
S101,根据表项查找芯片中的Open flow流表确定需要在所述Open flow流表中增加新表项。
在该步骤之前,当对所述表项查找芯片进行初始化配置时,可直接按照配置顺序将初始的Open flow流表下发至所述表项查找芯片中,需要说明的是,初始的Open flow流表中的各表项均已按照优先级顺序排列完毕,本发明将各 表项按照优先级被划分为多个位置区间,使同一位置区间中的多个连续表项具有相同的优先级。
基于表项查找芯片中初始化完毕的Open flow流表,当需要对该Open flow流表中的各表项进行变动时,即可根据该下发的Open flow流表确定是需要在流表中增加新表项或是删除表项。
S102,根据所述新表项所对应的优先级以及所述Open flow流表中各表项所对应的优先级判断是否需要将所述新表项进行插入;其中,所述各表项按照优先级被划分为多个位置区间,同一位置区间中的多个连续表项具有相同的优先级。
本发明将表项查找芯片的Open flow流表中的各表项按照优先级划分为多个位置区间,使同一位置区间中的多个连续表项具有相同的优先级。随后判断新表项的优先级是否高于Open flow流表中优先级最低的表项的优先级,如果是的话则确定所述表项需要进行插入,否则确定所述新表项无需进行插入,直接将该新表项置于至Open flow流表的末位表项之后。
S103,若所述新表项需要进行插入,确定所述Open flow流表中优先级低于所述新表项的表项,并依次将与所述表项对应的各位置区间中的首表项置于本位置区间的尾表项之后。
需要说明的是,如果根据Open flow流表确定需要在Open flow流表中删除表项的话,首先根据所述待删除表项的优先级确定所述待删除表项所在的位置区间;然后将所述待删除表项所在的位置区间中的尾表项覆盖所述待删除表项,并依次将所述待删除表项所在的位置区间之后的各位置区间中的尾表项覆盖至前一位置区间的尾表项。
S104,将所述新表项插入具有与所述新表项相同优先级的表项之后的空余位置。
为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。
/*优先级维护结构体*/
表1
如上表1所示,为本发明具体实施例中TCAM芯片的的流表项位置维护结构体,TCAM芯片中流表项位置的维护仅需使用一个结构体记录每个优先级流表的第一条表项和最后一条表项位置即可。
具体地,首次(初始化)配置时按照配置顺序下发得到表2所示的流表状态:
P1R1 P1R2 P1R3 P2R2 P2R3 P2R4 P2R1 P4R2 P4R3 P4R1
表2
以上流表状态在优先级维护表中体现的状态如下:
优先级一:首表相位置0,末表相位置2,状态uiEN置1;
优先级二:首表相位置3,末表相位置6,状态uiEN置1;
优先级三:首表相位置7,末表相位置7,状态uiEN置0;
优先级四:首表相位置7,末表相位置9,状态uiEN置1;
其他优先级:首表相位置10,末表相位置10,状态uiEN置1。
基于上述配置,以下将分别对插入流表操作处理流程以及删除表相操作处理流程进行描述:
(1)插入流表操作处理流程:
在下发了新的Open flow流表后,首先根据新增加的表项的优先级判断是 否需要进行插入,若是不需要插入的话,那么直接将该表项增加到流表尾部即可。若是需要进行插入的话,那么将按照以下流程处理:
在增加一条优先级一的表相时,将优先级一之后优先级第一个表相与其之后的优先级首条表相交换位置,从而获得一条表相的插入空间,交换后的排步如下表3所示:
P1R1 P1R2 P1R3 P2R2 P2R3 P2R4 P2R1 P4R2 P4R3 P4R1
表3
这样就可以将新表相插入在优先级一的底部,实际上对于其他表相的移动只有两次,插入后的优先级维护表状态如下:
优先级一:首表相位置0,末表相位置3,状态uiEN置1
优先级二:首表相位置4,末表相位置7,状态uiEN置1
优先级三:首表相位置8,末表相位置8,状态uiEN置0
优先级四:首表相位置8,末表相位置10,状态uiEN置1
其他优先级:首表相位置11,末表相位置11,状态uiEN置1
需要指出的是,由于其中优先级三由于并不存在表相,在移动操作时首先判断uiEN状态是否置位,如果状态为0则认为该优先级表相为空,不做硬件搬移操作,只是将软件维护表信息做相应修改。
(2)删除表相操作处理流程:
以表2所示的状态为当前状态,在删除表相时,将本优先级最后一条表相移动覆盖需要删除的表相,同时将后续每个优先级的末尾表相向前移动覆盖前一优先级的末尾位置,最后一个优先级的末尾表相设置无效。这样完成一次删除并整理空间的操作,在只有三个优先级存在的情况下只需要操作三次表相。具体地,删除表相P1R2,移动后的表相如下表4所示:
P1R1 P1R3 P2R4 P2R1 P2R2 P2R3 P4R3 P4R1 P4R2
表4
为达到以上技术目的,本发明还提供了一种路由设备,如图2所示,该路由设备包括表项查找芯片210,还包括:
确定模块220,用于根据表项查找芯片210中的Open flow流表确定需要在所述Open flow流表中增加新表项;
判断模块230,用于根据所述新表项所对应的优先级以及所述Open flow流表中各表项所对应的优先级判断是否需要将所述新表项进行插入;其中,所述各表项按照优先级被划分为多个位置区间,同一位置区间中的多个连续表项具有相同的优先级;
置位模块240,用于在所述判断模块判断所述新表项需要进行插入后,确定所述Open flow流表中优先级低于所述新表项的表项,并依次将与所述表项对应的各位置区间中的首表项置于本位置区间的尾表项之后;
插入模块250,用于将所述新表项插入具有与所述新表项相同优先级的表项之后的空余位置。
在具体的应用场景中,所述判断模块230,具体用于判断所述新表项的优先级是否高于所述Open flow流表中优先级最低的表项的优先级;
若是,所述判断模块确定所述表项需要进行插入;
若否,所述判断模块确定所述新表项无需进行插入。
在具体的应用场景中,所述置位模块240,还用于在当所述判断模块230确定所述新表项不需要进行插入时,将所述新表项置于至所述Open flow流表的末位表项之后。
在具体的应用场景中,还包括:初始化模块260,用于在当对所述表项查找芯片进行初始化配置时,按照配置顺序将初始Open flow流表下发至所述表项查找芯片中。
在具体的应用场景中,还包括:删除模块270,用于根据所述Open flow流表确定需要在所述Open flow流表中删除表项,并根据所述待删除表项的优先级确定所述待删除表项所在的位置区间;
所述置位模块240,还用于将所述待删除表项所在的位置区间中的尾表项 覆盖所述待删除表项,并依次将所述待删除表项所在的位置区间之后的各位置区间中的尾表项覆盖至前一位置区间的尾表项。
由此可见,通过应用以上技术方案,表项查找芯片中的各表项按照优先级被划分为多个位置区间,使同一位置区间中的多个连续表项具有相同的优先级,在判断需要将所述新表项进行插入时,确定Open flow流表中优先级低于新表项的表项,并依次将与表项对应的各位置区间中的首表项置于本位置区间的尾表项之后,从而使新表相能够被插入与该新表项相同优先级的表项之后的空余位置。在保证处理正确率的前提下,有效地提高了表项查找芯片中Open flow流表的更新效率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

Claims (8)

1.一种Open flow流表刷新方法,其特征在于,包括:
根据表项查找芯片中的Open flow流表确定需要在所述Open flow流表中增加新表项;
根据所述新表项所对应的优先级以及所述Open flow流表中各表项所对应的优先级判断是否需要将所述新表项进行插入;其中,所述各表项按照优先级被划分为多个位置区间,同一位置区间中的多个连续表项具有相同的优先级;
若所述新表项需要进行插入,确定所述Open flow流表中优先级低于所述新表项的表项,并依次将与所述表项对应的各位置区间中的首表项置于本位置区间的尾表项之后;
将所述新表项插入具有与所述新表项相同优先级的表项之后的空余位置;
其中,在根据表项查找芯片中的Open flow流表确定需要在所述Open flow流表中增加新表项之前,还包括:
当对所述表项查找芯片进行初始化配置时,按照配置顺序将初始Open flow流表下发至所述表项查找芯片中。
2.如权利要求1所述的方法,其特征在于,根据所述新表项所对应的优先级以及所述Open flow流表中各表项所对应的优先级判断是否需要将所述新表项进行插入,具体为:
若所述新表项的优先级高于所述Open flow流表中优先级最低的表项,则确定所述表项需要进行插入,否则确定所述新表项无需进行插入。
3.如权利要求2所述的方法,其特征在于,
若确定所述新表项不需要进行插入,将所述新表项置于至所述Open flow流表的末位表项之后。
4.如权利要求1所述的方法,其特征在于,在按照位置区间为所述Open flow流表中的各表项赋予优先级之后,还包括:
根据所述Open flow流表确定需要在所述Open flow流表中删除表项,并根据待删除表项的优先级确定所述待删除表项所在的位置区间;
将所述待删除表项所在的位置区间中的尾表项覆盖所述待删除表项,并依次将所述待删除表项所在的位置区间之后的各位置区间中的尾表项覆盖至前一位置区间的尾表项。
5.一种路由设备,包括表项查找芯片,其特征在于,还包括:
确定模块,用于根据表项查找芯片中的Open flow流表确定需要在所述Open flow流表中增加新表项;
判断模块,用于根据所述新表项所对应的优先级以及所述Open flow流表中各表项所对应的优先级判断是否需要将所述新表项进行插入;其中,所述各表项按照优先级被划分为多个位置区间,同一位置区间中的多个连续表项具有相同的优先级;
置位模块,用于在所述判断模块判断所述新表项需要进行插入后,确定所述Open flow流表中优先级低于所述新表项的表项,并依次将与所述表项对应的各位置区间中的首表项置于本位置区间的尾表项之后;
插入模块,用于将所述新表项插入具有与所述新表项相同优先级的表项之后的空余位置;
其中,还包括:
初始化模块,用于在当对所述表项查找芯片进行初始化配置时,按照配置顺序将初始Open flow流表下发至所述表项查找芯片中。
6.如权利要求5所述的路由设备,其特征在于,
所述判断模块,具体用于判断所述新表项的优先级是否高于所述Open flow流表中优先级最低的表项的优先级;
若是,所述判断模块确定所述表项需要进行插入;
若否,所述判断模块确定所述新表项无需进行插入。
7.如权利要求5所述的路由设备,其特征在于,
所述置位模块,还用于在当所述判断模块确定所述新表项不需要进行插入时,将所述新表项置于至所述Open flow流表的末位表项之后。
8.如权利要求5所述的路由设备,其特征在于,还包括:
删除模块,用于根据所述Open flow流表确定需要在所述Open flow流表中删除表项,并根据待删除表项的优先级确定所述待删除表项所在的位置区间;
所述置位模块,还用于将所述待删除表项所在的位置区间中的尾表项覆盖所述待删除表项,并依次将所述待删除表项所在的位置区间之后的各位置区间中的尾表项覆盖至前一位置区间的尾表项。
CN201410234568.XA 2014-05-29 2014-05-29 一种Open flow流表刷新方法及路由设备 Active CN104038423B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410234568.XA CN104038423B (zh) 2014-05-29 2014-05-29 一种Open flow流表刷新方法及路由设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410234568.XA CN104038423B (zh) 2014-05-29 2014-05-29 一种Open flow流表刷新方法及路由设备

Publications (2)

Publication Number Publication Date
CN104038423A CN104038423A (zh) 2014-09-10
CN104038423B true CN104038423B (zh) 2017-11-14

Family

ID=51469015

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410234568.XA Active CN104038423B (zh) 2014-05-29 2014-05-29 一种Open flow流表刷新方法及路由设备

Country Status (1)

Country Link
CN (1) CN104038423B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107347036A (zh) * 2016-05-06 2017-11-14 中华电信股份有限公司 用于开放流中优化流的系统及方法
CN105915465B (zh) * 2016-06-30 2020-04-21 华为技术有限公司 BGP flow-spec表优先级调整的方法、设备及系统
CN106503203B (zh) * 2016-10-26 2019-08-13 中国科学院声学研究所 一种智能化流表更新方法
CN108989219B (zh) * 2018-07-11 2021-09-28 中国人民解放军陆军工程大学 一种基于多级流表的多优先级路由转发系统及方法
CN109981363B (zh) * 2019-03-22 2022-03-01 武汉飞思灵微电子技术有限公司 一种南向接口的适配方法及系统
CN114356418B (zh) * 2022-03-10 2022-08-05 之江实验室 一种智能表项控制器及控制方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100705593B1 (ko) * 2006-01-25 2007-04-09 삼성전자주식회사 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법
CN100583829C (zh) * 2007-03-20 2010-01-20 华为技术有限公司 访问控制列表规则生效的方法及装置
CN101447940B (zh) * 2008-12-23 2011-03-30 杭州华三通信技术有限公司 访问控制列表规则的更新方法和装置

Also Published As

Publication number Publication date
CN104038423A (zh) 2014-09-10

Similar Documents

Publication Publication Date Title
CN104038423B (zh) 一种Open flow流表刷新方法及路由设备
US11403025B2 (en) Matrix transfer accelerator system and method
CN105117417B (zh) 一种读优化的内存数据库Trie树索引方法
CN102484610B (zh) 路由表建立方法和装置及路由表查找方法和装置
CN103238145B (zh) 用于网络装备中的高性能、可更新和确定的哈希表的方法和设备
CN102377664B (zh) 一种基于tcam的区域匹配装置和方法
US8341187B2 (en) Method and device for storage
CN101621502A (zh) 存储、查找路由表的方法及装置
EP3145134B1 (en) Lookup device and lookup configuration method
CN111400306B (zh) 基于rdma与非易失性内存的基数树访问系统
CN106682184B (zh) 一种基于日志合并树结构的轻量级合并方法
US6867991B1 (en) Content addressable memory devices with virtual partitioning and methods of operating the same
CN101277252A (zh) 多分支Trie树的遍历方法
CN108322394A (zh) 路由表建立、查找、删除及状态变更方法和装置
CN112425131A (zh) 一种acl 的规则分类方法、查找方法和装置
CN100479436C (zh) 静态多接口范围匹配表的管理维护方法
CN107330094A (zh) 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法
CN109981464A (zh) 一种在fpga中实现的tcam电路结构及其匹配方法
CN103930890B (zh) 数据处理方法、装置及重删处理器
CN105359142A (zh) 哈希连接方法、装置和数据库管理系统
CN106294191A (zh) 处理表的方法、访问表的方法和装置
CN102110117B (zh) 用于最长匹配的b树的表项添加、查找、删除方法及装置
CN109933584B (zh) 一种多级无序索引方法与系统
CN105931054A (zh) 一种交易请求处理方法、网关设备、代理设备及业务设备
CN104753788A (zh) 一种基于索引分配的数据转发方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Applicant after: Xinhua three Technology Co., Ltd.

Address before: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Applicant before: Huasan Communication Technology Co., Ltd.

CB03 Change of inventor or designer information

Inventor after: Wang Shupeng

Inventor after: Li Mingyu

Inventor after: Fan Lulu

Inventor before: Wang Shupeng

Inventor before: Li Mingyu

Inventor before: Fan Lu

GR01 Patent grant
GR01 Patent grant