CN113746893A - 一种基于fpga的智能网卡数据转发方法、***及终端 - Google Patents
一种基于fpga的智能网卡数据转发方法、***及终端 Download PDFInfo
- Publication number
- CN113746893A CN113746893A CN202110806562.5A CN202110806562A CN113746893A CN 113746893 A CN113746893 A CN 113746893A CN 202110806562 A CN202110806562 A CN 202110806562A CN 113746893 A CN113746893 A CN 113746893A
- Authority
- CN
- China
- Prior art keywords
- flow table
- cache module
- table rule
- network card
- intelligent network
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000009471 action Effects 0.000 claims abstract description 32
- 230000000737 periodic effect Effects 0.000 claims abstract description 19
- 230000032683 aging Effects 0.000 claims description 63
- 238000005538 encapsulation Methods 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 238000013508 migration Methods 0.000 description 5
- 230000005012 migration Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000002347 injection Methods 0.000 description 3
- 239000007924 injection Substances 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种基于FPGA的智能网卡数据转发方法、***及终端,该方法包括:定义智能网卡的FPGA上用于存放高热度流表规则的模块为第一缓存模块,智能网卡上用于存放低热度流表规则的硬件模块为第二缓存模块;当数据流中的数据报文进入智能网卡时,通过查询智能网卡SOC CPU内部的流表规则,确定数据报文所执行的动作,并将该流表规则下发至第一缓存模块中;通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制当前流表规则在第一缓存模块和第二缓存模块之间切换。该***包括:第一缓存模块、第二缓存模块和软件控制模块。该终端包括存储器和处理器。通过本申请,能够有效提高智能网卡的数据转发性能和转发效率。
Description
技术领域
本申请涉及网络通信技术领域,特别是涉及一种基于FPGA(Field-ProgrammableGate Array,现场可编程门阵列)的智能网卡数据转发方法、***及终端。
背景技术
在网络通信技术领域,OVS(Open Virtual Switch,开放虚拟交换机)是当前云数据中心内网络基础架构的重要组成部分。OVS的数据路径在内核态实现,通常会消耗大量的CPU计算资源。随着数据规模的扩大,用户对OVS的数据转发性能要求越来越高。因此,如何提升数据转发性能,是个重要的技术问题。
目前,以OVS数据转发为例,提升OVS数据转发性能通常包括两个改进方向:一个是软件层面的Bypass kernel技术。该方法主要是将数据路径从内核态移至用户态,配合一系列的优化,提升转发效率,提高网络吞吐量。然而软件方向的改进,对提升OVS的转发性能帮助有限,同时也会占用宝贵的CPU资源。因此,更高效的是另一个方向:硬件层面的offload技术。该方法主要通过将OVS流表卸载至智能网卡,使用专用硬件ASIC或者FPGA来进行加速。
然而,目前硬件方面进行数据转发的方法中,由于流表规模越来越大,智能网卡所缓存的流表规则会超过硬件容量,如何选择哪些流表规则卸载到硬件,如何老化已经卸载到硬件的规则,是进一步提升转发性能必然要面对的问题。
发明内容
本申请提供了一种基于FPGA的智能网卡数据转发方法、***及终端,以解决现有技术中的数据转发方法使得数据转发性能不够高的问题。
为了解决上述技术问题,本申请实施例公开了如下技术方案:
一种基于FPGA的智能网卡数据转发方法,所述方法包括:
定义智能网卡的FPGA上用于存放高热度流表规则的模块为第一缓存模块,智能网卡上用于存放低热度流表规则的硬件模块为第二缓存模块,其中,高热度流表规则为设定时间内被数据报文命中的流表规则,低热度流表规则为设定时间内没有被数据报文命中的流表规则;
当数据流中的数据报文进入智能网卡时,通过查询第一缓存模块,判断所述数据报文是否命中第一缓存模块中的流表规则;
如果是,执行指定的动作,且第一缓存模块中的命中计数器加1,所述指定的动作包括:转发、丢弃、镜像、添加封装中的任意一种;
如果否,通过查询第二缓存模块,判断所述数据报文是否命中第二缓存模块中的流表规则;
如果是,执行指定的动作,且第二缓存模块中的命中计数器加1;
如果否,智能网卡的SOC CPU通过查询其内部的流表规则,确定所述数据报文所执行的动作,并将所述数据报文命中的流表规则下发至第一缓存模块中;
通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制所述当前流表规则在第一缓存模块和第二缓存模块之间切换。
可选地,所述定义智能网卡的FPGA上用于存放高热度流表规则的硬件模块为第一缓存模块,智能网卡上用于存放低热度规则的硬件模块为第二缓存模块之前,所述方法还包括:
保存OVS的所有流表规则,并记录任一流表规则的流表规则属性,所述流表规则属性包括:硬件卸载标记、命中次数以及老化时间。
可选地,所述通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制所述当前流表规则在第一缓存模块和第二缓存模块之间切换,包括:
当数据报文触发流表卸载时,将当前流表规则卸载至第一缓存模块中,并更新其硬件卸载标记为一级缓存,重置命中次数以老化时间;
根据设定的查询周期,从智能网卡中查询流表规则命中次数,并根据查询结果更新流表规则属性;
判断当前流表规则的老化时间是否≤设定的老化时间阈值;
如果是,将当前流表规则从第一缓存模块迁移至第二缓存模块,并更新当前流表规则的硬件卸载标记为二级缓存;
当前流表规则的老化时间为0时,将当前流表规则从第二缓存模块中删除,并更新当前流表规则的硬件卸载标记为无,重置命中次数,且老化时间设置为无效值。
可选地,所述通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制所述当前流表规则在第一缓存模块和第二缓存模块之间切换,还包括:
判断第二缓存模块中的任一流表规则的命中次数在设定的时间内增加值是否≥设定的命中次数阈值;
如果是,将所述任一流表规则重新从第二缓存模块迁移至第一缓存模块,并更新所述任一流表规则的硬件卸载标记为一级缓存,重置命中计数器,且老化时间设置为预设老化时间最大值。
可选地,当数据流中的数据报文进入智能网卡时,通过查询第一缓存模块,判断所述数据报文是否命中第一缓存模块中的流表规则之前,所述方法还包括:
在智能网卡初始化时,对所述第一缓存模块和第二缓存模块初始化。
可选地,对所述第一缓存模块和第二缓存模块初始化的方法,包括:
在第一缓存模块中添加默认的流表规则,并转发数据报文至第二缓存模块进行查询;
在第二缓存模块中添加默认的流表规则,并转发至SOC CPU进行查询。
一种基于FPGA的智能网卡数据转发***,所述***包括:
第一缓存模块,用于存放高热度流表规则,所述第一缓存模块设置于智能网卡的FPGA上,高热度流表规则为设定时间内被数据报文命中的流表规则;
第二缓存模块,用于存放低热度流表规则,所述第二缓存模块设置于智能网卡上,低热度流表规则为设定时间内没有被数据报文命中的流表规则;
软件控制模块,用于当数据流中的数据报文进入智能网卡时,通过查询所述软件控制模块内部的流表规则,确定所述数据报文所执行的动作,并将所述流表规则下发至第一缓存模块中;
所述软件控制模块,还用于通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制所述当前流表规则在第一缓存模块和第二缓存模块之间切换。
可选地,所述软件控制模块,还用于保存OVS的所有流表规则,并记录任一流表规则的流表规则属性,所述流表规则属性包括:硬件卸载标记、命中次数以及老化时间。
可选地,所述软件控制模块,还用于在智能网卡初始化时,对所述第一缓存模块和第二缓存模块初始化。
一种终端,所述终端包括:处理器以及与所述处理器通信连接的存储器,其中,
所述存储器中存储有可被所述处理器执行的指令,所述指令被所述处理器执行,以使所述处理器能够如上任意一项所述的基于FPGA的智能网卡数据转发方法。
本申请的实施例提供的技术方案可以包括以下有益效果:
本申请提供一种基于FPGA的智能网卡数据转发方法,该方法首先定义智能网卡的FPGA上用于存放高热度流表规则的模块为第一缓存模块,智能网卡上用于存放低热度流表规则的硬件模块为第二缓存模块,其次,当数据流中的数据报文进入智能网卡时,通过依次查询第一缓存模块和第二缓存模块,判断数据报文是否命中某一缓存模块中的流表规则,当命中其中一个缓存模块的流表规则时,执行该流表规则所指定的动作,且该缓存模块的命中计数器加1,当两个缓存模块的流表规则都没有命中时,智能网卡的SOC CPU通过查询其内部的流表规则,确定数据报文所执行的动作,并将数据报文命中的流表规则下发至第一缓存模块中;最后,通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制当前流表规则在第一缓存模块和第二缓存模块之间切换。本实施例通过定义第一缓存模块和第二缓存模块,对高热度流表规则和低热度流表规则进行区分,从而实现对流表规则执行两级缓存机制,这种方法能够确保第一缓存模块存放最常用的流表规则,以使得对应的数据流获得最高的转发性能,并为后续及时对低热度流表规则进行删除,节省空间和资源提供依据,从而有效提高数据转发效率。通过依次查询第一缓存模块和第二缓存模块,查看数据报文是否命中其中的流表规则,既能确保及时执行指定的动作,又能够对命中次数进行计数,从而为后续老化机制提供依据,进而提高数据转发效率。本实施例通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制当前流表规则在第一缓存模块和第二缓存模块之间切换,从而提高硬件的命中率,同时还有利于高热度数据的转发性能,进而提高整体的数据转发性能。
本申请还提供一种基于FPGA的智能网卡数据转发***,该***主要包括:第一缓存模块、第二缓存模块和软件控制模块。通过第一缓存模块和第二缓存模块,将数据流表规则分为高热度流表规则和低热度流表规则,实现对流表规则执行两级缓存机制,确保第一缓存模块存放最常用的流表规则,以使得对应的数据流获得最高的转发性能,并为后续及时对低热度流表规则进行删除,节省空间和资源提供依据,能够有效提高数据转发效率。通过软件控制模块,确定流表规则所存放的缓存模块,且通过周期性轮询的方式确定当前流表规则的热度,并根据热度在不同缓存间切换,从而提高硬件的命中率,同时还有利于高热度数据的转发性能,进而提高整个***的数据转发性能。
本申请还提供一种终端,该终端也具有如上基于FPGA的智能网卡数据转发方法和***相应的技术效果,在此不再赘述。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种基于FPGA的智能网卡数据转发方法的流程示意图;
图2为本申请实施例所提供的一种基于FPGA的智能网卡数据转发***的结构示意图;
图3为本申请实施例中基于FPGA的智能网卡数据转发***与智能网卡的连接关系示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
为了更好地理解本申请,下面结合附图来详细解释本申请的实施方式。
实施例一
参见图1,图1为本申请实施例所提供的一种基于FPGA的智能网卡数据转发方法的流程示意图。
由图1可知,本实施例中基于FPGA的智能网卡数据转发方法,主要包括如下过程:
S2:定义智能网卡的FPGA上用于存放高热度流表规则的模块为第一缓存模块,智能网卡上用于存放低热度流表规则的硬件模块为第二缓存模块。
本实施例中,高热度流表规则为设定时间内被数据报文命中的流表规则,低热度流表规则为设定时间内没有被数据报文命中的流表规则。通过定义两个缓存模块,实现两级缓存,确保最常用的流表规则存放至第一缓存模块中,以使得对应的数据流获得最高的转发性能。
第一缓存模块可以采用FPGA上的TCAM来实现,第二缓存模块可以采用DDR内存来实现。FPGA的硬件处理速度比DDR内存更快,采用FPGA上的TCAM作为第一缓存模块,能够有效提高数据转发效率。DDR是一个硬件处理速度比FPGA慢,但是容量要比FPGA大得多的模块,用于缓存低热度流表规则,能够缓解第一缓存模块的存储压力,也有利于提高数据转发效率。
进一步地,在步骤S2之前,还包括步骤S1:保存OVS的所有流表规则,并记录任一流表规则的流表规则属性。其中,流表规则属性包括:硬件卸载标记、命中次数以及老化时间。硬件卸载标记用于表示当前流表规则是否已经做硬件加速,以及当前流表规则存放于哪一级缓存模块中,使用哪一级缓存模块做加速。命中次数为硬件表项命中次数。老化时间用于反映硬件流表规则的空闲时间,当数据报文命中某一缓存模块中的流表规则时,会重置老化时间为最大值,也表示当前规则不应当被老化。
继续参见图1可知,定义第一缓存模块和第二缓存模块之后,执行步骤S4:当数据流中的数据报文进入智能网卡时,通过查询第一缓存模块,判断数据报文是否命中第一缓存模块中的流表规则。
本实施例中第一缓存模块存放的高热度流表规则,首先查询数据报文是否命中第一缓存模块中的流表规则,这种查询顺序有利于进一步提高数据转发性能。
如果数据报文命中第一缓存模块中的流表规则,执行步骤S5:执行指定的动作,且第一缓存模块中的命中计数器加1。
其中,指定的动作包括:转发、丢弃、镜像、添加封装中的任意一种。设置于智能网卡FPGA上的流表缓存模块记录有流表的匹配关键字、动作以及命中计数器。当有数据包命中其中的某条记录时,会执行指定的动作,同时命中计数器加1。
如果数据报文没有命中第一缓存模块中的流表规则,执行步骤S6:通过查询第二缓存模块,判断数据报文是否命中第二缓存模块中的流表规则。
如果数据报文命中第二缓存模块中的流表规则,执行步骤S7:执行指定的动作,且第二缓存模块中的命中计数器加1。
如果数据报文没有命中第二缓存模块中的流表规则,执行步骤S8:智能网卡的SOCCPU通过查询其内部的流表规则,确定数据报文所执行的动作,并将数据报文命中的流表规则下发至第一缓存模块中。
也就是说,如果数据报文既没有命中第一缓存模块中的流表规则,也没有命中第二缓存模块中的流表规则,需要交给智能网卡的CPU来决策,由智能网卡的SOC CPU通过查询其内部的流表规则,确定数据报文所需要执行的动作,同时这种数据报文会被认定为数据流首包,将数据报文命中的流表规则下发至第一缓存模块中。
进一步的,在步骤S4之前,该方法还包括S3:在智能网卡初始化时,对第一缓存模块和第二缓存模块初始化。
具体地,步骤S3包括如下过程:
S31:在第一缓存模块中添加默认的流表规则,并转发数据报文至第二缓存模块进行查询。
S32:在第二缓存模块中添加默认的流表规则,并转发至SOC CPU进行查询。
继续参见图1可知,本实施例的方法还包括步骤S9:通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制当前流表规则在第一缓存模块和第二缓存模块之间切换。
本实施例中周期性轮询的方法,主要是周期性读取智能网卡中的流表规则命中计数,包括第一缓存模块及第二缓存模块中的流表规则,如果读取到的命中计数增量为0,则将流表规则老化时间减少一个周期值;如果命中计数增加值不为0,则重置老化时间为老化最大值。
具体地,步骤S9又包括如下过程:
S91:当数据报文触发流表卸载时,将当前流表规则卸载至第一缓存模块中,并更新其硬件卸载标记为一级缓存,重置命中次数以老化时间。
S92:根据设定的查询周期,从智能网卡中查询流表规则命中次数,并根据查询结果更新流表规则属性。
S93:判断当前流表规则的老化时间是否≤设定的老化时间阈值。
如果当前流表规则的老化时间≤设定的老化时间阈值,执行步骤S94:将当前流表规则从第一缓存模块迁移至第二缓存模块,并更新当前流表规则的硬件卸载标记为二级缓存。通常当前流表规则的老化时间降低至设定的老化时间阈值时,即开启迁移动作,也就是将当前流表规则从第一缓存模块迁移至第二缓存模块,并更新当前流表规则的硬件卸载标记为二级缓存。本实施例中设定的老化时间阈值,根据不同硬件以及数据包的流量模型决定。
如果当前流表规则的老化时间>设定的老化时间阈值,不对流表规则进行迁移。
当前流表规则的老化时间为0时,执行步骤S95:将当前流表规则从第二缓存模块中删除,并更新当前流表规则的硬件卸载标记为无,重置命中次数,且老化时间设置为无效值。当前流表规则的老化时间降低至0,表示当前的流表规则被命中的次数太少,基本上没有被命中,通过步骤S95将其从第二缓存模块中删除,并更新其流表规则属性。这种方式,能够进一步节省CPU资源和空间,从而提高智能网卡的数据转发性能。
进一步地,本实施例的步骤S9还包括步骤S96:判断第二缓存模块中的任一流表规则的命中次数在设定的时间内增加值是否≥设定的命中次数阈值。
如果第二缓存模块中的任一流表规则的命中次数在设定的时间内增加值≥设定的命中次数阈值,执行步骤S97:将任一流表规则重新从第二缓存模块迁移至第一缓存模块,并更新任一流表规则的硬件卸载标记为一级缓存,重置命中计数器,且老化时间设置为预设老化时间最大值。
如果第二缓存模块中的任一流表规则的命中次数是<设定的命中次数阈值,不进行流表规则迁移。
综上所述,实际应用中采用本实施例中的方法,操作过程如下:
1)如果数据流中的第一个数据包进入网卡时,此时为首包数据转发,根据本实施例中的方法,会首先查询第一缓存模块,由于第一缓存模块为空,不会命中任何流表规则,接着查询第二缓存模块,会命中默认的流表规则,数据包被送到SOC CPU处理,SOC CPU根据流表规则将数据包转发至目的地,同时卸载该流表规则至第一缓存模块中,更新流表规则的硬件卸载标记为第一缓存模块,重置命中计数器为0,且老化时间设置为预设的老化最大值。
2)每当数据流中的后续数据包进入智能网卡,查询第一缓存模块,会命中上一步中缓存的流表规则,从而执行指定动作转发至目的地,每次命中第一缓存模块缓存的流表规则,该规则命中计数加1。
3)第二缓存模块中缓存的是低热度流表规则,通过周期性查询机制,如果检测到该流表规则的老化时间低于预设的老化阈值,则认为该流表数据变为低热度规则,此时通知FPGA删除第一缓存模块中的该流表规则,同时将该流表规则卸载到第二缓存模块中,更新规则的硬件卸载标记为第二缓存模块,重置命中计数为0,老化时间为预设老化最大值。
4)如果收到对应规则的数据包,会先查询第一缓存模块,由于未命中,继而查询第二缓存模块,命中上一步中缓存的流表规则,从而执行指定动作转发至目的地,每次命中第二缓存模块中的流表规则,该规则命中计数加1。
5)通过周期性查询机制,如果检测到该流表规则的老化时间高于预设的老化阈值,并且命中计数大于预设阈值,则认为该流表规则变为热规则,此时通知删除第二缓存模块中的该流表规则,同时将该流表规则卸载到第一缓存模块中,更新规则的硬件卸载标记为第一缓存模块,重置命中计数为0,老化时间为预设老化最大值。
6)通过周期性查询机制,如果检测到流标规则的老化时间为0,则认为该规则超时,会删除第二缓存模块中的该流表规则,同时更新规则硬件卸载标记为无,置命中计数和老化时间为无效值。
实施例二
在图1所示实施例的基础上参见图2,图2为本申请实施例所提供的一种基于FPGA的智能网卡数据转发***的结构示意图。由图2可知,本实施例中基于FPGA的智能网卡数据转发***主要包括:第一缓存模块、第二缓存模块和软件控制模块。
其中,第一缓存模块,用于存放高热度流表规则,第一缓存模块设置于智能网卡的FPGA上,高热度流表规则为设定时间内被数据报文命中的流表规则;第二缓存模块,用于存放低热度流表规则,第二缓存模块设置于智能网卡上,低热度流表规则为设定时间内没有被数据报文命中的流表规则。
第一缓存模块可以采用FPGA上的TCAM,第二缓存模块可以采用DDR内存。
软件控制模块,用于当数据流中的数据报文进入智能网卡时,通过查询软件控制模块内部的流表规则,确定数据流的数据报文所执行的动作,并将流表规则下发至第一缓存模块中;还用于通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制所述当前流表规则在第一缓存模块和第二缓存模块之间切换。
进一步地,本实施例中的软件控制模块还用于保存OVS的所有流表规则,并记录任一流表规则的流表规则属性,流表规则属性包括:硬件卸载标记、命中次数以及老化时间。
软件控制模块还用于在智能网卡初始化时,对第一缓存模块和第二缓存模块初始化。
具体地,本实施例的软件控制模块中包括:第一判断单元、第二判断单元、缓存切换单元、保存单元和初始化单元。
其中,第一判断单元,用于当数据流中的数据包进入智能网卡时,通过查询第一缓存模块,判断数据包是否命中第一缓存模块中的流表规则,如果是,执行指定的动作,且第一缓存模块中的命中计数器加1,其中,指定的动作包括:转发、丢弃、镜像、添加封装中的任意一种,如果否,启动第二判断模单元。第二判断单元用于通过查询第二缓存模块,判断数据包是否命中第二缓存模块中的流表规则,如果是,执行指定的动作,且第二缓存模块中的命中计数器加1。缓存切换单元,用于通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制当前流表规则在第一缓存模块和第二缓存模块之间切换。保存单元用于保存OVS的所有流表规则,并记录任一流表规则的流表规则属性。初始化单元,用于对第一缓存模块和第二缓存模块初始化,具体地,在第一缓存模块中添加默认的流表规则,并转发数据报文至第二缓存模块进行查询,在第二缓存模块中添加默认的流表规则,并转发至SOC CPU进行查询。
进一步地,缓存切换单元包括:卸载子单元、查询子单元、第一判断单元、第一迁移子单元、删除子单元、第二判断单元和第二迁移子单元。
其中,卸载子单元,用于当数据报文触发流表卸载时,将当前流表规则卸载至第一缓存模块中,并更新其硬件卸载标记为一级缓存,重置命中次数以老化时间;查询子单元,用于根据设定的查询周期,从智能网卡中查询流表规则命中次数,并根据查询结果更新流表规则属性;第一判断单元,用于判断当前流表规则的老化时间是否≤设定的老化时间阈值;第一迁移子单元,用于当前流表规则的老化时间≤设定的老化时间阈值时,将当前流表规则从第一缓存模块迁移至第二缓存模块,并更新当前流表规则的硬件卸载标记为二级缓存;删除子单元,用于当前流表规则的老化时间为0时,将当前流表规则从第二缓存模块中删除,并更新当前流表规则的硬件卸载标记为无,重置命中次数,且老化时间设置为无效值;第二判断子单元,用于判断第二缓存模块中的任一流表规则的命中次数在设定的时间内增加值是否≥设定的命中次数阈值;第二迁移子单元,用于当第二缓存模块中的任一流表规则的命中次数≥设定的命中次数阈值时,将任一流表规则重新从第二缓存模块迁移至第一缓存模块,并更新任一流表规则的硬件卸载标记为一级缓存,重置命中计数器,且老化时间设置为预设老化时间最大值。
本申请实施例中基于FPGA的智能网卡数据转发***与智能网卡的连接关系示意图,可以参见图3所示。
该实施例中基于FPGA的智能网卡数据转发***的工作原理和工作方法,在图1所示的实施例中已经详细阐述,两个实施例之间可以互相参照,在此不再赘述。
实施例三
本申请还提供一种终端,该终端包括:处理器以及与处理器通信连接的存储器,其中,存储器中存储有可被处理器执行的指令,指令被处理器执行,以使处理器能够执行如上基于进程间通信机制的故障注入验证方法。
处理器所执行的基于进程间通信机制的故障注入验证方法如下:
1)保存OVS的所有流表规则,并记录任一流表规则的流表规则属性,流表规则属性包括:硬件卸载标记、命中次数以及老化时间;
2)定义智能网卡的FPGA上用于存放高热度流表规则的模块为第一缓存模块,智能网卡上用于存放低热度流表规则的硬件模块为第二缓存模块,其中,高热度流表规则为设定时间内被数据报文命中的流表规则,低热度流表规则为设定时间内没有被数据报文命中的流表规则;
3)在智能网卡初始化时,对第一缓存模块和第二缓存模块初始化;
4)当数据流中的数据报文进入智能网卡时,通过查询第一缓存模块,判断数据报文是否命中第一缓存模块中的流表规则;
5)如果数据报文命中第一缓存模块中的流表规则,执行指定的动作,且第一缓存模块中的命中计数器加1,指定的动作包括:转发、丢弃、镜像、添加封装中的任意一种;
6)如果数据报文没有命中第一缓存模块中的流表规则,通过查询第二缓存模块,判断数据报文是否命中第二缓存模块中的流表规则;
7)如果数据报文命中第二缓存模块中的流表规则,执行指定的动作,且第二缓存模块中的命中计数器加1;
8)如果数据报文没有命中第二缓存模块中的流表规则,智能网卡的SOC CPU通过查询其内部的流表规则,确定数据报文所执行的动作,并将数据报文命中的流表规则下发至第一缓存模块中;
9)通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制当前流表规则在第一缓存模块和第二缓存模块之间切换。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种基于FPGA的智能网卡数据转发方法,其特征在于,所述方法包括:
定义智能网卡的FPGA上用于存放高热度流表规则的模块为第一缓存模块,智能网卡上用于存放低热度流表规则的硬件模块为第二缓存模块,其中,高热度流表规则为设定时间内被数据报文命中的流表规则,低热度流表规则为设定时间内没有被数据报文命中的流表规则;
当数据流中的数据报文进入智能网卡时,通过查询第一缓存模块,判断所述数据报文是否命中第一缓存模块中的流表规则;
如果是,执行指定的动作,且第一缓存模块中的命中计数器加1,所述指定的动作包括:转发、丢弃、镜像、添加封装中的任意一种;
如果否,通过查询第二缓存模块,判断所述数据报文是否命中第二缓存模块中的流表规则;
如果是,执行指定的动作,且第二缓存模块中的命中计数器加1;
如果否,智能网卡的SOC CPU通过查询其内部的流表规则,确定所述数据报文所执行的动作,并将所述数据报文命中的流表规则下发至第一缓存模块中;
通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制所述当前流表规则在第一缓存模块和第二缓存模块之间切换。
2.根据权利要求1所述的一种基于FPGA的智能网卡数据转发方法,其特征在于,所述定义智能网卡的FPGA上用于存放高热度流表规则的硬件模块为第一缓存模块,智能网卡上用于存放低热度规则的硬件模块为第二缓存模块之前,所述方法还包括:
保存OVS的所有流表规则,并记录任一流表规则的流表规则属性,所述流表规则属性包括:硬件卸载标记、命中次数以及老化时间。
3.根据权利要求2所述的一种基于FPGA的智能网卡数据转发方法,其特征在于,所述通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制所述当前流表规则在第一缓存模块和第二缓存模块之间切换,包括:
当数据报文触发流表卸载时,将当前流表规则卸载至第一缓存模块中,并更新其硬件卸载标记为一级缓存,重置命中次数以老化时间;
根据设定的查询周期,从智能网卡中查询流表规则命中次数,并根据查询结果更新流表规则属性;
判断当前流表规则的老化时间是否≤设定的老化时间阈值;
如果是,将当前流表规则从第一缓存模块迁移至第二缓存模块,并更新当前流表规则的硬件卸载标记为二级缓存;
当前流表规则的老化时间为0时,将当前流表规则从第二缓存模块中删除,并更新当前流表规则的硬件卸载标记为无,重置命中次数,且老化时间设置为无效值。
4.根据权利要求3所述的一种基于FPGA的智能网卡数据转发方法,其特征在于,所述通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制所述当前流表规则在第一缓存模块和第二缓存模块之间切换,还包括:
判断第二缓存模块中的任一流表规则的命中次数在设定的时间内增加值是否≥设定的命中次数阈值;
如果是,将所述任一流表规则重新从第二缓存模块迁移至第一缓存模块,并更新所述任一流表规则的硬件卸载标记为一级缓存,重置命中计数器,且老化时间设置为预设老化时间最大值。
5.根据权利要求1所述的一种基于FPGA的智能网卡数据转发方法,其特征在于,当数据流中的数据报文进入智能网卡时,通过查询第一缓存模块,判断所述数据报文是否命中第一缓存模块中的流表规则之前,所述方法还包括:
在智能网卡初始化时,对所述第一缓存模块和第二缓存模块初始化。
6.根据权利要求5所述的一种基于FPGA的智能网卡数据转发方法,其特征在于,对所述第一缓存模块和第二缓存模块初始化的方法,包括:
在第一缓存模块中添加默认的流表规则,并转发数据报文至第二缓存模块进行查询;
在第二缓存模块中添加默认的流表规则,并转发至SOC CPU进行查询。
7.一种基于FPGA的智能网卡数据转发***,其特征在于,所述***包括:
第一缓存模块,用于存放高热度流表规则,所述第一缓存模块设置于智能网卡的FPGA上,高热度流表规则为设定时间内被数据报文命中的流表规则;
第二缓存模块,用于存放低热度流表规则,所述第二缓存模块设置于智能网卡上,低热度流表规则为设定时间内没有被数据报文命中的流表规则;
软件控制模块,用于当数据流中的数据报文进入智能网卡时,通过查询所述软件控制模块内部的流表规则,确定所述数据报文所执行的动作,并将所述流表规则下发至第一缓存模块中;
所述软件控制模块,还用于通过周期性轮询的方法确定当前流表规则的热度,并根据当前流表规则的热度,控制所述当前流表规则在第一缓存模块和第二缓存模块之间切换。
8.根据权利要求7所述的一种基于FPGA的智能网卡数据转发***,其特征在于,所述软件控制模块,还用于保存OVS的所有流表规则,并记录任一流表规则的流表规则属性,所述流表规则属性包括:硬件卸载标记、命中次数以及老化时间。
9.根据权利要求7所述的一种基于FPGA的智能网卡数据转发***,其特征在于,所述软件控制模块,还用于在智能网卡初始化时,对所述第一缓存模块和第二缓存模块初始化。
10.一种终端,其特征在于,所述终端包括:处理器以及与所述处理器通信连接的存储器,其中,
所述存储器中存储有可被所述处理器执行的指令,所述指令被所述处理器执行,以使所述处理器能够执行权利要求1至6中任意一项所述的基于FPGA的智能网卡数据转发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110806562.5A CN113746893B (zh) | 2021-07-16 | 2021-07-16 | 一种基于fpga的智能网卡数据转发方法、***及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110806562.5A CN113746893B (zh) | 2021-07-16 | 2021-07-16 | 一种基于fpga的智能网卡数据转发方法、***及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113746893A true CN113746893A (zh) | 2021-12-03 |
CN113746893B CN113746893B (zh) | 2023-07-14 |
Family
ID=78728707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110806562.5A Active CN113746893B (zh) | 2021-07-16 | 2021-07-16 | 一种基于fpga的智能网卡数据转发方法、***及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113746893B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115002028A (zh) * | 2022-04-30 | 2022-09-02 | 济南浪潮数据技术有限公司 | 一种报文处理方法、装置及介质 |
CN115277582A (zh) * | 2022-07-13 | 2022-11-01 | 清华大学 | 一种软件数据包分类加速方法、装置、设备及存储介质 |
CN115499312A (zh) * | 2022-11-11 | 2022-12-20 | 之江实验室 | 基于fpga后端p4多模态智能网卡的整合配置方法 |
CN115622959A (zh) * | 2022-11-07 | 2023-01-17 | 浪潮电子信息产业股份有限公司 | 交换机控制方法、装置、设备、存储介质及sdn网络 |
WO2023024799A1 (zh) * | 2021-08-24 | 2023-03-02 | 苏州盛科通信股份有限公司 | 一种报文的转发方法、网络转发设备及计算机存储介质 |
CN116185886A (zh) * | 2022-12-13 | 2023-05-30 | 中国科学院声学研究所 | 一种匹配表*** |
CN116684358A (zh) * | 2023-07-31 | 2023-09-01 | 之江实验室 | 一种可编程网元设备的流表管理***及方法 |
WO2024037366A1 (zh) * | 2022-08-15 | 2024-02-22 | 阿里云计算有限公司 | 转发规则下发方法、智能网卡及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112134806A (zh) * | 2020-09-30 | 2020-12-25 | 新华三大数据技术有限公司 | 一种流表老化时间调整方法、装置及存储介质 |
CN112565090A (zh) * | 2020-11-09 | 2021-03-26 | 烽火通信科技股份有限公司 | 一种高速转发方法及装置 |
CN112838989A (zh) * | 2019-11-25 | 2021-05-25 | 中兴通讯股份有限公司 | 一种数据流管理方法、网络设备及存储介质 |
CN112929299A (zh) * | 2021-01-27 | 2021-06-08 | 广州市品高软件股份有限公司 | 基于fpga加速卡的sdn云网络实现方法、装置及设备 |
-
2021
- 2021-07-16 CN CN202110806562.5A patent/CN113746893B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112838989A (zh) * | 2019-11-25 | 2021-05-25 | 中兴通讯股份有限公司 | 一种数据流管理方法、网络设备及存储介质 |
CN112134806A (zh) * | 2020-09-30 | 2020-12-25 | 新华三大数据技术有限公司 | 一种流表老化时间调整方法、装置及存储介质 |
CN112565090A (zh) * | 2020-11-09 | 2021-03-26 | 烽火通信科技股份有限公司 | 一种高速转发方法及装置 |
CN112929299A (zh) * | 2021-01-27 | 2021-06-08 | 广州市品高软件股份有限公司 | 基于fpga加速卡的sdn云网络实现方法、装置及设备 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023024799A1 (zh) * | 2021-08-24 | 2023-03-02 | 苏州盛科通信股份有限公司 | 一种报文的转发方法、网络转发设备及计算机存储介质 |
CN115002028B (zh) * | 2022-04-30 | 2024-02-13 | 济南浪潮数据技术有限公司 | 一种报文处理方法、装置及介质 |
CN115002028A (zh) * | 2022-04-30 | 2022-09-02 | 济南浪潮数据技术有限公司 | 一种报文处理方法、装置及介质 |
CN115277582A (zh) * | 2022-07-13 | 2022-11-01 | 清华大学 | 一种软件数据包分类加速方法、装置、设备及存储介质 |
CN115277582B (zh) * | 2022-07-13 | 2024-03-26 | 清华大学 | 一种软件数据包分类加速方法、装置、设备及存储介质 |
WO2024037366A1 (zh) * | 2022-08-15 | 2024-02-22 | 阿里云计算有限公司 | 转发规则下发方法、智能网卡及存储介质 |
CN115622959A (zh) * | 2022-11-07 | 2023-01-17 | 浪潮电子信息产业股份有限公司 | 交换机控制方法、装置、设备、存储介质及sdn网络 |
CN115499312A (zh) * | 2022-11-11 | 2022-12-20 | 之江实验室 | 基于fpga后端p4多模态智能网卡的整合配置方法 |
CN116185886B (zh) * | 2022-12-13 | 2023-10-13 | 中国科学院声学研究所 | 一种匹配表*** |
CN116185886A (zh) * | 2022-12-13 | 2023-05-30 | 中国科学院声学研究所 | 一种匹配表*** |
WO2024124597A1 (zh) * | 2022-12-13 | 2024-06-20 | 中国科学院声学研究所 | 一种匹配表*** |
CN116684358B (zh) * | 2023-07-31 | 2023-12-12 | 之江实验室 | 一种可编程网元设备的流表管理***及方法 |
CN116684358A (zh) * | 2023-07-31 | 2023-09-01 | 之江实验室 | 一种可编程网元设备的流表管理***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113746893B (zh) | 2023-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113746893A (zh) | 一种基于fpga的智能网卡数据转发方法、***及终端 | |
US20230153264A1 (en) | Data transmission method, chip, and device | |
JP3957570B2 (ja) | ルータ装置 | |
KR102364332B1 (ko) | 비휘발성 메모리 지속화 방법 및 컴퓨팅 디바이스 | |
CN108089825B (zh) | 一种基于分布式集群的存储*** | |
US20170005953A1 (en) | Hierarchical Packet Buffer System | |
WO2017219867A1 (zh) | 一种短消息重试处理方法及装置、*** | |
US20210392092A1 (en) | Buffer management method and apparatus | |
CN113111033A (zh) | 一种分布式对象存储***中桶索引动态重分的方法和*** | |
CN105302493A (zh) | 一种混合存储阵列中ssd缓存的换入换出控制方法及*** | |
CN113572582B (zh) | 数据发送、重传控制方法及***、存储介质及电子设备 | |
CN113645140B (zh) | 报文的统计方法、装置、存储介质及网络设备 | |
CN107517266A (zh) | 一种基于分布式缓存的即时通讯方法 | |
CN111522506B (zh) | 一种数据读取的方法及装置 | |
CN112711564A (zh) | 合并处理方法以及相关设备 | |
CN101610477B (zh) | 多媒体消息业务的处理***和方法 | |
CN114327262B (zh) | 一种用于智能网卡的维护端口映射的方法和装置 | |
CN115982162A (zh) | 一种报文转发表查询方法及电子设备 | |
CN103491124A (zh) | 一种对彩信数据进行处理的方法及分布式缓存*** | |
US20150036688A1 (en) | Packet relay device and packet relay method | |
CN114615219B (zh) | 网络接口装置、电子装置以及网络接口装置的操作方法 | |
CN117955907B (zh) | 报文处理方法、虚拟交换机、装置和存储介质 | |
CN114900456B (zh) | 一种mac地址管理装置及方法 | |
CN116074250B (zh) | 流表处理方法、***、设备和存储介质 | |
WO2023024799A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |