一种基于索引分配的数据转发方法及装置的制造方法
【技术领域】
[0001]本发明涉及转发技术,尤其涉及一种基于索引分配的数据转发方法及装置。
【背景技术】
[0002]本申请发明人在实现本申请实施例技术方案的过程中,至少发现现有技术中存在如下技术问题:
[0003]TCAM是目前转发设备中普遍应用的一种查找芯片,TCAM是一种三态内容寻址存储器,主要用于快速查找访问控制列表(ACL, Access Control List)、路由等表项,具有查找延时稳定,速度快,容量大等特点。不同于普通的存储设备,TCAM的每个bit可存储三种状态,即0,1,X。其中,X状态即为不关心,也就是本bit无论是O或I都认为匹配命中。在转发设备中这种应用非常常见,典型的如路由匹配时掩码掩去的字段即为不关心字段。为了实现本功能,TCAM中数据引入了 MASK字段,即掩码字段,掩码为O的数据字段即为X,匹配关系如图1所示,图1中的Mask Array Bit指掩码字段的比特位,Data Array Bit指数据字段的比特位,Search Key Bit指查找关键字字段的比特位,Match Result指匹配结果。TCAM的内存模型映射关系如图2所示,图2中的address指地址,content指内容。
[0004]目前的转发设备中,TCAM被广泛应用于路由、ACL、控制面安全、HQOS等业务。由于TCAM中引入了掩码,那么必然会带来同时命中的情况,举例如下。
[0005]TCAM中存储了两条记录:
[0006]记录1:data:1000 1000 1100 0000
[0007]mask:1111 1111 1100 0000
[0008]记录2:data:1000 1000 1110 0000
[0009]mask:1111 1111 1110 0000
[0010]若匹配数据为1000100011111111,此时实际上按上述中表格的比较方式,这两条记录都可以命中,那么此时TCAM中应该返回命中哪一条记录呢。为了解决本问题,TCAM默认返回地址较低的一条记录。由于TCAM的这一低地址优先返回的特性与转发业务中的优先级匹配特性相切合,必然会带来一个问题,该如何保证把优先级高的记录写在TCAM的低地址端,以保证在冲突时优先命中本记录,使得多个记录查找均命中时转发优先级高的记录。对于这个问题,现有技术中并未存在有效的解决方案。
【发明内容】
[0011]为解决现有技术存在的问题,本发明实施例希望提供一种基于索引分配的数据转发方法及装置,实现了把优先级高的记录写在TCAM的低地址端,以避免冲突,使得多个数据转发记录查找均命中时先行转发优先级高的数据记录。
[0012]本发明实施例基于索引分配的数据转发方法,所述方法包括:
[0013]进行索引分配,建立数据转发优先级与索引间的映射关系;
[0014]根据所述数据转发优先级与索引间的映射关系,将数据转发业务中优先级高的数据写入三态内容寻址存储器TCAM中低索引的地址;
[0015]对所述数据转发业务中的所述优先级高的数据先行转发。
[0016]优选地,所述进行索引分配,建立数据转发优先级与索引间的映射关系,包括:
[0017]下发数据中不携带优先级字段时,根据数据下发顺序得到所述数据转发优先级;
[0018]根据每次为所述下发数据申请索引时为所述下发数据对应分配有序排列的索引链表中的最小值,建立数据转发优先级与索引间的映射关系。
[0019]优选地,所述进行索引分配,建立数据转发优先级与索引间的映射关系,包括:
[0020]下发数据中携带优先级字段,且所述优先级字段中的优先级数目不超过阈值时,将整个索引空间按优先级数目划分成相应的子索引空间,建立数据转发优先级与索引间的映射关系;同一子索引空间不考虑优先级,对应同一优先级的所有数据。
[0021]优选地,所述方法还包括:每个子索引空间至少分为第一存储区和第二存储区,所述第一存储区用于存储当前已使用的索引,所述第二存储区用于存储当前未使用的索引;
[0022]通过所述第一存储区和所述第二存储区完成对索引的分配与回收。
[0023]优选地,所述通过所述第一存储区和所述第二存储区完成对索引的分配与回收,包括:
[0024]当分配索引时,将索引节点从第二存储区中取出,按索引大小插入第一存储区中,实现索引的分配;
[0025]当释放索引时,将索引节点从其优先级对应的第一存储区中移出,放入到第二存储区中。
[0026]优选地,所述进行索引分配,建立数据转发优先级与索引间的映射关系,包括:
[0027]下发数据中携带优先级字段,且所述优先级字段中的优先级数目超过阈值时,维护基于每一个优先级数据的索引空间排布,建立数据转发优先级与索引间的映射关系;所述索引空间排布考虑优先级。
[0028]优选地,所述方法还包括:所述索引空间排布中记录每个优先级数据对应的起始索引和结束索引,索引的分配与回收均基于每一个优先级数据进行,并使得优先级高的数据分配获得索引为小,优先级低的数据分配获得的索引为大。
[0029]本发明实施例基于索引分配的数据转发装置,所述装置包括:
[0030]索引分配单元,用于进行索引分配,建立数据转发优先级与索引间的映射关系;
[0031]数据写入单元,用于根据所述数据转发优先级与索引间的映射关系,将数据转发业务中优先级高的数据写入三态内容寻址存储器TCAM中低索引的地址;
[0032]数据转发单元,用于对所述数据转发业务中的所述优先级高的数据先行转发。
[0033]优选地,所述索引分配单元,进一步用于下发数据中不携带优先级字段时,根据数据下发顺序得到所述数据转发优先级;根据每次为所述下发数据申请索引时为所述下发数据对应分配有序排列的索引链表中的最小值,建立数据转发优先级与索引间的映射关系。
[0034]优选地,所述索引分配单元,进一步用于下发数据中携带优先级字段,且所述优先级字段中的优先级数目不超过阈值时,将整个索引空间按优先级数目划分成相应的子索引空间,建立数据转发优先级与索引间的映射关系;同一子索引空间不考虑优先级,对应同一优先级的所有数据。
[0035]优选地,所述索引分配单元,进一步用于下发数据中携带优先级字段,且所述优先级字段中的优先级数目超过阈值时,维护基于每一个优先级数据的索引空间排布,建立数据转发优先级与索引间的映射关系;所述索引空间排布考虑优先级。
[0036]本发明实施例的方法包括:进行索引分配,建立数据转发优先级与索引间的映射关系;根据所述数据转发优先级与索引间的映射关系,将数据转发业务中优先级高的数据写入三态内容寻址存储器TCAM中低索引的地址;对所述数据转发业务中的所述优先级高的数据先行转发。采用本发明实施例,由于根据所述数据转发优先级与索引间的映射关系,将数据转发业务中优先级高的数据写入三态内容寻址存储器TCAM中低索引的地址,因此,实现了把优先级高的记录写在TCAM的低地址端,以避免冲突,使得多个数据转发记录查找均命中时先行转发优先级高的数据记录。
【附图说明】
[0037]图1为现有技术TCAM匹配关系示意图;
[0038]图2为现有技术TCAM内存模型映射关系图;
[0039]图3为本发明实施例的方法流程示意图;
[0040]图4为本发明实施例的装置组成结构示意图;
[0041]图5为本发明实施例索引排布起始状态的示意图;
[0042]图6为本发明第一实施例多次索引分配删除操作之后状态的示意图;
[0043]图7为本发明第一实施例索引借位前示意图;
[0044]图8为本发明第一实施例索引借位后示意图;
[0045]图9本发明第二实施例节点分配索引连续示意图;
[0046]图10为本发明第二实施例节点分配索引非连续情况的示意图;
[0047]图11为本发明第二实施例挤压前索引分布图;
[0048]图12为本发明第二实施例挤压时索引处理图;
[0049]图13为本发明第二实施例挤压后索引分布图;
[0050]图14为本发明第二实施例索引删除示意图。
【具体实施方式】
[0051]下面结合附图对技术方案的实施作进一步的详细描述。
[0052]本发明基于索引分配的数据转发方案可以应用于网络搜索引擎领域,使用基于TCAM应用的索引管理与分配,针对用户在网络搜索引擎时的查询请求,由于TCAM应用的X状态为不关心,也就是本bit无论是O或I都认为匹配命中,若目前得到两条数据记录,这两条记录都可以命中,那么此时TCAM中应该返回命中哪一条记录给用户呢。为此,TCAM会默认返回地址较低的一条记录,由于TCAM的这一低地址优先返回的特性与转发业务中的优先级匹配特性相切合时,必然会带来一个问题,即为:如何保证把优先级高的记