流表的匹配方法及装置与流程

文档序号:20677262发布日期:2020-05-08 17:59阅读:378来源:国知局
流表的匹配方法及装置与流程

本发明涉及通信领域,具体而言,涉及一种流表的匹配方法及装置。



背景技术:

在软件定义网络(softwaredefinednetwork,简称为sdn)技术中,将控制平面与转发平面分离,并且提供了对控制平面的可编程能力。目前通过软件编程实现的控制平面的功能,在传统的高级交换机和路由器上均可以实现,并且内部芯片实现固有功能,或者通过三态内容存储器(ternarycontentaddressablememory,简称为tcam)来实现流表。

然而,相关技术中开放的仅仅是对控制平面的可编程能力。对于转发平面,转发设备中的数据包解析流程和转发流程在转发设备的转发芯片中是固化的,即转发设备在协议的支持方面并不具备扩展能力。并且,设备生产厂商开发支持新协议的转发芯片,或者扩展转发芯片的协议特性时,需要对转发芯片的硬件重新进行设计,导致开发或扩展的代价非常高并且时间周期长。因此,将转发设备的功能、协议支持与硬件绑定的模式限制了网络的快速发展。

针对相关技术中,流表的匹配流程灵活性较低的问题,尚未提出有效的技术方案。



技术实现要素:

本发明实施例提供了一种流表的匹配方法及装置,以至少解决相关技术中流表的匹配流程灵活性较低的问题。

根据本发明的一个实施例,提供了一种流表的匹配方法,包括:

根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;

确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;

确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;

根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。

可选地,所述根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,包括:解析所述报文得到所述报文头信息,并根据所述报文确定所述第三信息;将所述报文头信息存储到第一存储位置,以及将所述第三信息存储到第二存储位置;根据所述指示信息,从所述第一存储位置中获取所述第一信息,以及从所述第二存储位置中获取所述第二信息。

可选地,所述第三信息包括以下至少之一:所述报文的入端口,所述报文所属的虚拟路由转发实例以及三层接口。

可选地,所述根据所述指示信息,从所述第一存储位置中获取所述第一信息,以及从所述第二存储位置中获取所述第二信息,包括:根据所述指示信息确定所述第一信息的第一宽度以及所述第二信息的第二宽度;确定所述第一信息在所述第一存储位置中的第一目标位置,以及所述第二信息在所述第二存储位置中的第二目标位置;在所述第一目标位置处使用第一选择器获取所述第一信息,以及在所述第二目标位置处使用第二选择器获取所述第二信息,其中,所述第一选择器的宽度为所述第一宽度,所述第二选择器的宽度为所述第二宽度。

可选地,在所述根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息之前,所述方法还包括:根据所述指示信息确定内存的存储策略,其中,所述存储策略包括以下之一:将所述内存的存储空间划分为多个存储单元,在所述内存中存储第一宽度的多个第二表项,其中,所述第一宽度为所述待匹配项的宽度,所述第二表项包括所述第一表项,每个所述第二表项在所述存储空间中占用一个所述存储单元;将所述内存的存储空间划分为所述多个存储单元,在所述内存中使用第一数量的存储单元存储所述第一宽度的表项,以及使用第二数量的存储单元存储第二宽度的第二表项,其中,所述第二宽度与所述第一宽度不同。

可选地,所述根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项,包括:在所述目标流表中查找与所述哈希值匹配的第三表项;将所述待匹配表项中的所述第一关键字、所述第一流表编号与所述第三表项中的第二关键字和第二流表编号进行比较;在所述第一关键字与所述第二关键字相同以及所述第一流表编号与所述第二流表编号相同的情况下,确定所述第三表项为所述第一表项。

可选地,在所述根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项之后,所述方法还包括:根据所述第一表项中的动作转发所述报文;获取所述报文的出端口,并将所述出端口添加到所述第三信息中。

根据本发明的另一个实施例,提供了一种流表的匹配装置,包括:

选择模块,用于根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;

第一确定模块,用于确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;

第二确定模块,用于确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;

匹配模块,用于根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。

可选地,所述选择模块,还用于:解析所述报文得到所述报文头信息,并根据所述报文确定所述第三信息;将所述报文头信息存储到第一存储位置,以及将所述第三信息存储到第二存储位置;根据所述指示信息,从所述第一存储位置中获取所述第一信息,以及从所述第二存储位置中获取所述第二信息。

可选地,所述第三信息包括以下至少之一:所述报文的入端口,所述报文所属的虚拟路由转发实例以及三层接口。

可选地,所述选择模块,还用于:根据所述指示信息确定所述第一信息的第一宽度以及所述第二信息的第二宽度;确定所述第一信息在所述第一存储位置中的第一目标位置,以及所述第二信息在所述第二存储位置中的第二目标位置;在所述第一目标位置处使用第一选择器获取所述第一信息,以及在所述第二目标位置处使用第二选择器获取所述第二信息,其中,所述第一选择器的宽度为所述第一宽度,所述第二选择器的宽度为所述第二宽度。

可选地,所述装置还包括第三确定模块,用于:根据所述指示信息确定内存的存储策略,其中,所述存储策略包括以下之一:将所述内存的存储空间划分为多个存储单元,在所述内存中存储第一宽度的多个第二表项,其中,所述第一宽度为所述待匹配项的宽度,所述第二表项包括所述第一表项,每个所述第二表项在所述存储空间中占用一个所述存储单元;将所述内存的存储空间划分为所述多个存储单元,在所述内存中使用第一数量的存储单元存储所述第一宽度的表项,以及使用第二数量的存储单元存储第二宽度的第二表项,其中,所述第二宽度与所述第一宽度不同。

可选地,所述匹配模块还用于:在所述目标流表中查找与所述哈希值匹配的第三表项;将所述待匹配表项中的所述第一关键字、所述第一流表编号与所述第三表项中的第二关键字和第二流表编号进行比较;在所述第一关键字与所述第二关键字相同以及所述第一流表编号与所述第二流表编号相同的情况下,确定所述第三表项为所述第一表项。

可选地,所述装置还包括处理模块,用于:根据所述第一表项中的动作转发所述报文;获取所述报文的出端口,并将所述出端口添加到所述第三信息中。

可选地,根据本发明的另一个实施例,提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述方法。

可选地,根据本发明的另一个实施例,提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述方法。

通过本发明,根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。因此,可以解决相关技术中流表的匹配流程灵活性较低的问题,提高了流表的匹配流程的灵活性,从而降低了开发新的转发芯片或对芯片进行扩展的所需的成本。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为根据本发明实施例的流表的匹配方法的流程图;

图2为根据本发明另一实施例的流表的匹配方法的流程图;

图3为根据本发明一实施例的字段信息选择方法的流程图;

图4中是根据本发明实施例中的独立表项的内存存储方法的示意图;

图5中是根据本发明实施例中的共享表项的内存存储方法的示意图;

图6是根据本发明实施例的流表的匹配装置的结构框图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例1

本发明实施例提供了一种流表的匹配方法。图1为根据本发明实施例的流表的匹配方法的流程图,如图1所示,包括:

步骤s102,根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;

步骤s104,确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;

步骤s106,确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;

步骤s108,根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。

通过本发明,根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。因此,可以解决相关技术中流表的匹配流程灵活性较低的问题,提高了流表的匹配流程的灵活性,从而降低了开发新的转发芯片或对芯片进行扩展的所需的成本。

需要说明的是,在上述实施例中,由于可以根据指示信息选择出用于进行流表匹配的第一信息和第二信息,即流表的匹配流程可以根据指示信息的指示进行选择,从而可以根据需要选择使用哪些信息来进行流表匹配流程,而不是仅仅根据转发芯片中固化的匹配使用固定的信息来执行流表的匹配过程,从而提高了流表匹配流程的灵活性。

