一种流表卸载系统、方法、设备以及存储介质与流程

未命名 10-28 阅读:136 评论:0


1.本发明涉及虚拟化技术,尤其涉及一种流表卸载系统、方法、设备以及存储介质。


背景技术:

2.随着云计算网络发展,其广泛的业务需求致使数据中心快速增长,数据流量剧增,通过虚拟交换机实现数据转发的限制日益凸显,对日益增长的业务需求越来越显得力不从心。由于虚拟交换机原生的流表带掩码,各种组合匹配情况较多,而硬件在实现掩码功能会比较复杂,所以,通常考虑使用三态内容寻址存储器,但是,三态内容寻址存储器的工艺比较复杂,会增加成本,而且功耗也会较大。


技术实现要素:

3.本发明实施例提供了一种流表卸载系统、方法、设备以及存储介质,能够有效减少网卡缓存中流表的数量,减少网卡缓存的消耗。
4.第一方面,提供一种流表卸载系统,包括:网卡缓存,用于存储流表,所述流表不包括掩码;网卡,用于对所述网卡缓存中的流表进行查询,提供网络通信的硬件资源;处理器,用于分别与所述网卡进行通信,运行虚拟交换机以及数据平面开发套件,所述虚拟交换机为基于所述处理器、所述网卡和内存的硬件资源虚拟出的交换机,所述数据平面开发套件用于协助所述虚拟交换机以提高所述虚拟交换机的性能;所述网卡,用于接收第一数据包,从所述第一数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的第一流表匹配的情况下,按照所述第一流表将所述第一数据包进行转发,其中,所述第一数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包,所述第一流表不包括掩码。
5.在一些可能的设计中,所述网卡还用于接收第二数据包,从所述第二数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的流表均不匹配的情况下,将所述第二数据包发送给所述数据平面开发套件,其中,所述第二数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包;所述数据平面开发套件,用于从所述第二数据包中提取第二流表被掩码遮蔽的部分所需要的信息,结合第二流表生成所述第一流表,将所述第一流表发送至所述网卡缓存中进行存储,其中,所述第二流表包括掩码,所述第一数据包和所述第二数据包属于同一个数据流。
6.在一些可能的设计中,所述网卡还用于接收第三数据包,从所述第三数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的流表均不匹配的情况下,将所述第三数据包发送给所述数据平面开发套件,其中,所述第三数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包;所述数据平面开发套件,用于从所述第三数据包中提取关键词,根据所述关键词
查询所述数据平面开发套件中缓存的流表,并在所述关键词和所述数据平面开发套件中的流表均不匹配的情况下,将所述第三数据包发送给所述虚拟交换机;所述虚拟交换机,用于根据所述第三数据包生成带掩码的所述第二流表,并将所述第二流表下发给所述数据平面开发套件,所述第一数据包和所述第三数据包属于同一个数据流。
7.在一些可能的设计中,所述网卡缓存不包括三态内容寻址存储器。
8.在一些可能的设计中,所述第一流表包括第一匹配项和第一转发项,所述第二流表包括第二匹配项以及第二转发项,所述第一匹配项只包括与所述关键词对应的项,所述第二匹配项包括所述关键词对应的项以及与所述关键词无关的项,所述第一转发项和所述第二转发项相同。
9.第二方面,提供了一种流表卸载方法,包括:通过网卡缓存存储流表,所述流表不包括掩码;通过网卡对所述网卡缓存中的流表进行查询,提供网络通信的硬件资源;通过处理器分别与所述网卡进行通信,运行虚拟交换机以及数据平面开发套件,所述虚拟交换机为基于所述处理器、所述网卡和内存的硬件资源虚拟出的交换机,所述数据平面开发套件用于协助所述虚拟交换机以提高所述虚拟交换机的性能;通过所述网卡接收第一数据包,从所述第一数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的第一流表匹配的情况下,按照所述第一流表将所述第一数据包进行转发,其中,所述第一数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包,所述第一流表不包括掩码。
10.在一些可能的设计中,通过所述网卡接收第二数据包,从所述第二数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的流表均不匹配的情况下,将所述第二数据包发送给所述数据平面开发套件,其中,所述第二数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包;通过所述数据平面开发套件从所述第二数据包中提取第二流表被掩码遮蔽的部分所需要的信息,结合第二流表生成所述第一流表,将所述第一流表发送至所述网卡缓存中进行存储,其中,所述第二流表包括掩码,所述第一数据包和所述第二数据包属于同一个数据流。
11.在一些可能的设计中,通过所述网卡接收第三数据包,从所述第三数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的流表均不匹配的情况下,将所述第三数据包发送给所述数据平面开发套件,其中,所述第三数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包;通过所述数据平面开发套件从所述第三数据包中提取关键词,根据所述关键词查询所述数据平面开发套件中缓存的流表,并在所述关键词和所述数据平面开发套件中的流表均不匹配的情况下,将所述第三数据包发送给所述虚拟交换机;通过所述虚拟交换机根据所述第三数据包生成带掩码的所述第二流表,并将所述第二流表下发给所述数据平面开发套件,所述第一数据包和所述第三数据包属于同一个数据流。
12.第三方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在
所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据第二方面任一项所述的方法。
13.第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据第二方面任一项所述的方法。
14.上述方案中,虚拟交换机生成的依然是带掩码的流表,而且,其他的操作都在dpdk中进行,可以不需要对虚拟交换机进行任何侵入式修改,具有很好的推广性。而且,网卡是通过提取数据包中的关键词,去和网卡缓存中存储的第一流表进行匹配,从而提高了第一流表的复用率,减少了网卡缓存中所需要存储的流表的数量。
附图说明
15.为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
16.图1是本技术提供的一种流表卸载系统的结构示意图;图2是本技术提供的一种流表卸载系统对第一个数据包进行处理的示意图;图3是本技术提供的一种流表卸载系统对第二个数据包进行处理的示意图;图4是本技术提供的一种流表卸载系统对第三个数据包进行处理的示意图;图5是本技术提供的一种流表卸载方法的流程示意图。
具体实施方式
17.参见图1,图1是本技术提供的一种流表卸载系统的结构示意图。如图1所示,本技术的计算设备,包括处理器11、网卡缓存12以及网卡13。
18.处理器11是运算核心和控制核心,能够对复杂的情况进行处理。处理器11可以是一块超大规模的集成电路。在处理器11中安装有操作系统和其他软件程序,从而处理器11能够实现对内存及各种高速串行计算机扩展总线标准(peripheral component interconnect express,pcie)设备的访问。处理器11可以通过片内总线快速访问内存。处理器11中可以包括一个或多个处理器核(core)。在一种实现中,处理器11可以是一个多核芯片,即包含多个处理核心的芯片。在另一种实现中,处理器11中可以包括一个或多个处理器核(core)。可以为具有一个处理核心的芯片。
19.网卡缓存12通常用来存放流表等。网卡缓存12通常采用动态随机存取存储器(dynamic random access memory, dram),并通过双倍速率(double data rate, ddr)总线和dram相连。除了dram之外,网卡缓存12还可以是其他随机存取存储器,例如静态随机存取存储器(static random access memory,sram)等。本实施例不对网卡缓存12的数量和类型进行限定。此外,可对网卡缓存12进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,存储器中存储的数据也不会丢失。
20.网卡13用于进行接收数据包或者发送数据包。由于其拥有媒体访问控制地址(media access control address,mac)地址,因此属于开放式系统互连(open system interconnection,osi)模型的第1层和第2层之间。它使得用户可以通过电缆或无线相互连接。每一个网卡都有一个被称为mac地址的独一无二的48位串行号,它被写在卡上的一块只
读存储器中。这里,网卡可以是可编程阵列逻辑(field programmable gate array,fpga)网卡或者专用集成电路(application specific integrated circuit,asic)网卡等等。
21.为了降低成本,可以利用计算设备的计算资源、存储资源以及网络资源在计算设备上虚拟出虚拟交换机。网卡13可以与虚拟交换机进行数据交互,即,网卡13可以接收来自虚拟交换机的数据包,也可以向虚拟交换机发送数据包。虚拟交换机性能可能非常低下,主要原因是它们未经优化或设计用于处理和交换过高速率的数据包,因此,可以通过数据平面开发工具包(data plane development kit,dpdk )专门解决这个问题。虚拟交换机对高速数据包的处理缺乏优化,因而,导致数据包处理的过程中的很多步骤都要用到处理器,由于处理器需要处理多任务,因而其可用性(特别是超载的情况下)会出现性能瓶颈的问题,另外虚拟交换机读取内存的效率也不高。而,为了减少数据包读取所需的处理器中断数,dpdk采用周期性轮询机制,定期轮询新数据包。如果数据包速率降至非常低数值,那么就可以切换到中断模式而不是定期轮询模式,dpdk的轻量级库函数采用了非常有效的内存处理机制,即利用环形缓冲区在物理网卡与使用了dpdk的虚拟交换机之间来回传送数据包,从而提高了系统整体性能。通过有效的缓存管理、优化的最少cpu中断数以及其他增强型功能,dpdk能够让虚拟交换机实现接近原生性能。
22.网卡13在接收来自虚拟交换机的数据包或者向虚拟交换机发送数据包时,都要基于流表来进行处理。由于虚拟交换机中原生的流表都是带掩码的,所以,流表可以存储在三态内容寻址存储器 (ternary content addressable memory,tcam)中的流表来进行。tcam是从内容寻址存储器(content addressable memory,cam)的基础上发展而来的。cam中每个bit位的状态只有两个,“0”或“1”,而tcam中每个bit位有三种状态,除掉“0”和“1”外,还有一个“不关心”状态,所以称为“三态”,它是通过掩码来实现的(可以用掩码保留关心的比特,也可以用掩码屏蔽不关心的比特),正是tcam的这个第三种状态特征使其既能进行精确匹配查找,又能针对掩码进行模糊匹配查找。而网卡缓存没有第三种状态,所以,只能进行精确匹配查找。但是,随着云业务的快速发展,虚拟交换机需要转发越来越多的数据,需要更多的tcam来存储流表,然而,tcam的成本非常高,功耗也会较大,难以适应数据快速增长的要求。
23.因此,将流表卸载到成本比较低,功耗也比较小的网卡缓存12中,从而减少对成本比较高,功耗也比较大的tcam的数量的需求。但是,网卡缓存12是只有“0”或“1”两种状态的,只能进行精确寻址,不能进行模糊寻址,因此,要将流表卸载到网卡缓存12中,虚拟交换机就必须生成掩码全为f(此时掩码f用于保留关心的比特,0用于屏蔽不关心的比特),或者,掩码全为0(此时掩码f用于屏蔽不关心的比特,0用于保留关心的比特)的流表,也就是精确的流表。这就导致网卡缓存12中需要存储大量的流表。举个例子说明,假设存在两个数据流,一个是源ip地址为1,1,1,1,目的ip地址为3,3,3,3的数据流,另一个是源ip地址为2,2,2,2,目的ip地址为3,3,3,3的数据流。但是,我们事实上并不关心源ip地址是多少,只关心目的ip地址是多少,就知道要将接收的数据包通过哪个端口发送出去。因此,当采用tcam来存储流表的时候,只需要一个目的ip地址为3,3,3,3的流表就可以实现对上述两个数据流进行模糊匹配。但是,当采用网卡缓存12来存储流表的时候,就需要一个“源ip地址为1,1,1,1,目的ip地址为3,3,3,3”的流表以及需要一个“源ip地址为2,2,2,2,目的ip地址为3,3,3,3”的流表来分别对两个数据流进行精确匹配。随着数据流的日益增多,网卡缓存12中
精确的流表的数量会急剧增加,导致网卡缓存12中的存储资源被消耗殆尽。
24.本技术可以通过以下的方式进行改进,从而减少网卡缓存中的流表的数量,从而减少网卡缓存的资源的消耗。
25.如图2所示,网卡接收数据流的第一个数据包的时候,会根据数据包的类型从数据包的包头中提取关键词。其中,关键词的选择可以根据需要,例如,数据包的类型进行设置。在一具体的实施例中,如果数据包是二层的数据,关键词可以设置为源mac地址以及目标mac地址;如果数据包是三层的数据,关键词可以设置为源ip地址、源mac地址、目标ip以及目标mac地址;如果是四层的数据,关键词可以设置为源端口号、源ip地址、源mac地址、目标ip、目标mac地址以及目标端口号。可以理解,上述关键词的选择仅仅是一种具体的示例,在实际应用中,还可以根据不同的需求进行设置,例如,关键词可以设置为目标mac地址,或者,源ip地址等等,此处不作具体限定。网卡根据关键词对网卡缓存中的流表进行访问。如果没有击中,则网卡将第一个数据包上传给虚拟交换机。虚拟交换机按照原来的方式生成带掩码的第一个流表,并将带掩码的第一个流表发送给数据平面开发套件(data plane development kit,dpdk)。其中,第一个流表包括匹配部分以及转发部分,第一个流表的匹配部分是带掩码,用于匹配数据流,第一个流表的转发部分用于指示如何将数据流进行转发。由于dpdk接收到的第一个流表是带掩码的,因此,第一个流表中与关键词对应的比特位可能刚好被掩码遮蔽了。有些时候,可能只有一个关键词被遮挡了,有些时候,可能全部的关键词都被遮挡了。举个例子说明,假设,第一数据包为二层数据,关键词源mac地址以及目标mac地址,虚拟交换机生成的第一个流表包括:第一掩码以及第一目标mac地址。第一掩码就是将第一源mac地址遮挡了。所以,第一个流表依然是缺乏关键信息,是不可用的。此时,dpdk并不会将这个信息不全的第一个流表卸载到网卡缓存中,而是缓存在dpdk中。
26.如图3所示,网卡接收数据流的第二个数据包的时候,会根据数据包的类型从数据包的包头中提取关键词。网卡根据关键词对网卡缓存中的流表进行访问,此时,依然没有击中,则网卡将第二个数据包上传给dpdk。dpdk从第二个数据包的包头中提取第一个流表被掩码遮蔽的部分所需要的信息,并结合第一个流表生成第二个流表。其中,第二个流表包括匹配部分以及转发部分,第二个流表的匹配部分只包括与关键词对应的部分,并且,不包括掩码;第二个流表的转发项和第一个流表的转发项相同。这样,第二个流表中的关键词对应的部分是完整的。然后,dpdk再将完整的第二个流表存储到网卡缓存中。
27.如图4所示,网卡接收数据流的第三个数据包的时候,会根据数据包的类型从数据包的包头中提取关键词。网卡根据关键词对网卡缓存中的流表进行访问,此时,会击中网卡缓存中的第二个流表。网卡就依照第二个流表的指示将数据包进行转发,而无需将数据包上传给dpdk,更无须将数据包上传给虚拟交换机。
28.此后,第四个数据包、第五个数据包
……
都依照第三个数据包的方式进行报文的转发。
29.由于网卡只提取关键词,并将关键词和网卡缓存中的第二个流表进行匹配,而,第二个流表的匹配部分只包括与关键词对应的部分,因此,既满足能够将流表卸载网卡缓存中时需要进行精确匹配,又能够避免因为要精确匹配产生过多的流表,导致网卡缓存被大量消耗。举个例子说明,假设存在两个数据流,一个是源ip地址为1,1,1,1,目的ip地址为3,3,3,3的数据流,另一个是源ip地址为2,2,2,2,目的ip地址为3,3,3,3的数据流。但是,我们
事实上并不关心源ip地址是多少,只关心目的ip地址是多少,就知道要将接收的数据包通过哪个端口发送出去。因此,可以设置目的ip地址作为关键词,网卡缓存中只需要一个目的ip地址为3,3,3,3的流表就可以实现对上述两个数据流进行匹配。但是,当不采用关键词的情况下,网卡缓存12就需要一个“源ip地址为1,1,1,1,目的ip地址为3,3,3,3”的流表以及需要一个“源ip地址为2,2,2,2,目的ip地址为3,3,3,3”的流表来分别对两个数据流进行匹配。因此,本发明能够有效减少网卡缓存中需要存储的流表的数量。而且,虚拟交换机生成的依然是带掩码的流表,而且,其他的操作都在dpdk中进行,可以不需要对虚拟交换机进行任何侵入式修改,具有很好的推广性。在处理第一个数据包的时候,还没有生成不带掩码的第二个流表的时候,dpdk缓存第一个流表,而不会将第一个流表存储到网卡缓存中,可以进一步减少网卡缓存中存储的流表的数量。
30.参见图5,图5是本技术提供的一种流表卸载方法的流程示意图。如图5所示,本技术的流表卸载方法,包括:s101:通过网卡缓存存储流表。
31.在一些可能的实施例中,所述流表不包括掩码,只能进行精确匹配查找。
32.在一些可能的实施例中,网卡缓存不支持三种状态,所以,只能进行精确匹配查找,所以,网卡缓存中存储的流表都是不包括掩码的流表。其中,三种状态是指除掉“0”和“1”外,还有一个“不关心”状态。通常采用动态随机存取存储器(dynamic random access memory, dram)作为网卡缓存,并通过双倍速率(double data rate, ddr)总线和网卡缓存相连。除了dram和之外,网卡缓存还可以是其他随机存取存储器,例如静态随机存取存储器(static random access memory,sram)等。
33.s102:通过网卡对所述网卡缓存中的流表进行查询,提供网络通信的硬件资源。
34.在一些可能的实施例中,网卡接收来自虚拟交换机的数据包或者向虚拟交换机发送数据包。网卡具有直接访问网卡缓存的功能,也就是说,网卡可以不经过处理器就访问网卡缓存。这里,网卡可以是可编程阵列逻辑(field programmable gate array,fpga)网卡或者专用集成电路(application specific integrated circuit,asic)网卡等等。
35.s103:通过处理器与所述网卡进行通信,运行虚拟交换机以及数据平面开发套件。
36.在一些可能的实施例中,所述虚拟交换机为基于所述处理器、所述网卡和内存的硬件资源虚拟出的交换机。基于所述处理器、所述网卡和内存的硬件资源可以虚拟出一台交换机或者多台交换机。
37.在一些可能的实施例中,所述数据平面开发套件用于协助所述虚拟交换机以提高所述虚拟交换机的性能。虚拟交换机性能可能非常低下,主要原因是它们未经优化或设计用于处理和交换过高速率的数据包,因此,可以通过数据平面开发工具包(data plane development kit,dpdk )专门解决这个问题。虚拟交换机对高速数据包的处理缺乏优化,因而,导致数据包处理的过程中的很多步骤都要用到处理器,由于处理器需要处理多任务,因而其可用性(特别是超载的情况下)会出现性能瓶颈的问题,另外虚拟交换机读取内存的效率也不高。而,为了减少数据包读取所需的处理器中断数,dpdk采用周期性轮询机制,定期轮询新数据包。如果数据包速率降至非常低数值,那么就可以切换到中断模式而不是定期轮询模式,dpdk的轻量级库函数采用了非常有效的内存处理机制,即利用环形缓冲区在物理网卡与使用了dpdk的虚拟交换机之间来回传送数据包,从而提高了系统整体性能。
38.s104:通过所述网卡接收第一数据包,从所述第一数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的第一流表匹配的情况下,按照所述第一流表将所述第一数据包进行转发。
39.在一些可能的实施例中,所述第一数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包,所述第一流表不包括掩码。第一数据包可以是上一个实施例中的第三个数据包。
40.在一些可能的实施例中,所述第一流表不包括掩码。第一流表是通过如下的方式生成的,通过所述网卡接收第二数据包,从所述第二数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的流表均不匹配的情况下,将所述第二数据包发送给所述数据平面开发套件,通过所述数据平面开发套件从所述第二数据包中提取第二流表被掩码遮蔽的部分所需要的信息,结合第二流表生成所述第一流表,将所述第一流表发送至所述网卡缓存中进行存储。
41.在一些可能的实施例中,所述第二数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包。第一数据包可以是上一个实施例中的第二个数据包。
42.在一些可能的实施例中,所述第二流表包括掩码,是虚拟交换机生成的原生的流表。第二流表是通过如下的方式生成的,通过所述网卡接收第三数据包,从所述第三数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的流表均不匹配的情况下,将所述第三数据包发送给所述数据平面开发套件;通过所述数据平面开发套件从所述第三数据包中提取关键词,根据所述关键词查询所述数据平面开发套件中缓存的流表,并在所述关键词和所述数据平面开发套件中的流表均不匹配的情况下,将所述第三数据包发送给所述虚拟交换机;通过所述虚拟交换机根据所述第三数据包生成带掩码的所述第二流表,并将所述第二流表下发给所述数据平面开发套件。
43.在一些可能的实施例中,所述第三数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包。第一数据包可以是上一个实施例中的第三个数据包。
44.在一些可能的实施例中,所述第一数据包、所述第二数据包、所述第三数据包属于同一个数据流。
45.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者任意组合来实现。当使用软件实现时,可以全部或者部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网络站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、微波等)方式向另一个网络站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,也可以是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带等)、光介质(例如dvd等)、或者半导体介质(例如固态硬盘)等等。
46.在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

