一种移动tcam表项的方法、装置、设备及介质
技术领域
1.本发明实施例涉及数据通信领域,具体涉及一种移动tcam表项的方法、装置、设备及介质。
背景技术:2.在路由器和交换机等网络设备中,使用访问控制列表(access control list,acl)控制用户对网络的访问,保障网络安全。acl是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。acl存储在交换芯片的三态内存寻址寄存器中(ternary content cddressable memory,tcam),称为tcam表项。tcam表项间存在优先级关系,优先级高的表项,安装的硬件位置较小。因此每次新增tcam表项,可能需要移动已安装的tcam表项。
3.图1为现有技术中tcam移动过程示意图,如图1所示,安装一条优先级最高的tcam表项,需要从下往上依次移动已安装的所有tcam表项,当已安装表数量较多时,会严重影响表项的配置性能,可能导致表项迟迟无法生效。因此,提高tcam表项的移动性能是解决表项安装时间过长的关键。
4.目前,提高tcam表项配置性能的实现方案有:(1)芯片升级,使用性能更强的交换芯片;(2)tcam空间预留:在安装tcam表项时分散安装,预留一定空间,减少移动次数。方案(1)可直接提高表项配置性能,但网络设备数量庞大,更换交换芯片成本过高。方案(2)的效果与已安装表项在tcam中的占比相关,当已安装表项占比较小时,能在一定程度上减少表项移动次数,提高表项移动性能;但当已安装表项占比较高时,基本失效,tcam表项移动仍是性能瓶颈。
技术实现要素:5.针对现有技术中的缺陷,本发明实施例提供了一种移动tcam表项的方法、装置、设备及介质。
6.第一方面,本发明实施例提供一种移动优先级表项的方法,包括:
7.接收待移动的优先级表项,按照优先级顺序将所述待移动的优先级表项插入到移动链表中;
8.若所述移动链表中的优先级表项的数量大于预设阈值,则将所述移动链表中的所有优先级表项搬移至硬件表项中。
9.如上述方法,可选地,所述将所述移动链表中的所有优先级表项搬移至硬件表项中,包括:
10.确定所述所有优先级表项中每个优先级表项的搬移顺序和在所述硬件表项中的移动位置;
11.按照所述搬移顺序依次将所述所有优先级表项中的每个优先级表项搬移到所述硬件表项中对应的移动位置。
12.如上述方法,可选地,所述确定所述所有优先级表项中每个优先级表项的搬移顺序,包括:
13.确定所述所有优先级表项中每个优先级表项的移动方向;其中,向上移动时,优先级表项在所述硬件表项中的位置编号减小,向下移动时,优先级表项在所述硬件表项中的位置编号增大,位置编号越大,对应的优先级越低;
14.初始化操作链表;
15.依次遍历所述移动链表中的每个优先级表项,若操作链表中上一个新增的优先级表项不为空,且所述上一个新增的优先级表项的移动方向与移动链表中的第一优先级表项的移动方向一致,且所述移动方向为向下移动,则将所述第一优先级表项插入到所述操作链表中上一个新增的优先级表项之前;
16.否则,将所述第一优先级表项插入到所述操作链表的尾部;
17.所述移动链表中的所有优先级表项都插入到所述操作链表之后,按照所述操作链表确定所述所有优先级表项的搬移顺序。
18.如上述方法,可选地,接收待移动的优先级表项,按照优先级顺序将所述待移动的优先级表项插入到移动链表中,包括;
19.若所述移动链表中存在所述待移动的优先级表项,则更新所述待移动的优先级表项在所述移动链表中的位置;
20.否则,计算所述待移动的优先级表项的优先级,并按照优先级顺序将所述待移动的优先级表项插入到移动链表中。
21.如上述方法,可选地,所述优先级表项包括:tcam表项、路由器优先级表项或qos策略优先级表项。
22.第二方面,本发明实施例提供一种移动优先级表项的装置,包括:
23.缓存模块,用于接收待移动的优先级表项,按照优先级顺序将所述待移动的优先级表项插入到移动链表中;
24.处理模块,用于若所述移动链表中的优先级表项的数量大于预设阈值,则将所述移动链表中的所有优先级表项搬移至硬件表项中。
25.如上述装置,可选地,所述处理模块包括:
26.确定单元,用于确定所述所有优先级表项中每个优先级表项的搬移顺序和在所述硬件表项中的移动位置;
27.搬移单元,用于按照所述搬移顺序依次将所述所有优先级表项中的每个优先级表项搬移到所述硬件表项中对应的移动位置。
28.如上述装置,可选地,所述确定单元具体用于:
29.确定所述所有优先级表项中每个优先级表项的移动方向;其中,向上移动时,优先级表项在所述硬件表项中的位置编号减小,向下移动时,优先级表项在硬件表项中的位置编号增大,位置编号越大,对应的优先级越低;
30.初始化操作链表;
31.依次遍历所述移动链表中的每个优先级表项,若操作链表中上一个新增的优先级表项不为空,且所述上一个新增的优先级表项的移动方向与移动链表中的第一优先级表项的移动方向一致,且所述移动方向为向下移动,则将所述第一优先级表项插入到所述操作
链表中上一个新增的优先级表项之前;
32.否则,将所述第一优先级表项插入到所述操作链表的尾部;
33.所述移动链表中的所有优先级表项都插入到所述操作链表之后,按照所述操作链表确定所述所有优先级表项的搬移顺序。
34.如上述装置,可选地,所述缓存模块具体用于:
35.若所述移动链表中存在所述待移动的优先级表项,则更新所述待移动的优先级表项在所述移动链表中的位置;
36.否则,计算所述待移动的优先级表项的优先级,并按照优先级顺序将所述待移动的优先级表项插入到移动链表中。
37.如上述装置,可选地,所述优先级表项包括:tcam表项、路由器优先级表项或qos策略优先级表项。
38.第三方面,本发明实施例提供一种电子设备,包括:
39.存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如下方法:接收待移动的优先级表项,按照优先级顺序将所述待移动的优先级表项插入到移动链表中;若所述移动链表中的优先级表项的数量大于预设阈值,则将所述移动链表中的所有优先级表项搬移至硬件表项中。
40.第四方面,本发明实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如下方法:接收待移动的优先级表项,按照优先级顺序将所述待移动的优先级表项插入到移动链表中;若所述移动链表中的优先级表项的数量大于预设阈值,则将所述移动链表中的所有优先级表项搬移至硬件表项中。
41.本发明实施例提供的移动优先级表项的方法,批量缓存一定数量的优先级表项,利用移动链表按优先级排序,并一次性将移动链表中的优先级表项搬移到硬件表项中,相比于逐条移动优先级表项的方法,批量移动可以整合中间移动过程,大大减少表项操作扇出比,提高了优先级表项的配置性能。
附图说明
42.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
43.图1为现有技术中tcam移动过程示意图;
44.图2为本发明实施例提供的移动优先级表项的方法流程示意图;
45.图3为本发明又一例提供的移动优先级表项的方法流程示意图;
46.图4为本发明实施例提供的移动优先级表项的方法中操作链表的生成流程示意图;
47.图5为本发明实施例提供的优先级表项移动示例图;
48.图6为根据图5所示确定的移动链表示意图;
49.图7为根据图6所示确定的操作链表示意图;
50.图8为本发明实施例提供的移动优先级表项的装置的结构示意图;
51.图9为本发明实施例提供的电子设备的结构示意图。
具体实施方式
52.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
53.图2为本发明实施例提供的移动优先级表项的方法流程示意图,如图2所示,该方法包括:
54.步骤s21、接收待移动的优先级表项,按照优先级顺序将所述待移动的优先级表项插入到移动链表中;
55.具体地,当需要向硬件表项中安装或更新优先级表项时,首先接收待移动的优先级表项,待移动的优先级表项包括了硬件表项中已经安装的需要更新位置的移动表项和硬件表项中未安装的优先级表项,与现有技术中接收到待移动的优先级表项之后直接在硬件表项中安装或移动的做法不同,本发明实施例中,接收到待移动的优先级表项之后,先批量缓存一部分优先级表项,对缓存的优先级表项进行处理之后,再一次性将缓存的优先级表项搬移到硬件表项中,从而提高优先级表项的移动性能。具体地,将待移动的优先级表项按照优先级顺序插入到移动链表中,其中,优先级表项是指具有优先级顺序的表项,例如tcam(ternary content cddressable memory,三态内存寻址寄存器中)表项、路由器优先级表项或qos(quality of service,服务质量)策略优先级表项等。
56.实际应用中,若移动链表中存在待移动的优先级表项,则更新该待移动的优先级表项在移动链表中的位置;否则,计算待移动的优先级表项的优先级,并按照优先级顺序将该待移动的优先级表项插入到移动链表中。
57.步骤s22、若所述移动链表中的优先级表项的数量大于预设阈值,则将所述移动链表中的所有优先级表项搬移至硬件表项中。
58.具体地,当移动链表中的优先级表项的数量大于预设阈值时,表示移动链表中缓存了一定量的待移动的优先级表项,则将移动链表中的所有优先级表项一次性搬移至硬件表项中。具体地,首先确定移动链表中的所有优先级表项中每个优先级表项的搬移顺序和在硬件表项中的移动位置;按照搬移顺序依次将所有优先级表项中的每个优先级表项搬移到硬件表项中对应的移动位置。其中,搬移顺序是指通过计算得到的将优先级表项直接一次性搬移到最终移动位置的顺序,这样,批量缓存一定量的优先级表项,利用移动链表按优先级排序,整合中间移动过程,快速计算无位置冲突的移动顺序,能够提高移动表项的移动性能。
59.图3为本发明又一例提供的移动优先级表项的方法流程示意图,如图3所示,该方法包括:
60.s31、接收待移动的优先级表项;
61.s32、判断移动链表中是否存在该优先级表项,若存在,则执行s33,否则,跳转至s34;
62.s33、更新优先级表项在移动链表中的位置;
63.s34、按照优先级顺序将该优先级表项加入到移动链表中;
64.s35、判断移动链表中的优先级表项数量是否达到预设阈值,若是,则执行s36,否则跳转至s31;
65.s36、计算移动链表中每个优先级表项的搬移顺序和移动位置;
66.s37、按照搬移顺序依次移动移动链表中的每个优先级表项至其在硬件表项中对应的移动位置。
67.图3所示的批量移动优先级表项的流程中,缓存一定数量的优先级表项,按优先级排序,缓存于移动链表中,根据有序的移动链表计算出不会产生位置冲突的搬移顺序,按顺序计算结果执行移动操作,其中位置冲突指的是,待移动的优先级表项a,其移动目的位置存在待移动优先级表项b,若直接移动优先级表项a,则会与优先级表项b产生位置冲突。
68.本发明实施例中接收待移动的优先级表项,若是全新的优先级表项,则利用跳表,按优先级顺序插入到移动链表中;若移动链表中已存在接收到的该优先级表项,则更新优先级表项的位置,在逐条添加优先级表项时,已安装的优先级表项可能会移动多次,缓存优先级移动表项整合移动的中间过程,能减少整体移动次数,提高性能。例如,配置一条高优先级tcam表项,需要移动n条已安装表项,则逐条配置m条高优先级表项,需要移动已安装表项m
×
n次;批量配置m条tcam表项,一次性移动n条已安装表项到最终确定的位置,只需移动n次。在配置acl时,并不感知移动过程,只关注添加和删除,添加acl时,移动操作数会影响新添加acl的生效时间,操作数太多可能导致acl迟迟无法生效。因此,采用本发明实施例提供的方法可显著减少配置acl时tcam表项的移动操作数,缩短延迟生效时间,有效提高acl的整体配置性能。
69.本发明实施例提供的移动优先级表项的方法,批量缓存一定数量的优先级表项,利用移动链表按优先级排序,并一次性将移动链表中的优先级表项搬移到硬件表项中,相比于逐条移动优先级表项的方法,批量移动可以整合中间移动过程,大大减少表项操作扇出比,提高了优先级表项的配置性能。
70.在上述实施例的基础上,进一步地,所述确定所述所有优先级表项中每个优先级表项的搬移顺序,包括:
71.确定所述所有优先级表项中每个优先级表项的移动方向;其中,向上移动时,优先级表项在所述硬件表项中的位置编号减小,向下移动时,优先级表项在所述硬件表项中的位置编号增大,位置编号越大,对应的优先级越低;
72.初始化操作链表;
73.依次遍历所述移动链表中的每个优先级表项,若操作链表中上一个新增的优先级表项不为空,且所述上一个新增的优先级表项的移动方向与移动链表中的第一优先级表项的移动方向一致,且所述移动方向为向下移动,则将所述第一优先级表项插入到所述操作链表中上一个新增的优先级表项之前;其中此处的第一优先级表项是指移动链表中当前处理的优先级表项。
74.否则,将所述第一优先级表项插入到所述操作链表的尾部;
75.所述移动链表中的所有优先级表项都插入到所述操作链表之后,按照所述操作链表确定所述所有优先级表项的搬移顺序。
76.具体地,首先确定每个优先级表项的移动方向,移动方向是指优先级表项在硬件表项中的移动方向,移动方向包括向上移动和向下移动,向上移动时,优先级表项在硬件表项中的位置编号减小,向下移动时,优先级表项在硬件表项中的位置编号增大,在硬件表项中,位置编号越大,安装位置越靠后,优先级越低。
77.之后初始化操作链表,操作链表是指优先级表项搬移到硬件表项中的搬移操作顺序。然后依次遍历移动链表中的每个优先级表项,根据优先级表项的移动方向,确定优先级表项要添加到操作链表的位置即操作执行顺序。操作执行顺序计算原则是:不存在位置冲突的直接加入操作链表尾部,存在位置冲突的则调整顺序后插入操作链表。由于移动链表具有优先级顺序,优先级表项的优先级与位置正相关,优先级小的表项不可能移动到优先级大的表项之前。因此,向上移动的优先级表项的操作顺序与优先级顺序一致,仅有向下移动的优先级表项可能存在位置冲突,应按照与优先级相反的顺序执行。
78.具体地,图4为本发明实施例提供的移动优先级表项的方法中操作链表的生成流程示意图,node表示移动链表中当前处理的优先级表项,即当前待加入操作链表中的优先级表项,direct为node的移动方向,pre_node为上一个加入到操作链表中的优先级表项,pre_direct为pre_node的移动方向,如图4所示,该流程包括:
79.s41、初始化操作链表,令pre_direct=0,pre_node=null;direct=0;node=移动链表首节点;
80.s42、判断node是否为空,若是则结束,否则执行s43;
81.s43、将direct设置为node的移动方向;
82.s44、判断pre_node是否为空,若是,则跳转至s48,否则执行s45;
83.s45、判断pre_direct是否不同于direct,若不同则跳转至s48,否则执行s46;
84.s46、判断direct是否为向上移动,若是则跳转至s48,否则执行s47;
85.s47、将node插入到操作链表中,具体地将node插入到操作链表中pre_node之前;
86.s48、将node插入到操作链表尾部;
87.s49、更新参数,计算下一个优先级表项的操作顺序,令pre_node为操作链表新增节点,pre_direct为direct,node为下一个node,即node为移动链表中下一个要添加至操作链表的优先级表项,继续执行步骤s42-s49,直至移动链表中所有优先级表项均加入到操作链表中为止。
88.例如,图5为本发明实施例提供的优先级表项移动示例图,如图5所示,优先级表项pce(i)的优先级为:pce(i)》pce(i+1),1≤i≤10,pce2至pce11需要移动位置,箭头表示pce(i)的移动方向,其中pce2至pce8为向下移动,pce9至pce11为向上移动。图6为根据图5所示确定的移动链表示意图,如图6所示,移动链表按优先级顺序对待移动的pce2至pce11进行了排序。
89.图7为根据图6所示确定的操作链表示意图,如图7所示,首先加入操作链表的为pce2,用
①
表示加入到操作链表的顺序(后续不再赘述),由于pce2是首个加入到操作链表的优先级表项,因此,直接加入到操作链表尾部即可,然后对于pce3,其移动方向是向下,且与上一个加入到操作链表的pce2移动方向相同,因此,直接将pce3加到pce2之前即可,同理,pce4-pce8均加入到上一个加入到操作链表的优先级表项之前,对于pce9,其移动方向为向上,因此需要直接加入到操作链表尾部,即加入到pce2之后,同理,pce10和pce11也依
次加入到操作链表尾部,从而形成如图7所示的操作链表,即pce8先移动到其对应的位置,再依次移动pce7、pce6、pce5、pce4、pce3、pce2、pce9、pce10、pce11,这样每个优先级表项仅需移动一次就可以直接移动到最终位置。
90.本发明实施例提供的移动优先级表项的方法,批量缓存一定数量的优先级表项,利用移动链表按优先级排序,整合中间移动过程,快速计算出无位置冲突的移动顺序,并一次性将移动链表中的优先级表项搬移到硬件表项中,相比于逐条移动优先级表项的方法,可缩短优先级表项移动时间,提高优先级表项配置性能。
91.基于同一发明构思,本发明实施例还提供一种移动优先级表项的装置,如图8所示,包括:缓存模块81和处理模块82,其中:
92.缓存模块81用于接收待移动的优先级表项,按照优先级顺序将所述待移动的优先级表项插入到移动链表中;处理模块82用于若所述移动链表中的优先级表项的数量大于预设阈值,则将所述移动链表中的所有优先级表项搬移至硬件表项中。
93.如上述装置,可选地,所述处理模块82包括:
94.确定单元,用于确定所述所有优先级表项中每个优先级表项的搬移顺序和在所述硬件表项中的移动位置;
95.搬移单元,用于按照所述搬移顺序依次将所述所有优先级表项中的每个优先级表项搬移到所述硬件表项中对应的移动位置。
96.如上述装置,可选地,所述确定单元具体用于:
97.确定所述所有优先级表项中每个优先级表项的移动方向;其中,向上移动时,优先级表项在所述硬件表项中的位置编号减小,向下移动时,优先级表项在硬件表项中的位置编号增大,位置编号越大,对应的优先级越低;
98.初始化操作链表;
99.依次遍历所述移动链表中的每个优先级表项,若操作链表中上一个新增的优先级表项不为空,且所述上一个新增的优先级表项的移动方向与移动链表中的第一优先级表项的移动方向一致,且所述移动方向为向下移动,则将所述第一优先级表项插入到所述操作链表中上一个新增的优先级表项之前;
100.否则,将所述第一优先级表项插入到所述操作链表的尾部;
101.所述移动链表中的所有优先级表项都插入到所述操作链表之后,按照所述操作链表确定所述所有优先级表项的搬移顺序。
102.如上述装置,可选地,所述缓存模块81具体用于:
103.若所述移动链表中存在所述待移动的优先级表项,则更新所述待移动的优先级表项在所述移动链表中的位置;
104.否则,计算所述待移动的优先级表项的优先级,并按照优先级顺序将所述待移动的优先级表项插入到移动链表中。
105.如上述装置,可选地,所述优先级表项包括:tcam表项、路由器优先级表项或qos策略优先级表项。
106.本发明实施例提供的装置,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
107.图9本发明实施例提供的电子设备的结构示意图,如图9所示,所述设备包括:处理
器(processor)91存储器(memory)92和总线93;
108.其中,处理器91和存储器92通过所述总线93完成相互间的通信;
109.处理器91用于调用存储器92中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:接收待移动的优先级表项,按照优先级顺序将所述待移动的优先级表项插入到移动链表中;若所述移动链表中的优先级表项的数量大于预设阈值,则将所述移动链表中的所有优先级表项搬移至硬件表项中。
110.本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:接收待移动的优先级表项,按照优先级顺序将所述待移动的优先级表项插入到移动链表中;若所述移动链表中的优先级表项的数量大于预设阈值,则将所述移动链表中的所有优先级表项搬移至硬件表项中。
111.本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:接收待移动的优先级表项,按照优先级顺序将所述待移动的优先级表项插入到移动链表中;若所述移动链表中的优先级表项的数量大于预设阈值,则将所述移动链表中的所有优先级表项搬移至硬件表项中。
112.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
113.以上所描述的装置等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
114.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
115.最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的各实施例技术方案的范围。