CN114780537A - 流表存储及报文转发方法、装置、计算设备及介质 - Google Patents
流表存储及报文转发方法、装置、计算设备及介质 Download PDFInfo
- Publication number
- CN114780537A CN114780537A CN202210295137.9A CN202210295137A CN114780537A CN 114780537 A CN114780537 A CN 114780537A CN 202210295137 A CN202210295137 A CN 202210295137A CN 114780537 A CN114780537 A CN 114780537A
- Authority
- CN
- China
- Prior art keywords
- flow table
- hash value
- stored
- memory
- message
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了一种流表存储及报文转发方法、装置、计算设备及介质,所述流表存储方法包括:获取待存储流表的关键字和数据;获取所述关键字的第一哈希值和第二哈希值;根据所述第一哈希值,将所述待存储流表的第二哈希值存储在第一存储器中;将所述待存储流表的关键字和数据存储在第二存储器中,可以在确保带宽满足的情况下存储更多的流表,并且由于将流表的地址管理与流表的数据进行分离,减少了哈希冲突。
Description
技术领域
本说明书一个或多个实施例涉及通信技术领域,尤其涉及一种流表存储及报文转发方法、装置、计算设备及介质。
背景技术
随着云计算的高速发展,智能网卡芯片在云网络的地位不断上升,而智能网卡芯片核心在于有效管理流表。增加转发流表数量是流表管理最重要的手段之一,由于通常使用HASH算法来计算地址并存储在对应的地址空间,因此在增加了转发流表数量的情况下,HASH算法导致地址冲突是无法回避的困难问题。如何在尽可能存储更多转发流表的情况下,减少哈希冲突是目前亟待解决的问题。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种流表存储及报文转发方法、装置、计算设备及介质。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种流表存储方法,该方法包括:
获取待存储流表的关键字和数据;
获取所述关键字的第一哈希值和第二哈希值;
根据所述第一哈希值,将所述待存储流表的第二哈希值存储在第一存储器中;
将所述待存储流表的关键字和数据存储在第二存储器中。
在一些实施例中,所述待存储流表具有标识信息,所述根据所述第一哈希值,将所述待存储流表的第二哈希值存储在第一存储器中,包括:
根据所述第一哈希值,得到所述待存储流表在所述第一存储器中对应的桶的地址;
将所述待存储流表的标识信息和所述第二哈希值存储于所述桶的槽位中。
在一些实施例中,所述根据所述待存储流表的关键字和数据存储在第二存储器中,包括:
根据所述待存储流表的标识信息,得到所述待存储流表在所述第二存储器中对应的桶的地址;
将所述待存储流表的关键字和数据存储在所述桶的槽位中。
根据本说明书一个或多个实施例的第二方面,提出了一种报文转发方法,该方法包括:
获取待转发报文的关键字,并获取所述关键字的第三哈希值和第四哈希值;
根据所述第三哈希值,从所述第一存储器获取至少一个流表的关键字的第二哈希值,并通过将所述第四哈希值与所述至少一个流表的关键字的第二哈希值进行比较,确定与所述待转发报文匹配的流表;其中,所述第一存储器中存储第二哈希值的地址根据所述流表的关键字的第一哈希值确定;
从第二存储器中获取与所述待转发报文匹配的流表的关键字,其中,所述第二存储器中存储有流表的关键字和数据;
在所述流表的关键字与所述待转发报文的关键字匹配的情况下,根据所述流表的数据执行对所述待转发报文进行转发处理。
在一些实施例中,所述通过将所述报文的关键字的第四哈希值与所述至少一个流表的关键字的第二哈希值进行比较,确定与所述报文匹配的流表,包括:
根据所述报文的第二哈希值,得到所述第一存储器中对应的桶的地址;
将所述桶的各个槽位中存储的流表的第二哈希值与所述报文的第四哈希值进行比较,将具有相同哈希值的流表确定为与所述待转发报文匹配的流表。
在一些实施例中,所述桶的各个槽中还存储有流表的标识信息;所述从第二存储器中获取所述流表的关键字,包括:
获取与所述待转发报文匹配的流表的标识信息;
根据所述标识信息,得到所述第二存储器中对应的桶的地址;
获取所述桶中存储的流表的关键字和数据;
在所述流表的关键字与所述待转发报文的关键字匹配的情况下,根据所述流表的数据执行对所述待转发报文进行转发处理。
根据本说明书一个或多个实施例的第三方面,提出了一种流表存储装置,所述装置包括:
第一获取单元,用于获取待存储流表的关键字和数据;
第二获取单元,用于获取所述关键字的第一哈希值和第二哈希值;
第一存储单元,用于根据所述第一哈希值,将所述待存储流表的第二哈希值存储在第一存储器中;
第二存储单元,用于将所述待存储流表的关键字和数据存储在第二存储器中。
在一些实施例中,所述待存储流表具有标识信息,所述第一存储单元具体用于:
根据所述第一哈希值,得到所述待存储流表在所述第一存储器中对应的桶的地址;
将所述待存储流表的标识信息和所述第二哈希值存储于所述桶的槽位中。
在一些实施例中,所述第二存储单元具体用于:
根据所述待存储流表的标识信息,得到所述待存储流表在所述第二存储器中对应的桶的地址;
将所述待存储流表的关键字和数据存储在所述桶的槽位中。
根据本说明书一个或多个实施例的第四方面,提出了一种流表存储装置,所述装置包括:
第一获取单元,用于获取待转发报文的关键字,并获取所述关键字的第三哈希值和第四哈希值;
确定单元,用于根据所述第三哈希值,从所述第一存储器获取至少一个流表的关键字的第二哈希值,并通过将所述第四哈希值与所述至少一个流表的关键字的第二哈希值进行比较,确定与所述待转发报文匹配的流表;其中,所述第一存储器中存储第二哈希值的地址根据所述流表的关键字的第一哈希值确定;
第二获取单元,用于从第二存储器中获取与所述待转发报文匹配的流表的关键字,其中,所述第二存储器中存储有流表的关键字和数据;
转发单元,用于在所述流表的关键字与所述待转发报文的关键字匹配的情况下,根据所述流表的数据执行对所述待转发报文进行转发处理。
在一些实施例中,所述确定单元具体用于:
根据所述报文的第二哈希值,得到所述第一存储器中对应的桶的地址;
将所述桶的各个槽位中存储的流表的第二哈希值与所述报文的第四哈希值进行比较,将具有相同哈希值的流表确定为与所述待转发报文匹配的流表。
在一些实施例中,所述转发单元具体用于:
获取与所述待转发报文匹配的流表的标识信息;
根据所述标识信息,得到所述第二存储器中对应的桶的地址;
获取所述桶中存储的流表的关键字和数据;
在所述流表的关键字与所述待转发报文的关键字匹配的情况下,根据所述流表的数据执行对所述待转发报文进行转发处理。
根据本说明书一个或多个实施例的第五方面,提出了一种计算设备,该计算设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器通过运行可执行指令以实现上述任一实施例所提供的流表存储方法或报文转发方法所执行的操作。
根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,指令被处理器执行时实现任一实施例所提供的流表存储方法或报文转发方法所执行的操作。
根据本说明书一个或多个实施例的第七方面,提出了一种计算机程序产品,包括计算机程序,程序被处理器执行时实现任一实施例所提供的流表存储方法或报文转发方法所执行的操作。
本申请通过获取待存储流表的关键字的第一哈希值和第二哈希值,并根据所述第一哈希值,将所述待存储流表的第二哈希值存储在第一存储器中;根据所述待存储流表的关键字和数据存储在第二存储器中,可以在确保带宽满足的情况下存储更多的流表,并且由于将流表的地址管理与流表的数据进行分离,减少了哈希冲突。
附图说明
图1是一示例性实施例提供的相关技术中流表存储地示意图。
图2是一示例性实施例提供的一种流表存储方法的流程图。
图3是一示例性实施例提供的一种流表存储方法的流程图。
图4是一示例性实施例提供的一种报文转发的流程图。
图5是一示例性实施例提供的一种流表存储装置的框图。
图6是一示例性实施例提供的一种报文转发装置的框图。
图7是一示例性实施例提供的一种计算设备的示意结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
相关技术中存储流表或者插入流表的方式通常是合并流并的地址和数据。以下结合图1描述相关技术中通常采用的存储流表方法。
目前的智能网卡系统同常使用两个动态随机存储器(DRAM)来存储流表,如图1所示,在本示例中利用存储器DDR0和DDR1来存储流表。待存储流表可以由管控平台下发,通常包括流表的标志信息(ID,也即图1中的flow_id)、关键字(key)以及流表的数据(value)。首先,从管控平台下发的待存储流表的信息中提取关键字(exact key),并将关键字的哈希值确定流表的存储地址。在本示例中,关键字的哈希值指向的地址是addr_3,因此将流表的ID、关键字、数据存储在地址为addr_3的桶中。
在上述方案中,假设每个槽位(slot)存储64Byte,两个DRAM最多可以存储4个slot。而如果通过增加存储器来扩展存储流表的容量,不但增加了硬件的负担,还更容易产生哈希冲突的问题。
有鉴于此,本申请提供了一种流表存储方法,该方法可以由计算机设备执行,计算机设备可以为服务器,如一台服务器、多台服务器、云计算平台等,可选地,计算机设备还可以为其他类型的设备,本申请对计算机设备的设备类型不加以限定。下面对本申请的实施方式进行介绍。
参见图2,图2是一示例性实施例提供的一种流表存储方法的流程图,该方法包括:
步骤201、获取待存储流表的关键字和数据。
其中,所述待存储流表可以由管控平台下发。管控平台所下发的信息中可以包括待存储流表的关键字和数据等等。
步骤202、获取所述关键字的第一哈希值和第二哈希值。
在一个示例中,可以利用哈希函数a对所述待存储流表的关键字进行处理,得到第一哈希值,该过程可以表示为hasha(key1),其中,key1表示待存储流表的关键字,hasha表示哈希函数a;同时,可以利用哈希函数b对所述待存储流表的关键字进行处理,得到第二哈希值,该过程可以表示为hashb(key1),其中,key1表示待存储流表的关键字,hashb表示哈希函数b。
步骤203、根据所述第一哈希值,将所述待存储流表的第二哈希值存储在第一存储器中。
在本步骤中,可以根据所述第一哈希值所指示的地址信息,将所述待存储流表的第二哈希值存储在所述第一存储器的相应位置处。
步骤204、将所述待存储流表的关键字和数据存储在第二存储器中。
在本公开实施例中,待存储流表的关键字的第一哈希值所指示的第一存储器中的地址,用于存储所述关键字的第二哈希值,而所述待存储流表的关键字和数据是存储在第二存储器中,通过将第一存储器中存储的第二哈希值,与第二存储器中用于存储关键字和数据的地址进行关联,则可以使第一存储器和第二存储器中存储的流表信息项共同用于对报文进行处理。由于第一哈希值所指示的地址中存储的是第二哈希值,相较于存储关键字和数据,减小了在第一哈希值对应的地址中存储的数据量,一方面使得可以存储更多的流表,另一方面在所述流表用于报文转发时可以增加一次与哈希值的匹配,因此可以减少哈希冲突的概率。
本申请通过获取待存储流表的关键字的第一哈希值和第二哈希值,并根据所述第一哈希值,将所述待存储流表的第二哈希值存储在第一存储器中;根据所述待存储流表的关键字和数据存储在第二存储器中,可以在确保带宽满足的情况下存储更多的流表,并且由于将流表的地址管理与流表的数据进行分离,减少了哈希冲突。
上述为对本申请的基本实现过程的介绍,下面对本申请的多个可选实现方式进行介绍。
在一个示例中,待存储流表具有标识信息(ID),根据该标识信息可以将第一存储器中存储的流表项,与第二存储器中存储的流表项进行关联。
具体地,根据所述第一哈希值,可以得到所述待存储流表在所述第一存储器中对应的桶的地址;将所述待存储流表的标识信息和所述第二哈希值存储于所述桶的槽位中。
参见图3所示的流表存储的示意图。如图3所示,根据第一哈希值hasha(key),确定所述待存储流表在第一存储器DDR0中对应的地址是addr_3,也即地址为addr_3的桶。第一存储器的每一个桶中具有若干个槽位,可以将所述待存储流表的ID(flow_id)和第二哈希值hashb(key)存储在地址为addr_3的桶的空闲槽位中。由于待存储流表的ID以及hashb(key)的数据量小于关键字和数据,因此在addr_3的桶中可以设置更多的槽位来进行流表项的存储,从而增加了流表的存储数量。以图3为例,在待存储流表的ID以及hashb(key)的数据量为56bit的情况下,DDR0的每个地址(每个桶)可以存放9个槽位。相较于相关技术中的相同配置,本公开实施例在确保带宽的前提下,提高了流表的存储量。
在待存储流表具有标识信息(ID)的情况下,可以通过以下方法来存储流表的关键字和数据:根据所述待存储流表的标识信息,得到所述待存储流表在所述第二存储器中对应的桶的地址,将所述待存储流表的关键字和数据存储在所述桶的槽位中。
参见图3所示的流表存储的示意图。如图3所示,根据待存储流表的ID(flow_id),得到流表在第二存储器中待存储的桶的地址。以待存储流表的ID为m-6为例,根据该ID所指示的在第二存储器中待存储的桶的地址为flow_id_m-6,将所述待存储流表的关键字和数据存储在地址为flow_id_m-6的桶的槽位中。
在本公开实施例中,通过利用待存储流表的标识信息,将待存储流表在第一存储器中的存储位置与该流表在第二存储器中的存储位置关联起来,可以在流表的地址管理与数据存储的分离,减少了哈希冲突的情况下实现对报文的正常处理。
本申请还提供了一种报文转发方法,该方法基于本公开实施例所提出的流表存储方法进行存储的流表对接收到的报文进行处理。上述方法可以应用于报文转发设备,所述报文转发设备例如可以是计算机设备,比如一台服务器、多台服务器、云计算平台等,可选地,计算机设备还可以为其他类型的设备,本申请对计算机设备的设备类型不加以限定。下面对本申请的实施方式进行介绍。
参见图4,图4是一示例性实施例提供的一种报文转发方法的流程图,该方法包括:
步骤401、获取待转发报文的关键字,并获取所述关键字的第三哈希值和第四哈希值。
响应于接收到报文,报文转发设备首先获取该报文的关键字,并获取所述关键字的第三哈希值和第四哈希值。
在一个示例中,可以利用哈希函数a对所述报文的关键字进行处理,得到第三哈希值,该过程可以表示为hasha(key_m),其中,key_m表示所述报文的关键字,hasha表示哈希函数a;同时,可以利用哈希函数b对所述报文的关键字进行处理,得到第四哈希值,该过程可以表示为hashb(key_m),其中,hashb表示哈希函数b。
步骤402、根据所述第三哈希值,从所述第一存储器获取至少一个流表的关键字的第二哈希值,并通过将所述第四哈希值与所述至少一个流表的关键字的第二哈希值进行比较,确定与所述待转发报文匹配的流表。
其中,所述第一存储器中存储第二哈希值的地址根据所述流表的关键字的第一哈希值确定。
在本公开实施例中,对于流表的关键字与报文的关键字采用相同的哈希处理。也即,所述流表的关键字的第一哈希值和第二哈希值,同样也是分别利用哈希函数a和哈希函数b对流表的关键字进行处理得到的。
在获取到待转发报文的关键字的第三哈希值后,确定所述第三哈希值在所述第一存储器中指向的地址,从而可以得到该地址中存储的至少一个流表项,也即至少一个流表的关键字的第二哈希值。通过将待转发报文的关键字的第四哈希值与所述至少一个流表的关键字的第二哈希值进行比较,将与第四哈希值相同的流表确定为匹配的流表。
步骤403,从第二存储器中获取与所述待转发报文匹配的流表的关键字,其中,所述第二存储器中存储有流表的关键字和数据。
步骤404,在所述流表的关键字与所述待转发报文的关键字匹配的情况下,根据所述流表的数据执行对所述待转发报文进行转发处理。
在获取了所述匹配的流表的关键字后,将所述流表的关键字与所述待转发报文的关键字进行比较,在所述流表的关键字与所述待转发报文的关键字相同的情况下,确认匹配,则读取该匹配流表的数据,并根据所述数据指示的动作对所述报文进行转发处理。
在本公开实施例中,对于待转发报文首先根据报文的关键字的第三哈希值确定在所述第一存储器中指向的地址,读取地址中存储的至少一个流表的关键字的第二哈希值,并根据报文的第四哈希值与各个流表的第二哈希值的匹配结果,确定匹配的流表;之后再在第二存储器中读取所匹配的流表的关键字,并在所述流表的关键字与报文的关键字匹配的请况下,读取所匹配的流表的数据对所述报文进行转发处理。通过增加对流表的第二哈希值与报文的第四哈希值之间的匹配,减少了哈希冲突的概率,提高了报文转发的质量。
上述为对本申请的报文转发基本实现过程的介绍,下面对本申请的多个可选实现方式进行介绍。
在一个示例中,根据根据以下方法确定与所述待转发报文匹配的流表:根据所述报文的第二哈希值,得到所述第一存储器中对应的桶的地址;将所述桶的各个槽位中存储的流表的第二哈希值与所述报文的第四哈希值进行比较,将具有相同哈希值的流表确定为与所述待转发报文匹配的流表。
在一个示例中,所述桶的各个槽中还存储有流表的标识信息;所述从第二存储器中获取所述流表的关键字,包括:获取与所述待转发报文匹配的流表的标识信息;根据所述标识信息,得到所述第二存储器中对应的桶的地址;获取所述桶中存储的流表的关键字和数据;在所述流表的关键字与所述待转发报文的关键字匹配的情况下,根据所述流表的数据执行对所述待转发报文进行转发处理。
下面以报文转发设备利用图3所示的流表存储方法进行存储得到的流表进行报文转发为例,对本申请提出的报文转发方法进行详细说明。
如图3所示,第一存储器DDR0的每个地址对应的桶中具有若干槽位,每个槽位中存储有流表的ID(flow_id)和所述流表的关键字key的第二哈希值hashb(key),而所述流表的每个地址是与所述流表的关键字key的第一哈希值hasha(key)对应的。第二存储器DDR1的每个地址与所述流表的ID对应,并且所述每个地址对应的桶中存储有所述流表的关键字key和数据value。
在接收到待转发报文并获取到所述报文的纹理信息key_m的情况下,首先获取纹理信息key_m的第三哈希值hasha(key_m)和第四哈希值hashb(key_m)。
接下来,根据第三哈希值hasha(key_m)确定在第一存储器DDR0中对应的桶的地址,例如地址为addr_3,则提取addr_3对应的桶中存储的各个流表的第二哈希值hashb(key)。并将待转发报文的第四哈希值hashb(key_m)与上述各个流表的第二哈希值hashb(key)进行比较,并将具有相同哈希值的流表作为与所述待转发报文匹配的流表。
在确定了匹配的流表后,则可以获取该流表的ID,利用该ID获取在第二存储器DDR1中存储的流表项。以与所述待转发报文匹配的流表ID为m-6为例,确定与该流表ID对应的第二存储器DDR1中对应的地址为flow_id_m-6,并获取该地址的桶中所存储的与ID为m-6的流表的关键字和数据。将所述待转发报文的关键字与所获取的ID为m-6的流表的关键字进行比较,在关键字相同也即匹配的情况下,根据该关键字对应的数据对所述待转发报文进行相应的转发处理。
参见图5,图5是一示例性实施例提供的一种流表存储装置的框图,该装置包括:
第一获取单元501,用于获取待存储流表的关键字和数据;
第二获取单元502,用于获取所述关键字的第一哈希值和第二哈希值;
第一存储单元503,用于根据所述第一哈希值,将所述待存储流表的第二哈希值存储在第一存储器中;
第二存储单元504,用于将所述待存储流表的关键字和数据存储在第二存储器中。
在一些实施例中,所述待存储流表具有标识信息,所述第一存储单元具体用于:
根据所述第一哈希值,得到所述待存储流表在所述第一存储器中对应的桶的地址;
将所述待存储流表的标识信息和所述第二哈希值存储于所述桶的槽位中。
在一些实施例中,所述第二存储单元具体用于:
根据所述待存储流表的标识信息,得到所述待存储流表在所述第二存储器中对应的桶的地址;
将所述待存储流表的关键字和数据存储在所述桶的槽位中。
参见图6,图6是一示例性实施例提供的一种报文转发装置的框图,该装置包括:
第一获取单元601,用于获取待转发报文的关键字,并获取所述关键字的第三哈希值和第四哈希值;
确定单元602,用于根据所述第三哈希值,从所述第一存储器获取至少一个流表的关键字的第二哈希值,并通过将所述第四哈希值与所述至少一个流表的关键字的第二哈希值进行比较,确定与所述待转发报文匹配的流表;其中,所述第一存储器中存储第二哈希值的地址根据所述流表的关键字的第一哈希值确定;
第二获取单元603,用于从第二存储器中获取与所述待转发报文匹配的流表的关键字,其中,所述第二存储器中存储有流表的关键字和数据;
转发单元604,用于在所述流表的关键字与所述待转发报文的关键字匹配的情况下,根据所述流表的数据执行对所述待转发报文进行转发处理。
在一些实施例中,所述确定单元具体用于:
根据所述报文的第二哈希值,得到所述第一存储器中对应的桶的地址;
将所述桶的各个槽位中存储的流表的第二哈希值与所述报文的第四哈希值进行比较,将具有相同哈希值的流表确定为与所述待转发报文匹配的流表。
在一些实施例中,所述转发单元具体用于:
获取与所述待转发报文匹配的流表的标识信息;
根据所述标识信息,得到所述第二存储器中对应的桶的地址;
获取所述桶中存储的流表的关键字和数据;
在所述流表的关键字与所述待转发报文的关键字匹配的情况下,根据所述流表的数据执行对所述待转发报文进行转发处理。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请还提供了一种计算设备,参见图7,图7是一示例性实施例提供的一种计算设备的示意结构图。请参考图7,在硬件层面,该设备包括处理器702、内部总线704、网络接口706、内存708以及非易失性存储器710,当然还可能包括实现其他功能所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器702从非易失性存储器710中读取对应的计算机程序到内存708中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本申请还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现本申请任一实施例所提供的数据传输方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(Central ProcessingUnit,CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RandomAccess Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read-Only Memory,ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(Phase-change Random AccessMemory,PRAM)、静态随机存取存储器(Static Random-Access Memory,SRAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead Only Memory,EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CompactDisc Read Only Memory,CD-ROM)、数字多功能光盘(Digital Video Disc,DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(Transitory Media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (10)
1.一种流表存储方法,其特征在于,所述方法包括:
获取待存储流表的关键字和数据;
获取所述关键字的第一哈希值和第二哈希值;
根据所述第一哈希值,将所述待存储流表的第二哈希值存储在第一存储器中;
将所述待存储流表的关键字和数据存储在第二存储器中。
2.根据权利要求1所述的方法,其特征在于,所述待存储流表具有标识信息,所述根据所述第一哈希值,将所述待存储流表的第二哈希值存储在第一存储器中,包括:
根据所述第一哈希值,得到所述待存储流表在所述第一存储器中对应的桶的地址;
将所述待存储流表的标识信息和所述第二哈希值存储于所述桶的槽位中。
3.根据权利要求2所述的方法,其特征在于,所述根据所述待存储流表的关键字和数据存储在第二存储器中,包括:
根据所述待存储流表的标识信息,得到所述待存储流表在所述第二存储器中对应的桶的地址;
将所述待存储流表的关键字和数据存储在所述桶的槽位中。
4.一种报文转发方法,其特征在于,所述方法包括:
获取待转发报文的关键字,并获取所述关键字的第三哈希值和第四哈希值;
根据所述第三哈希值,从第一存储器获取至少一个流表的关键字的第二哈希值,并通过将所述第四哈希值与所述至少一个流表的关键字的第二哈希值进行比较,确定与所述待转发报文匹配的流表;其中,所述第一存储器中存储第二哈希值的地址根据所述流表的关键字的第一哈希值确定;
从第二存储器中获取与所述待转发报文匹配的流表的关键字,其中,所述第二存储器中存储有流表的关键字和数据;
在所述流表的关键字与所述待转发报文的关键字匹配的情况下,根据所述流表的数据执行对所述待转发报文进行转发处理。
5.根据权利要求4所述的方法,其特征在于,所述通过将所述报文的关键字的第四哈希值与所述至少一个流表的关键字的第二哈希值进行比较,确定与所述报文匹配的流表,包括:
根据所述报文的第二哈希值,得到所述第一存储器中对应的桶的地址;
将所述桶的各个槽位中存储的流表的第二哈希值与所述报文的第四哈希值进行比较,将具有相同哈希值的流表确定为与所述待转发报文匹配的流表。
6.根据权利要求5所述的方法,其特征在于,所述桶的各个槽中还存储有流表的标识信息;所述从第二存储器中获取所述流表的关键字,包括:
获取与所述待转发报文匹配的流表的标识信息;
根据所述标识信息,得到所述第二存储器中对应的桶的地址;
获取所述桶中存储的流表的关键字和数据;
在所述流表的关键字与所述待转发报文的关键字匹配的情况下,根据所述流表的数据执行对所述待转发报文进行转发处理。
7.一种流表存储装置,其特征在于,所述装置包括:
第一获取单元,用于获取待存储流表的关键字和数据;
第二获取单元,用于获取所述关键字的第一哈希值和第二哈希值;
第一存储单元,用于根据所述第一哈希值,将所述待存储流表的第二哈希值存储在第一存储器中;
第二存储单元,用于将所述待存储流表的关键字和数据存储在第二存储器中。
8.一种报文转发装置,其特征在于,所述装置包括:
第一获取单元,用于获取待转发报文的关键字,并获取所述关键字的第三哈希值和第四哈希值;
确定单元,用于根据所述第三哈希值,从所述第一存储器获取至少一个流表的关键字的第二哈希值,并通过将所述第四哈希值与所述至少一个流表的关键字的第二哈希值进行比较,确定与所述待转发报文匹配的流表;其中,所述第一存储器中存储第二哈希值的地址根据所述流表的关键字的第一哈希值确定;
第二获取单元,用于从第二存储器中获取与所述待转发报文匹配的流表的关键字,其中,所述第二存储器中存储有流表的关键字和数据;
转发单元,用于在所述流表的关键字与所述待转发报文的关键字匹配的情况下,根据所述流表的数据执行对所述待转发报文进行转发处理。
9.一种计算设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1至3任一项或4至6任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如权利要求1至3任一项或4至6任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210295137.9A CN114780537A (zh) | 2022-03-23 | 2022-03-23 | 流表存储及报文转发方法、装置、计算设备及介质 |
PCT/CN2023/081724 WO2023179433A1 (zh) | 2022-03-23 | 2023-03-15 | 流表存储及报文转发方法、装置、计算设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210295137.9A CN114780537A (zh) | 2022-03-23 | 2022-03-23 | 流表存储及报文转发方法、装置、计算设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114780537A true CN114780537A (zh) | 2022-07-22 |
Family
ID=82425216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210295137.9A Pending CN114780537A (zh) | 2022-03-23 | 2022-03-23 | 流表存储及报文转发方法、装置、计算设备及介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114780537A (zh) |
WO (1) | WO2023179433A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116248593A (zh) * | 2022-12-30 | 2023-06-09 | 天翼云科技有限公司 | 一种流表关键字匹配方法、装置、电子设备和存储介质 |
CN116600031A (zh) * | 2023-07-18 | 2023-08-15 | 无锡沐创集成电路设计有限公司 | 报文处理方法、装置、设备及存储介质 |
WO2023179433A1 (zh) * | 2022-03-23 | 2023-09-28 | 阿里巴巴(中国)有限公司 | 流表存储及报文转发方法、装置、计算设备及介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247337B (zh) * | 2008-02-18 | 2012-11-21 | 华为技术有限公司 | 一种报文转发的方法和设备 |
CN106302172A (zh) * | 2015-05-18 | 2017-01-04 | 深圳市中兴微电子技术有限公司 | 同时支持哈希查找和路由查找的存储、查找方法和装置 |
CN114064572B (zh) * | 2021-11-12 | 2024-03-19 | 苏州慧工云信息科技有限公司 | 一种基于哈希算法的对象存储方法及系统 |
CN114780537A (zh) * | 2022-03-23 | 2022-07-22 | 阿里巴巴(中国)有限公司 | 流表存储及报文转发方法、装置、计算设备及介质 |
-
2022
- 2022-03-23 CN CN202210295137.9A patent/CN114780537A/zh active Pending
-
2023
- 2023-03-15 WO PCT/CN2023/081724 patent/WO2023179433A1/zh unknown
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023179433A1 (zh) * | 2022-03-23 | 2023-09-28 | 阿里巴巴(中国)有限公司 | 流表存储及报文转发方法、装置、计算设备及介质 |
CN116248593A (zh) * | 2022-12-30 | 2023-06-09 | 天翼云科技有限公司 | 一种流表关键字匹配方法、装置、电子设备和存储介质 |
CN116600031A (zh) * | 2023-07-18 | 2023-08-15 | 无锡沐创集成电路设计有限公司 | 报文处理方法、装置、设备及存储介质 |
CN116600031B (zh) * | 2023-07-18 | 2023-10-31 | 无锡沐创集成电路设计有限公司 | 报文处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023179433A1 (zh) | 2023-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114780537A (zh) | 流表存储及报文转发方法、装置、计算设备及介质 | |
CN112074818A (zh) | 用于能够在区块链网络中访问过去的交易的方法及节点 | |
CN107992577B (zh) | 一种哈希表数据冲突处理方法及装置 | |
CN116405578A (zh) | 一种资产识别方法及装置 | |
CN112948501B (zh) | 数据解析方法、装置及系统 | |
CN112800123B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN114818458A (zh) | 系统参数优化方法、装置、计算设备及介质 | |
CN114936010A (zh) | 数据处理方法、装置、设备及介质 | |
CN112068948B (zh) | 数据散列方法、可读存储介质和电子设备 | |
CN107436918B (zh) | 数据库实现方法、装置和设备 | |
CN110825652B (zh) | 淘汰磁盘块上的缓存数据的方法、装置及设备 | |
CN117193669B (zh) | 一种报文描述符离散存储方法、装置、设备及存储介质 | |
CN113596098A (zh) | 会话检索方法、装置、设备及计算机可读存储介质 | |
CN111651466A (zh) | 数据采样方法及装置 | |
CN109214884B (zh) | 需求撮合方法及装置、电子设备 | |
CN116107761B (zh) | 性能调优方法、系统、电子设备及可读存储介质 | |
CN115391349A (zh) | 一种数据处理方法及装置 | |
CN115037783B (zh) | 数据传输方法及装置 | |
CN108809726B (zh) | 盒覆盖节点的方法和系统 | |
CN109344093B (zh) | 缓存结构、读写数据的方法和装置 | |
CN110213314B (zh) | 确定存储节点的方法、装置、服务器 | |
CN110221971B (zh) | 搜索引擎的测试方法及装置、电子设备、存储介质 | |
CN114003607A (zh) | 一种区块链数据的存储方法及装置 | |
JP6495343B2 (ja) | リスト内でのアイテム一致の検索 | |
CN114969256A (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 |