CN111131050A - 流表的匹配方法及装置 - Google Patents
流表的匹配方法及装置 Download PDFInfo
- Publication number
- CN111131050A CN111131050A CN201911419921.0A CN201911419921A CN111131050A CN 111131050 A CN111131050 A CN 111131050A CN 201911419921 A CN201911419921 A CN 201911419921A CN 111131050 A CN111131050 A CN 111131050A
- Authority
- CN
- China
- Prior art keywords
- information
- width
- message
- storage
- flow table
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种流表的匹配方法及装置,上述方法包括:根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。通过本发明,解决了相关技术中流表的匹配流程灵活性较低的问题,提高了流表的匹配流程的灵活性。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种流表的匹配方法及装置。
背景技术
在软件定义网络(Software Defined Network,简称为SDN)技术中,将控制平面与转发平面分离,并且提供了对控制平面的可编程能力。目前通过软件编程实现的控制平面的功能,在传统的高级交换机和路由器上均可以实现,并且内部芯片实现固有功能,或者通过三态内容存储器(Ternary Content Addressable Memory,简称为TCAM)来实现流表。
然而,相关技术中开放的仅仅是对控制平面的可编程能力。对于转发平面,转发设备中的数据包解析流程和转发流程在转发设备的转发芯片中是固化的,即转发设备在协议的支持方面并不具备扩展能力。并且,设备生产厂商开发支持新协议的转发芯片,或者扩展转发芯片的协议特性时,需要对转发芯片的硬件重新进行设计,导致开发或扩展的代价非常高并且时间周期长。因此,将转发设备的功能、协议支持与硬件绑定的模式限制了网络的快速发展。
针对相关技术中,流表的匹配流程灵活性较低的问题,尚未提出有效的技术方案。
发明内容
本发明实施例提供了一种流表的匹配方法及装置,以至少解决相关技术中流表的匹配流程灵活性较低的问题。
根据本发明的一个实施例,提供了一种流表的匹配方法,包括:
根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;
确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;
确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;
根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。
可选地,所述根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,包括:解析所述报文得到所述报文头信息,并根据所述报文确定所述第三信息;将所述报文头信息存储到第一存储位置,以及将所述第三信息存储到第二存储位置;根据所述指示信息,从所述第一存储位置中获取所述第一信息,以及从所述第二存储位置中获取所述第二信息。
可选地,所述第三信息包括以下至少之一:所述报文的入端口,所述报文所属的虚拟路由转发实例以及三层接口。
可选地,所述根据所述指示信息,从所述第一存储位置中获取所述第一信息,以及从所述第二存储位置中获取所述第二信息,包括:根据所述指示信息确定所述第一信息的第一宽度以及所述第二信息的第二宽度;确定所述第一信息在所述第一存储位置中的第一目标位置,以及所述第二信息在所述第二存储位置中的第二目标位置;在所述第一目标位置处使用第一选择器获取所述第一信息,以及在所述第二目标位置处使用第二选择器获取所述第二信息,其中,所述第一选择器的宽度为所述第一宽度,所述第二选择器的宽度为所述第二宽度。
可选地,在所述根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息之前,所述方法还包括:根据所述指示信息确定内存的存储策略,其中,所述存储策略包括以下之一:将所述内存的存储空间划分为多个存储单元,在所述内存中存储第一宽度的多个第二表项,其中,所述第一宽度为所述待匹配项的宽度,所述第二表项包括所述第一表项,每个所述第二表项在所述存储空间中占用一个所述存储单元;将所述内存的存储空间划分为所述多个存储单元,在所述内存中使用第一数量的存储单元存储所述第一宽度的表项,以及使用第二数量的存储单元存储第二宽度的第二表项,其中,所述第二宽度与所述第一宽度不同。
可选地,所述根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项,包括:在所述目标流表中查找与所述哈希值匹配的第三表项;将所述待匹配表项中的所述第一关键字、所述第一流表编号与所述第三表项中的第二关键字和第二流表编号进行比较;在所述第一关键字与所述第二关键字相同以及所述第一流表编号与所述第二流表编号相同的情况下,确定所述第三表项为所述第一表项。
可选地,在所述根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项之后,所述方法还包括:根据所述第一表项中的动作转发所述报文;获取所述报文的出端口,并将所述出端口添加到所述第三信息中。
根据本发明的另一个实施例,提供了一种流表的匹配装置,包括:
选择模块,用于根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;
第一确定模块,用于确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;
第二确定模块,用于确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;
匹配模块,用于根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。
可选地,所述选择模块,还用于:解析所述报文得到所述报文头信息,并根据所述报文确定所述第三信息;将所述报文头信息存储到第一存储位置,以及将所述第三信息存储到第二存储位置;根据所述指示信息,从所述第一存储位置中获取所述第一信息,以及从所述第二存储位置中获取所述第二信息。
可选地,所述第三信息包括以下至少之一:所述报文的入端口,所述报文所属的虚拟路由转发实例以及三层接口。
可选地,所述选择模块,还用于:根据所述指示信息确定所述第一信息的第一宽度以及所述第二信息的第二宽度;确定所述第一信息在所述第一存储位置中的第一目标位置,以及所述第二信息在所述第二存储位置中的第二目标位置;在所述第一目标位置处使用第一选择器获取所述第一信息,以及在所述第二目标位置处使用第二选择器获取所述第二信息,其中,所述第一选择器的宽度为所述第一宽度,所述第二选择器的宽度为所述第二宽度。
可选地,所述装置还包括第三确定模块,用于:根据所述指示信息确定内存的存储策略,其中,所述存储策略包括以下之一:将所述内存的存储空间划分为多个存储单元,在所述内存中存储第一宽度的多个第二表项,其中,所述第一宽度为所述待匹配项的宽度,所述第二表项包括所述第一表项,每个所述第二表项在所述存储空间中占用一个所述存储单元;将所述内存的存储空间划分为所述多个存储单元,在所述内存中使用第一数量的存储单元存储所述第一宽度的表项,以及使用第二数量的存储单元存储第二宽度的第二表项,其中,所述第二宽度与所述第一宽度不同。
可选地,所述匹配模块还用于:在所述目标流表中查找与所述哈希值匹配的第三表项;将所述待匹配表项中的所述第一关键字、所述第一流表编号与所述第三表项中的第二关键字和第二流表编号进行比较;在所述第一关键字与所述第二关键字相同以及所述第一流表编号与所述第二流表编号相同的情况下,确定所述第三表项为所述第一表项。
可选地,所述装置还包括处理模块,用于:根据所述第一表项中的动作转发所述报文;获取所述报文的出端口,并将所述出端口添加到所述第三信息中。
可选地,根据本发明的另一个实施例,提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述方法。
可选地,根据本发明的另一个实施例,提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述方法。
通过本发明,根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。因此,可以解决相关技术中流表的匹配流程灵活性较低的问题,提高了流表的匹配流程的灵活性,从而降低了开发新的转发芯片或对芯片进行扩展的所需的成本。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为根据本发明实施例的流表的匹配方法的流程图;
图2为根据本发明另一实施例的流表的匹配方法的流程图;
图3为根据本发明一实施例的字段信息选择方法的流程图;
图4中是根据本发明实施例中的独立表项的内存存储方法的示意图;
图5中是根据本发明实施例中的共享表项的内存存储方法的示意图;
图6是根据本发明实施例的流表的匹配装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
实施例1
本发明实施例提供了一种流表的匹配方法。图1为根据本发明实施例的流表的匹配方法的流程图,如图1所示,包括:
步骤S102,根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;
步骤S104,确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;
步骤S106,确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;
步骤S108,根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。
通过本发明,根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。因此,可以解决相关技术中流表的匹配流程灵活性较低的问题,提高了流表的匹配流程的灵活性,从而降低了开发新的转发芯片或对芯片进行扩展的所需的成本。
需要说明的是,在上述实施例中,由于可以根据指示信息选择出用于进行流表匹配的第一信息和第二信息,即流表的匹配流程可以根据指示信息的指示进行选择,从而可以根据需要选择使用哪些信息来进行流表匹配流程,而不是仅仅根据转发芯片中固化的匹配使用固定的信息来执行流表的匹配过程,从而提高了流表匹配流程的灵活性。
可选地,所述报文所属的虚拟路由转发实例包括所述报文所属的虚拟路由转发实例(Virtual Routing&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的流表编号tbl id和32bits的匹配关键字组成,其中4bits的tbl id用来区分不同的表项,从而防止误匹配;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-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
实施例4
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;
S2,确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;
S3,确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;
S4,根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种流表的匹配方法,其特征在于,包括:
根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;
确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;
确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;
根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。
2.根据权利要求1所述的方法,其特征在于,所述根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,包括:
解析所述报文得到所述报文头信息,并根据所述报文确定所述第三信息;
将所述报文头信息存储到第一存储位置,以及将所述第三信息存储到第二存储位置;
根据所述指示信息,从所述第一存储位置中获取所述第一信息,以及从所述第二存储位置中获取所述第二信息。
3.根据权利要求1所述的方法,其特征在于,所述第三信息包括以下至少之一:所述报文的入端口,所述报文所属的虚拟路由转发实例以及三层接口。
4.根据权利要求2所述的方法,其特征在于,所述根据所述指示信息,从所述第一存储位置中获取所述第一信息,以及从所述第二存储位置中获取所述第二信息,包括:
根据所述指示信息确定所述第一信息的第一宽度以及所述第二信息的第二宽度;
确定所述第一信息在所述第一存储位置中的第一目标位置,以及所述第二信息在所述第二存储位置中的第二目标位置;
在所述第一目标位置处使用第一选择器获取所述第一信息,以及在所述第二目标位置处使用第二选择器获取所述第二信息,其中,所述第一选择器的宽度为所述第一宽度,所述第二选择器的宽度为所述第二宽度。
5.根据权利要求1所述的方法,其特征在于,在所述根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息之前,所述方法还包括:根据所述指示信息确定内存的存储策略,其中,所述存储策略包括以下之一:
将所述内存的存储空间划分为多个存储单元,在所述内存中存储第一宽度的多个第二表项,其中,所述第一宽度为所述待匹配项的宽度,所述第二表项包括所述第一表项,每个所述第二表项在所述存储空间中占用一个所述存储单元;
将所述内存的存储空间划分为所述多个存储单元,在所述内存中使用第一数量的存储单元存储所述第一宽度的表项,以及使用第二数量的存储单元存储第二宽度的第二表项,其中,所述第二宽度与所述第一宽度不同。
6.根据权利要求1所述的方法,其特征在于,所述根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项,包括:
在所述目标流表中查找与所述哈希值匹配的第三表项;
将所述待匹配表项中的所述第一关键字、所述第一流表编号与所述第三表项中的第二关键字和第二流表编号进行比较;
在所述第一关键字与所述第二关键字相同以及所述第一流表编号与所述第二流表编号相同的情况下,确定所述第三表项为所述第一表项。
7.根据权利要求1所述的方法,其特征在于,在所述根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项之后,所述方法还包括:
根据所述第一表项中的动作转发所述报文;
获取所述报文的出端口,并将所述出端口添加到所述第三信息中。
8.一种流表的匹配装置,其特征在于,包括:
选择模块,用于根据指示信息从报文的报文头信息中选择第一信息,以及从第三信息中选择第二信息,其中,所述第三信息是用于指示所述报文的转发的信息;
第一确定模块,用于确定由所述第一信息和所述第二信息组成的第一关键字,以及与所述第一关键字对应的第一流表编号;
第二确定模块,用于确定由所述第一关键字和所述第一流表编号组成的待匹配项的哈希值;
匹配模块,用于根据所述哈希值在目标流表中查找与所述待匹配项匹配的第一表项。
9.根据权利要求8所述的装置,其特征在于,所述选择模块,还用于:
解析所述报文得到所述报文头信息,并根据所述报文确定所述第三信息;
将所述报文头信息存储到第一存储位置,以及将所述第三信息存储到第二存储位置;
根据所述指示信息,从所述第一存储位置中获取所述第一信息,以及从所述第二存储位置中获取所述第二信息。
10.根据权利要求8所述的装置,其特征在于,所述第三信息包括以下至少之一:所述报文的入端口,所述报文所属的虚拟路由转发实例以及三层接口。
11.根据权利要求9所述的装置,其特征在于,所述选择模块,还用于:
根据所述指示信息确定所述第一信息的第一宽度以及所述第二信息的第二宽度;
确定所述第一信息在所述第一存储位置中的第一目标位置,以及所述第二信息在所述第二存储位置中的第二目标位置;
在所述第一目标位置处使用第一选择器获取所述第一信息,以及在所述第二目标位置处使用第二选择器获取所述第二信息,其中,所述第一选择器的宽度为所述第一宽度,所述第二选择器的宽度为所述第二宽度。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括第三确定模块,用于:根据所述指示信息确定内存的存储策略,其中,所述存储策略包括以下之一:
将所述内存的存储空间划分为多个存储单元,在所述内存中存储第一宽度的多个第二表项,其中,所述第一宽度为所述待匹配项的宽度,所述第二表项包括所述第一表项,每个所述第二表项在所述存储空间中占用一个所述存储单元;
将所述内存的存储空间划分为所述多个存储单元,在所述内存中使用第一数量的存储单元存储所述第一宽度的表项,以及使用第二数量的存储单元存储第二宽度的第二表项,其中,所述第二宽度与所述第一宽度不同。
13.根据权利要求8所述的装置,其特征在于,所述匹配模块还用于:
在所述目标流表中查找与所述哈希值匹配的第三表项;
将所述待匹配表项中的所述第一关键字、所述第一流表编号与所述第三表项中的第二关键字和第二流表编号进行比较;
在所述第一关键字与所述第二关键字相同以及所述第一流表编号与所述第二流表编号相同的情况下,确定所述第三表项为所述第一表项。
14.根据权利要求8所述的装置,其特征在于,所述装置还包括处理模块,用于:
根据所述第一表项中的动作转发所述报文;
获取所述报文的出端口,并将所述出端口添加到所述第三信息中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911419921.0A CN111131050A (zh) | 2019-12-31 | 2019-12-31 | 流表的匹配方法及装置 |
PCT/CN2020/120429 WO2021135491A1 (zh) | 2019-12-31 | 2020-10-12 | 流表的匹配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911419921.0A CN111131050A (zh) | 2019-12-31 | 2019-12-31 | 流表的匹配方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111131050A true CN111131050A (zh) | 2020-05-08 |
Family
ID=70507254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911419921.0A Pending CN111131050A (zh) | 2019-12-31 | 2019-12-31 | 流表的匹配方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111131050A (zh) |
WO (1) | WO2021135491A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111865812A (zh) * | 2020-07-06 | 2020-10-30 | 北京合众方达科技有限公司 | 一种分布式网络中sdn支撑高性能业务混传的方法 |
WO2021135491A1 (zh) * | 2019-12-31 | 2021-07-08 | 盛科网络(苏州)有限公司 | 流表的匹配方法及装置 |
WO2021151301A1 (zh) * | 2020-08-07 | 2021-08-05 | 平安科技(深圳)有限公司 | 基于ovs的数据包处理方法、装置、计算机设备及计算机可读存储介质 |
CN114448891A (zh) * | 2022-01-26 | 2022-05-06 | 深圳星云智联科技有限公司 | 流表同步方法、装置、设备和介质 |
WO2024037243A1 (zh) * | 2022-08-15 | 2024-02-22 | 华为技术有限公司 | 一种数据处理方法、装置和系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140204948A1 (en) * | 2011-12-22 | 2014-07-24 | Telefonaktiebolaget L M Ericsson (Publ) | Flexible and extensible flow processing in software-defined networks |
CN104012063A (zh) * | 2011-12-22 | 2014-08-27 | 瑞典爱立信有限公司 | 用于软件定义网络中的灵活和可扩展流处理的控制器 |
CN104168203A (zh) * | 2014-09-03 | 2014-11-26 | 上海斐讯数据通信技术有限公司 | 一种基于流表的处理方法及系统 |
WO2016000362A1 (zh) * | 2014-06-30 | 2016-01-07 | 华为技术有限公司 | 一种配置流表项的方法、装置和系统 |
WO2016079637A1 (en) * | 2014-11-17 | 2016-05-26 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for virtualizing flow tables in a software-defined networking (sdn) system |
CN105830406A (zh) * | 2013-12-18 | 2016-08-03 | 瑞典爱立信有限公司 | 用于支持软件定义网络中的灵活查找关键字的方法、设备和系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905311B (zh) * | 2012-12-28 | 2017-02-22 | 华为技术有限公司 | 流表匹配方法和装置以及交换机 |
CN107682266B (zh) * | 2017-09-12 | 2021-02-26 | 杭州迪普科技股份有限公司 | 流表项的匹配方法及装置、计算机可读存储介质 |
CN109600313A (zh) * | 2017-09-30 | 2019-04-09 | 迈普通信技术股份有限公司 | 报文转发方法及装置 |
CN110324245B (zh) * | 2018-03-31 | 2021-03-23 | 华为技术有限公司 | 一种基于集成流表转发报文的方法及装置 |
CN111131050A (zh) * | 2019-12-31 | 2020-05-08 | 盛科网络(苏州)有限公司 | 流表的匹配方法及装置 |
-
2019
- 2019-12-31 CN CN201911419921.0A patent/CN111131050A/zh active Pending
-
2020
- 2020-10-12 WO PCT/CN2020/120429 patent/WO2021135491A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140204948A1 (en) * | 2011-12-22 | 2014-07-24 | Telefonaktiebolaget L M Ericsson (Publ) | Flexible and extensible flow processing in software-defined networks |
CN104012063A (zh) * | 2011-12-22 | 2014-08-27 | 瑞典爱立信有限公司 | 用于软件定义网络中的灵活和可扩展流处理的控制器 |
CN105830406A (zh) * | 2013-12-18 | 2016-08-03 | 瑞典爱立信有限公司 | 用于支持软件定义网络中的灵活查找关键字的方法、设备和系统 |
WO2016000362A1 (zh) * | 2014-06-30 | 2016-01-07 | 华为技术有限公司 | 一种配置流表项的方法、装置和系统 |
CN104168203A (zh) * | 2014-09-03 | 2014-11-26 | 上海斐讯数据通信技术有限公司 | 一种基于流表的处理方法及系统 |
WO2016079637A1 (en) * | 2014-11-17 | 2016-05-26 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for virtualizing flow tables in a software-defined networking (sdn) system |
Non-Patent Citations (1)
Title |
---|
ENIO KALJIC,等: ""A Survey on Data Plane Flexibility and Programmability in Software-Defined Networking"", 《IEEE ACCESS》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021135491A1 (zh) * | 2019-12-31 | 2021-07-08 | 盛科网络(苏州)有限公司 | 流表的匹配方法及装置 |
CN111865812A (zh) * | 2020-07-06 | 2020-10-30 | 北京合众方达科技有限公司 | 一种分布式网络中sdn支撑高性能业务混传的方法 |
CN111865812B (zh) * | 2020-07-06 | 2023-04-07 | 北京合众方达科技有限公司 | 一种分布式网络中sdn支撑高性能业务混传的方法 |
WO2021151301A1 (zh) * | 2020-08-07 | 2021-08-05 | 平安科技(深圳)有限公司 | 基于ovs的数据包处理方法、装置、计算机设备及计算机可读存储介质 |
CN114448891A (zh) * | 2022-01-26 | 2022-05-06 | 深圳星云智联科技有限公司 | 流表同步方法、装置、设备和介质 |
CN114448891B (zh) * | 2022-01-26 | 2024-01-02 | 深圳星云智联科技有限公司 | 流表同步方法、装置、设备和介质 |
WO2024037243A1 (zh) * | 2022-08-15 | 2024-02-22 | 华为技术有限公司 | 一种数据处理方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2021135491A1 (zh) | 2021-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111131050A (zh) | 流表的匹配方法及装置 | |
US11102120B2 (en) | Storing keys with variable sizes in a multi-bank database | |
US11811660B2 (en) | Flow classification apparatus, methods, and systems | |
CN108768866B (zh) | 组播报文跨卡转发方法、装置、网络设备及可读存储介质 | |
US10348603B1 (en) | Adaptive forwarding tables | |
US8923298B2 (en) | Optimized trie-based address lookup | |
CN112425131B (zh) | 一种acl的规则分类方法、查找方法和装置 | |
CN112965824A (zh) | 报文的转发方法及装置、存储介质、电子设备 | |
US9135833B2 (en) | Process for selecting compressed key bits for collision resolution in hash lookup table | |
CN101478488B (zh) | 报文转发方法、转发引擎芯片和路由设备 | |
US7551609B2 (en) | Data structure for storing and accessing multiple independent sets of forwarding information | |
US20230041395A1 (en) | Method and Device for Processing Routing Table Entries | |
US12063155B2 (en) | Packet sending method and apparatus, and storage medium | |
CN109039911B (zh) | 一种基于hash查找方式共享ram的方法及系统 | |
CN111327543A (zh) | 报文转发方法及装置、存储介质、电子装置 | |
KR100720190B1 (ko) | 임의적인 ip 범위 구성에 의한 고속의 규칙 검색 | |
US7941605B1 (en) | Methods and apparatus for generating a result based on a lookup result from a lookup operation using an associative memory and processing based on a discriminator portion of a lookup word | |
CN112822112B (zh) | 一种路由地址存储方法及装置 | |
US7934198B2 (en) | Prefix matching structure and method for fast packet switching | |
CN112804130A (zh) | 报文处理方法及装置、系统、存储介质以及电子设备 | |
CN112052191B (zh) | 报文的寻址方法及装置、存储介质、电子装置 | |
US20230216790A1 (en) | Apparatus and method for providing virtual private network service in icn network | |
EP4064625A1 (en) | Message forwarding method and apparatus, and distributed device | |
CN107547409B (zh) | 一种路由查找方法、装置和路由设备 | |
CN107483331B (zh) | 用于消除业务成环的处理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Xinghan Street Industrial Park of Suzhou city in Jiangsu province 215021 B No. 5 Building 4 floor 13/16 unit Applicant after: Suzhou Shengke Communication Co.,Ltd. Address before: Xinghan Street Industrial Park of Suzhou city in Jiangsu province 215021 B No. 5 Building 4 floor 13/16 unit Applicant before: CENTEC NETWORKS (SU ZHOU) Co.,Ltd. |
|
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200508 |