可选地,所述报文所属的虚拟路由转发实例包括所述报文所属的虚拟路由转发实例(virtualrouting&forwarding,简称为vrf)的id。

需要说明的是,所述根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,包括:

解析所述报文得到所述报文头信息,并根据所述报文确定所述第三信息;将所述报文头信息存储到第一存储位置,以及将所述第三信息存储到第二存储位置;根据所述指示信息,从所述第一存储位置中获取所述第一信息,以及从所述第二存储位置中获取所述第二信息。

在上述实施例中,通过对报文进行解释得到报文头信息,例如:报文的源mac地址,目的mac地址,虚拟局域网实例id(即vlanid),以太网类型,目的ip地址,源ip地址等信息中的至少之一。

基于上述实施例,作为一种可选的实施方式,所述第三信息包括以下至少之一:所述报文的入端口,所述报文所属的虚拟路由转发实例以及三层接口。所述根据所述报文确定所述第三信息,包括:根据所述报文确定所述报文的入端口,所述报文所属的虚拟路由转发实例以及三层接口。

在本发明的一可选实施例中,所述根据所述指示信息,从所述第一存储位置中获取所述第一信息,以及从所述第二存储位置中获取所述第二信息,包括:根据所述指示信息确定所述第一信息的第一宽度以及所述第二信息的第二宽度;确定所述第一信息在所述第一存储位置中的第一目标位置,以及所述第二信息在所述第二存储位置中的第二目标位置;在所述第一目标位置处使用第一选择器获取所述第一信息,以及在所述第二目标位置处使用第二选择器获取所述第二信息,其中,所述第一选择器的宽度为所述第一宽度,所述第二选择器的宽度为所述第二宽度。

其中,在上述实施例中,宽度指的是比特数或字节数。例如,第一信息的第一宽度指的是第一信息的比特数或字节数。

通过上述实施例,由于待获取的信息的宽度确定所使用的选择器,并使用相应的选择器从目标位置处获取信息,从而实现了从存储位置中获取信息的准确性。

在本发明的一可选实施例中,在所述根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息之前,所述方法还包括:根据所述指示信息确定内存的存储策略,其中,所述存储策略包括以下之一:将所述内存的存储空间划分为多个存储单元,在所述内存中存储第一宽度的多个第二表项,其中,所述第一宽度为所述待匹配项的宽度,所述第二表项包括所述第一表项,每个所述第二表项在所述存储空间中占用一个所述存储单元;将所述内存的存储空间划分为所述多个存储单元,在所述内存中使用第一数量的存储单元存储所述第一宽度的表项,以及使用第二数量的存储单元存储第二宽度的第二表项,其中,所述第二宽度与所述第一宽度不同。

基于上述实施例,提供了两种内存存储策略,即在第一种存储策略中,一块内存仅存储相同宽度的表项,即这块内存仅用于匹配单一宽度的表项,以及在第二种存储策略中,一块内存可以存储不同宽度的表项,即不同宽度的表项可以共享该内存块,从而提高了表项存储的灵活性。

在本发明的一可选实施例中,所述根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项,包括:在所述目标流表中查找与所述哈希值匹配的第三表项;将所述待匹配表项中的所述第一关键字、所述第一流表编号与所述第三表项中的第二关键字和第二流表编号进行比较;在所述第一关键字与所述第二关键字相同以及所述第一流表编号与所述第二流表编号相同的情况下,确定所述第三表项为所述第一表项。

需要说明的是,在上述实施例中,将待匹配表项中的第一关键字、第一流表编号分别与查找到的第三表项的第二关键字和第二流表编号进行比较,在所述第一关键字与所述第二关键字相同以及所述第一流表编号与所述第二流表编号相同的情况下,确定所述第三表项为与所述待匹配表项匹配的表项,从而确保了流表匹配的准确性。