技术特征:
1.一种流表卸载系统,其特征在于,包括:网卡缓存,用于存储流表,所述流表不包括掩码;网卡,用于对所述网卡缓存中的流表进行查询,提供网络通信的硬件资源;处理器,用于与所述网卡进行通信,运行虚拟交换机以及数据平面开发套件,所述虚拟交换机为基于所述处理器、所述网卡和内存的硬件资源虚拟出的交换机,所述数据平面开发套件用于协助所述虚拟交换机以提高所述虚拟交换机的性能;所述网卡,用于接收第一数据包,从所述第一数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的第一流表匹配的情况下,按照所述第一流表将所述第一数据包进行转发,其中,所述第一数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包,所述第一流表不包括掩码。2.根据权利要求1所述的系统,其特征在于,所述网卡还用于接收第二数据包,从所述第二数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的流表均不匹配的情况下,将所述第二数据包发送给所述数据平面开发套件,其中,所述第二数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包;所述数据平面开发套件,用于从所述第二数据包中提取第二流表被掩码遮蔽的部分所需要的信息,结合第二流表生成所述第一流表,将所述第一流表发送至所述网卡缓存中进行存储,其中,所述第二流表包括掩码,所述第一数据包和所述第二数据包属于同一个数据流。3.根据权利要求2所述的系统,其特征在于,所述网卡还用于接收第三数据包,从所述第三数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的流表均不匹配的情况下,将所述第三数据包发送给所述数据平面开发套件,其中,所述第三数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包;所述数据平面开发套件,用于从所述第三数据包中提取关键词,根据所述关键词查询所述数据平面开发套件中缓存的流表,并在所述关键词和所述数据平面开发套件中的流表均不匹配的情况下,将所述第三数据包发送给所述虚拟交换机;所述虚拟交换机,用于根据所述第三数据包生成带掩码的所述第二流表,并将所述第二流表下发给所述数据平面开发套件,所述第一数据包和所述第三数据包属于同一个数据流。4.根据权利要求1至3任一项所述的系统,其特征在于,所述网卡缓存不包括三态内容寻址存储器。5.根据权利要求2或3所述的系统,其特征在于,所述第一流表包括第一匹配项和第一转发项,所述第二流表包括第二匹配项以及第二转发项,所述第一匹配项只包括与所述关键词对应的项,所述第二匹配项包括所述关键词对应的项以及与所述关键词无关的项,所述第一转发项和所述第二转发项相同。6.一种流表卸载方法,其特征在于,包括:通过网卡缓存存储流表,所述流表不包括掩码;通过网卡对所述网卡缓存中的流表进行查询,提供网络通信的硬件资源;
通过处理器分别与所述网卡进行通信,运行虚拟交换机以及数据平面开发套件,所述虚拟交换机为基于所述处理器、所述网卡和内存的硬件资源虚拟出的交换机,所述数据平面开发套件用于协助所述虚拟交换机以提高所述虚拟交换机的性能;通过所述网卡接收第一数据包,从所述第一数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的第一流表匹配的情况下,按照所述第一流表将所述第一数据包进行转发,其中,所述第一数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包,所述第一流表不包括掩码。7.根据权利要求6所述的方法,其特征在于,通过所述网卡接收第二数据包,从所述第二数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的流表均不匹配的情况下,将所述第二数据包发送给所述数据平面开发套件,其中,所述第二数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包;通过所述数据平面开发套件从所述第二数据包中提取第二流表被掩码遮蔽的部分所需要的信息,结合第二流表生成所述第一流表,将所述第一流表发送至所述网卡缓存中进行存储,其中,所述第二流表包括掩码,所述第一数据包和所述第二数据包属于同一个数据流。8.根据权利要求7所述的方法,其特征在于,通过所述网卡接收第三数据包,从所述第三数据包中提取关键词,根据所述关键词查询所述网卡缓存中的流表,在所述关键词和所述网卡缓存中的流表均不匹配的情况下,将所述第三数据包发送给所述数据平面开发套件,其中,所述第三数据包是发送给所述虚拟交换机的数据包或者来自所述虚拟交换机的数据包;通过所述数据平面开发套件从所述第三数据包中提取关键词,根据所述关键词查询所述数据平面开发套件中缓存的流表,并在所述关键词和所述数据平面开发套件中的流表均不匹配的情况下,将所述第三数据包发送给所述虚拟交换机;通过所述虚拟交换机根据所述第三数据包生成带掩码的所述第二流表,并将所述第二流表下发给所述数据平面开发套件,所述第一数据包和所述第三数据包属于同一个数据流。9.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求6-8任一项所述的方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求6-8任一项所述的方法。

技术总结
本申请提供了一种流表卸载系统、方法、设备以及存储介质。所述系统包括:网卡缓存,用于存储流表,流表不包括掩码;网卡用于对网卡缓存中的流表进行查询,提供网络通信的硬件资源;处理器用于与网卡进行通信,运行虚拟交换机以及数据平面开发套件,虚拟交换机为基于处理器、网卡和内存的硬件资源虚拟出的交换机,数据平面开发套件用于协助虚拟交换机以提高虚拟交换机的性能;网卡用于接收第一数据包,从第一数据包中提取关键词,根据关键词查询网卡缓存中的流表,在关键词和网卡缓存中的第一流表匹配的情况下,按照第一流表将第一数据包进行转发,第一数据包是发送给虚拟交换机的数据包或者来自虚拟交换机的数据包。据包或者来自虚拟交换机的数据包。据包或者来自虚拟交换机的数据包。


技术研发人员:常伟 李森
受保护的技术使用者:珠海星云智联科技有限公司
技术研发日:2023.09.07
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