在本发明的一可选实施例中,在所述根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项之后,所述方法还包括:根据所述第一表项中的动作转发所述报文;获取所述报文的出端口,并将所述出端口添加到所述第三信息中。

基于上述实施例,在根据第一表项中的动作对报文进行转发后,将报文的出端口添加到第三信息中,从而可以用于下一级的流表匹配。

以下结合一示例对上述的流表的匹配方法进行解释说明,但不用于限定本发明实施例的技术方案。图2为根据本发明另一实施例的流表的匹配方法的流程图。下面结合图2所示的流程图对本发明示例的技术方案进行详细说明,本发明示例的技术方案如下:

步骤1、信息获取。从转发芯片的端口上接收到报文后,先经过报文解析器把报文的字段(即上述实施例中的报文头信息)解析出来,比如解析出以态网报文的macda,macsa,vlanid,ethertype,ipda,ipsa(即分别对应于上述实施例中的报文的目的mac地址,源mac地址,虚拟局域网实例id,以太网类型,目的ip地址,源ip地址)等,将解析结果存储到parserresult(parserresult为上述实施例中的第一存储位置所对应的存储空间)中。同时获取报文的入端口、vrf、三层接口等中间信息(即对应于上述实施例中的第三信息),并存储到paketinfo(paketinfo为上述实施例中的第二存储位置所对应的存储空间)中;

需要说明的是,paketinfo中存储的信息可以看作是芯片处理的中间信息。

步骤2、字段信息选择。从packetinfo和parserreulst里选择用于进行查表的匹配关键字。比如指示信息中指示将入端口和vlanid作为匹配关键字,则在该字段信息选择步骤中,从packetinfo里选择入端口,从parserresult里选择出vlanid,并把选择的字段组成匹配关键字,并获取该匹配关键字对应的流表编号,以及将匹配关键字和流表编号组成一个匹配字段{tblid,port,vlanid}(即上述实施例中的待匹配项),并通过散列算法(又称为hash算法)得到一个hash索引(即上述实施例中的哈希值);

作为一种可选的实施方式,步骤2可以由字段信息选择模块执行。图3为根据本发明一实施例的字段信息选择方法的流程图。如图3所示,在从packetinfo和parserreulst里选择匹配关键字时,字段信息选择模块通过执行以下步骤来实现:

步骤2-1:将parserresult中存储的信息(即报文解析结果)和packetinfo中存储的信息(即芯片处理的中间信息)组成一个组合信息。字段信息选择模块由多个字段选择器组成,例如有2、4、8、16、32比特(bits)选择器;

步骤2-2:字段信息选择模块根据指示信息中指示的待匹配项的结构中各个字段的宽度确定选择器,并使用确定的选择器从组合信息中获取对应的字段内容。例如,待匹配项的关键字是{port,vlanid},由于port是16bits,vlanid是12bits,则使用一个16bits选择器从组合信息里选择port字段,使用一个8bit选择器和4bit选择器从组合信息中选取vlanid字段。需要说明的是,由于组合信息中各个字段在该组合信息的置是固定的,比如port在组合信息中的位置是从128bit开始第128bit至133bit,则从组合信息中获取port时,使用16bits的选择器将组合信息中位于第128bit至133bit之间(即[128:133])的内容提取出来得到port。

步骤3、查表。将步骤2中得到的hash索引与内存存储的流表中的表项的hash值进行比较,找到第三表项,并进一步比较匹配字段{tblid,port,vlanid}中的匹配关键字(即{tport,vlanid})与第三表中的关键字是否相同,以及匹配字段中的流表编号tblid与第三表项中的流表编号是否相同,在均相同的情况下,表示匹配成功并确认第三表项是与匹配字段匹配的表项;

步骤4、根据第三表项中的action动作对报文进行处理。可选地,根据第三表项中的action动作对报文进行处理包括:根据第三表项中的action动作对报文进行转发。在对报文进行处理后,处理结果的信息,比如出端口也放入packetinfo里,用于下一级查表。

可选地,基于上述实施例,在需要对报文进行下一级查表时,重复执行上述步骤1至步骤4即可。

在上述实施例中,用户可以根据需求自定义需要匹配字段,并使用hash算法进行查找和匹配流表,相对于相关技术中仅能使用固定的字段进行流表匹配,提高了流表匹配的灵活性。

相关技术中,转发芯片的内存(即memory)存储大多分为两类,即tcam和随机存取存储器(又称为ram)。其中,tcam有掩码匹配功能,但价格比较昂贵,同时占用芯片面积和功耗较大,并且所能存储的表项数量较少(即表项规格较小)。对于ram,在表项规格需要较大时多采用hash索引来存储。而目前芯片的hash方案多采用固定key(即关键字)表,即流表中的匹配字段的匹配关键字是固定的,进而根据该固定的匹配关键字得到hash索引。比如主机路由表的匹配关键字由{ipda,vrf}组成,其中ipda,vrf分别为32比特、16比特,即ram中存储的流表的hash索引是根据ipda,vrf得到的(也即ram中的流表仅支持对于ipda,vrf字段的匹配)。

可见相关技术中,一旦芯片生产出来,该芯片中的流表所支持的匹配字段就已经固定,同时流表中所存储的表项的宽度也是固定的。在根据报文查找表项时,如果所涉及到的匹配字段比较少而且匹配字段的宽度较小,例如仅匹配只占12bits的vlanid,而该芯片就无法满足这种匹配设置,如果要满足,则需要使用tcam表项来代替。即在tcam表项中,把其它字段掩码(即mask)掉。但是,由于tcam比较昂贵,从而tcam中存储的表项规格会受到限制,并且使用tcam表项也无法应对网络协议的变化。

因此,在本发明的实施例中,提供了两种内存的存储策略。在第一中存储策略中,提出了独立表项,即一块内存只用于一种表项,内存中存储的表项的大小由匹配字段的宽度决定。在第二中存储策略中,提出了共享表项,即一块内存可以用于匹配多种表项。

图4中是根据本发明实施例中的独立表项的内存存储方法的示意图。如图4所示,在该内存中存储了多个具有相同宽度的表项(即表1至表n),并且内存中存储的表项的宽度由匹配字段的总宽度决定。作为一种可选的实施方式,例如,当匹配字段的关键字是由{port,vlanid}组成时,流表编号tblid采用4bits,由于port是16bits,vlanid是12bits,tblid为4bits,则匹配字段的总宽度是32bits。则根据内存大小以及匹配字段的总宽度,能够得到该内存中最多能够存储多少表项(即得到了表项规格)。因此,采用独立表项的内存的优点是当匹配字段的总宽度越小,表项规格越大,从而采用独立表项的内存能够支持较大的表项规格。

图5中是根据本发明实施例中的共享表项的内存存储方法的示意图。如图5所示,对于以下4种表项:

表1中的匹配关键字为{port[15:0],vlanid[11:0]},即匹配关键字的宽度为28bits(即将16bits的端口以及12bits的vlanid作为匹配关键字的),以及流表编号1占用4bits,从而表1的匹配字段的总宽度为32bits;

表2中的匹配关键字为{ipda[31:0],vrf[15:0]},匹配关键字的宽度为48bits(即将32bits的目的ip地址以及16bits的vfr作为匹配关键字的),因此表2的匹配字段的总宽度为36bits;

表3中的匹配关键字为{port[15:0],vlan[11:0],macsa[47:0]},匹配关键字的宽度为76bits,因此表3的匹配字段的总宽度为40bits;

表4中的匹配关键字为{ipv6da[127:0],vrf[15:0]},匹配关键字的宽度为144bits,因此表4的匹配字段的总宽度为148bits;

在共享表项的存储过程中,将内存细分为小的存储单元(cell)。每个cell由4bits的流表编号tblid和32bits的匹配关键字组成,其中4bits的tblid用来区分不同的表项,从而防止误匹配;32bits的匹配关键字用来存储组成匹配关键字的字段。如果一个表的匹配关键字的大小大于32bits,则会占用多个cell。图5所示,表1占1个cell,表2占2个cell,表3占4个cell,表4用8个cell。

采用共享表项的方式进行存储的优点是内存可以支持多种表项,并且多种表项共享一块内存,即实现了资源共享。需要说明的是,上层应用可以根据需要(例如,表项应用策略)选择使用哪个内存存储策略,例如表项功能比较独立同时表项规格要求较大,则可以选择独立表项内存策略;如果表项功能混合,则可以选择共享表项内存策略。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本发明的另一个实施例,提供了一种流表的匹配装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图6是根据本发明实施例的流表的匹配装置的结构框图,该装置包括:

选择模块62,用于根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;

第一确定模块64,用于确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;

第二确定模块66,用于确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;

匹配模块68,用于根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。

通过本发明,根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。因此,可以解决相关技术中流表的匹配流程灵活性较低的问题,提高了流表的匹配流程的灵活性,从而降低了开发新的转发芯片或对芯片进行扩展的所需的成本。

在本发明的一可选实施例中,所述选择模块62,还用于:解析所述报文得到所述报文头信息,并根据所述报文确定所述第三信息;将所述报文头信息存储到第一存储位置,以及将所述第三信息存储到第二存储位置;根据所述指示信息,从所述第一存储位置中获取所述第一信息,以及从所述第二存储位置中获取所述第二信息。

在本发明的一可选实施例中,所述第三信息包括以下至少之一:所述报文的入端口,所述报文所属的虚拟路由转发实例以及三层接口。

在本发明的一可选实施例中,所述选择模块62,还用于:根据所述指示信息确定所述第一信息的第一宽度以及所述第二信息的第二宽度;确定所述第一信息在所述第一存储位置中的第一目标位置,以及所述第二信息在所述第二存储位置中的第二目标位置;在所述第一目标位置处使用第一选择器获取所述第一信息,以及在所述第二目标位置处使用第二选择器获取所述第二信息,其中,所述第一选择器的宽度为所述第一宽度,所述第二选择器的宽度为所述第二宽度。

在本发明的一可选实施例中,所述装置还包括第三确定模块,用于:根据所述指示信息确定内存的存储策略,其中,所述存储策略包括以下之一:将所述内存的存储空间划分为多个存储单元,在所述内存中存储第一宽度的多个第二表项,其中,所述第一宽度为所述待匹配项的宽度,所述第二表项包括所述第一表项,每个所述第二表项在所述存储空间中占用一个所述存储单元;将所述内存的存储空间划分为所述多个存储单元,在所述内存中使用第一数量的存储单元存储所述第一宽度的表项,以及使用第二数量的存储单元存储第二宽度的第二表项,其中,所述第二宽度与所述第一宽度不同。

在本发明的一可选实施例中,所述匹配模块68还用于:在所述目标流表中查找与所述哈希值匹配的第三表项;将所述待匹配表项中的所述第一关键字、所述第一流表编号与所述第三表项中的第二关键字和第二流表编号进行比较;在所述第一关键字与所述第二关键字相同以及所述第一流表编号与所述第二流表编号相同的情况下,确定所述第三表项为所述第一表项。

在本发明的一可选实施例中,所述装置还包括处理模块,用于:根据所述第一表项中的动作转发所述报文;获取所述报文的出端口,并将所述出端口添加到所述第三信息中。

实施例3

本发明的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项的方法。

可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

s1,根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;

s2,确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;

s3,确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;

s4,根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

实施例4

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

s1,根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;

s2,确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;

s3,确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;

s4,根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1