一种处理网络流量的方法、装置、设备及存储介质与流程

文档序号:17536068发布日期:2019-04-29 14:00阅读:127来源:国知局
一种处理网络流量的方法、装置、设备及存储介质与流程

本申请涉及网络技术领域,特别涉及处理网络流量方法、装置、设备及存储介质。



背景技术:

随着科技及网络的发展需求,在产品的工作过程中对于中央处理器(centralprocessingunit,cpu)的性能要求越来越高。为此,cpu工程师开发出了多核处理器,即在一枚处理器中集成两个或多个cpu,使该处理器中的多个cpu能够一起提供更强的负载能力,从而提高了该处理器的性能。

这种多核处理器可以通过划分任务,实现线程应用能够充分利用该多核处理器中的多个cpu核心,从而实现在一定的时间内执行更多任务。虽然该多核处理器是单枚芯片(也称为“硅核”),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将该多核处理器的各cpu核心分别作为分立的逻辑处理器。通过在两个cpu核心之间划分任务,使得该多核处理器可在特定的时钟周期内执行更多任务。进一步地,为了充分发挥多核处理器的处理性能,如图1所示,多核处理器通常与网络控制器相互配合工作。其中,网络控制器可以支持设置多个收包队列和多个发包队列。网络控制器可以通过解析报文的报文内容,将报文分流到相应的收包队列中。多核处理器中不同的cpu核心接收不同收包队列的报文,各cpu核心针对各自对应的收包队列中的报文处理完成后,可以将处理完成后的报文向对应的发包队列发送。这样,由于不同的cpu核心对不同的收包队列中的报文进行处理,避免了多核处理器中的多个cpu核心之间并发处理同一队列的报文而需要加锁等待的操作,使得多个cpu核心可以充分发挥其处理性能。

在实际应用中,为了扩展设备的接口,如图2所示,多核处理器可以通过网络控制器中的以太网口和交换芯片相连。当交换芯片需要向网络控制器发送报文时,交换芯片会在报文头部位置添加一个12字节的私有串行总线互联(higig)报文头,以便cpu核心可以区分该报文是从哪个接口(eth0~ethn-1)发送的。

然而,由于网络控制器只能模式化的通过报文中的各个字节的位置,识别出报文中的五元组,例如,将报文中的第1个字节到第10个字节的内容识别为报文的五元组。故此,当报文的头部添加了higig报文头之后,网络控制器不能识别交换芯片发送的报文中的higig报文头,导致报文中higig头后面的五元组也就无法解析,从而导致所有无法解析出五元组的报文均会分流到固定的收包队列0上,进而导致网络控制器的多队列属性无法使用,使得多核处理器无法达到最大性能。



技术实现要素:

本申请提供一种处理网络流量的方法、装置、设备及存储介质,以希望使得具有多个cpu核心的处理器可以充分发挥其处理性能,提高了处理器的整机业务处理性能。

具体地,本申请是通过如下技术方案实现的:

本申请提供了一种处理网络流量的方法,所述方法应用于网络安全设备,所述网络安全设备包括处理器、网络控制器、交换芯片和现场可编程门阵列(fpga)芯片;所述交换芯片包括多个接口,用于接收和发送报文;所述处理器包括n个cpu核心,所述网络控制器包括1个收包队列和n个发包队列,所述fpga芯片包括n个收包队列;其中,n等于或大于2,所述n个cpu核心分别与所述n个发包队列一一对应,所述n个cpu核心分别与所述n个收包队列一一对应;所述方法包括:

所述fpga芯片检测所述网络控制器的收包队列中有目标报文,则读取所述目标报文;所述目标报文为所述交换芯片在接收报文后,所述交换芯片在所述报文的报文头部添加报文头所生成的报文,其中,所述报文头包括接收所述报文的入接口信息;

所述fpga芯片根据所述目标报文的报文内容,确定所述目标报文所对应的目标收包队列,所述目标收包队列为所述fpga芯片中与所述目标报文对应的收包队列;

所述fpga芯片将所述目标报文存储至所述目标收包队列,并将所述目标报文向所述目标收包队列对应的目标cpu核心发送,以便所述目标cpu核心针对所述目标报文进行业务处理,并根据所述目标报文的报文头中的入接口信息进行转发处理;所述目标cpu核心为所述处理器中与所述目标收包队列对应的cpu核心。

可选的,所述fpga芯片根据所述目标报文的报文内容,确定所述目标报文所对应的目标收包队列,包括:

所述fpga芯片根据所述目标报文的五元组,计算所述目标报文对应的哈希(hash)值,并根据所述hash值确定所述目标报文对应的目标收包队列;其中,所述五元组包括源互联网协议地址、目的互联网协议地址、协议号、源端口和目的端口。

可选的,所述目标cpu核心根据所述目标报文的报文头中的入接口信息进行转发处理,包括:

所述目标cpu核心针对所述目标报文的业务处理完成后,所述目标cpu核心根据所述入接口信息,确定所述目标报文对应的出接口信息,并将所述出接口信息存储至所述目标报文的报文头中;

所述目标cpu核心根据所述目标报文的报文内容,确定所述目标报文所对应的目标发包队列,并向所述目标发包队列发送;所述目标发包队列为所述网络控制器中与所述目标报文对应的发包队列。

可选的,所述目标cpu核心针对所述目标报文进行业务处理,包括:

所述目标cpu核心根据所述目标报文的hash值确定所述目标报文对应的业务会话,并根据所述目标报文对应的业务会话进行业务处理。

可选的,所述目标cpu核心根据所述目标报文的报文内容,确定所述目标报文所对应的目标发包队列,并向所述目标发包队列发送,包括:

所述目标cpu核心根据所述hash值,确定所述目标报文对应的目标发包队列,并将所述目标报文向所述目标发包队列发送。

可选的,在所述fpga芯片将所述目标报文存储至所述目标收包队列,并将所述目标报文向所述目标收包队列对应的目标cpu核心发送之前,还包括:

所述fpga芯片将所述hash值存储至所述目标报文的报文头。

可选的,所述方法还包括:

所述网络控制器中的所述目标发包队列接收所述目标报文后,将所述目标报文向所述交换芯片发送,以便所述交换芯片根据所述报文头中的出接口信息,将所述目标报文向所述出接口信息对应的接口发送。

本申请提供了一种处理网络流量的装置,所述装置应用于网络安全设备,所述网络安全设备包括处理器、网络控制器、交换芯片和现场可编程门阵列(fpga)芯片;所述交换芯片包括多个接口,用于接收和发送报文;所述处理器包括n个cpu核心,所述网络控制器包括1个收包队列和n个发包队列,所述fpga芯片包括n个收包队列;其中,n等于或大于2,所述n个cpu核心分别与所述n个发包队列一一对应,所述n个cpu核心分别与所述n个收包队列一一对应;所述装置包括:

读取单元,用于检测所述网络控制器的收包队列中有目标报文,则读取所述目标报文;所述目标报文为所述交换芯片在接收报文后,所述交换芯片在所述报文的报文头部添加报文头所生成的报文,其中,所述报文头包括接收所述报文的入接口信息;

确定单元,用于根据所述目标报文的报文内容,确定所述目标报文所对应的目标收包队列,所述目标收包队列为所述fpga芯片中与所述目标报文对应的收包队列;

存储单元,用于将所述目标报文存储至所述目标收包队列;

发送单元,用于将所述目标报文向所述目标收包队列对应的目标cpu核心发送,以便所述目标cpu核心针对所述目标报文进行业务处理,并根据所述目标报文的报文头中的入接口信息进行转发处理;所述目标cpu核心为所述处理器中与所述目标收包队列对应的cpu核心。

可选的,所述确定单元,具体用于:

所述fpga芯片根据所述目标报文的五元组,计算所述目标报文对应的哈希(hash)值,并根据所述hash值确定所述目标报文对应的目标收包队列;其中,所述五元组包括源互联网协议地址、目的互联网协议地址、协议号、源端口和目的端口。

可选的,所述装置还包括转发处理单元,所述转发处理单元用于:

针对所述目标报文的业务处理完成后,根据所述入接口信息,确定所述目标报文对应的出接口信息,并将所述出接口信息存储至所述目标报文的报文头中;

所述目标cpu核心根据所述目标报文的报文内容,确定所述目标报文所对应的目标发包队列,并向所述目标发包队列发送;所述目标发包队列为所述网络控制器中与所述目标报文对应的发包队列。

可选的,所述装置还包括业务处理单元,所述业务处理单元用于:

根据所述目标报文的hash值确定所述目标报文对应的业务会话,并根据所述目标报文对应的业务会话进行业务处理。

可选的,所述转发处理单元,具体用于:

根据所述hash值,确定所述目标报文对应的目标发包队列,并将所述目标报文向所述目标发包队列发送。

可选的,所述装置还包括hash值存储单元,所述hash值存储单元用于:

将所述hash值存储至所述目标报文的报文头。

可选的,所述装置还包括发送单元,所述发送单元用于:

所述网络控制器中的所述目标发包队列接收所述目标报文后,将所述目标报文向所述交换芯片发送,以便所述交换芯片根据所述报文头中的出接口信息,将所述目标报文向所述出接口信息对应的接口发送。

本申请还提供了一种处理网络流量的设备,所述设备包括:内部总线,以及通过内部总线连接的存储器、处理器和外部接口;其中,

所述存储器,用于存储文件存储的控制逻辑对应的机器可读指令;

所述处理器,用于读取所述存储器上的所述机器可读指令,并执行所述指令以实现如下操作:

检测所述网络控制器的收包队列中有目标报文,则读取所述目标报文;所述目标报文为所述交换芯片在接收报文后,所述交换芯片在所述报文的报文头部添加报文头所生成的报文,其中,所述报文头包括接收所述报文的入接口信息;

根据所述目标报文的报文内容,确定所述目标报文所对应的目标收包队列,所述目标收包队列为所述fpga芯片中与所述目标报文对应的收包队列;

将所述目标报文存储至所述目标收包队列,并将所述目标报文向所述目标收包队列对应的目标cpu核心发送,以便所述目标cpu核心针对所述目标报文进行业务处理,并根据所述目标报文的报文头中的入接口信息进行转发处理;所述目标cpu核心为所述处理器中与所述目标收包队列对应的cpu核心。

本申请还提供了一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:

检测所述网络控制器的收包队列中有目标报文,则读取所述目标报文;所述目标报文为所述交换芯片在接收报文后,所述交换芯片在所述报文的报文头部添加报文头所生成的报文,其中,所述报文头包括接收所述报文的入接口信息;

根据所述目标报文的报文内容,确定所述目标报文所对应的目标收包队列,所述目标收包队列为所述fpga芯片中与所述目标报文对应的收包队列;

将所述目标报文存储至所述目标收包队列,并将所述目标报文向所述目标收包队列对应的目标cpu核心发送,以便所述目标cpu核心针对所述目标报文进行业务处理,并根据所述目标报文的报文头中的入接口信息进行转发处理;所述目标cpu核心为所述处理器中与所述目标收包队列对应的cpu核心。

由上述技术方案可以看出,本申请的技术方案应用于网络安全设备,所述网络安全设备包括处理器、网络控制器、交换芯片和fpga芯片。在本申请中,通过在网络控制器的收包队列和处理器之间增加fpga芯片,以实现当所述fpga芯片检测所述网络控制器的收包队列中有目标报文,所述fpga芯片可以读取所述目标报文,其中,所述目标报文为所述交换芯片在所述报文的报文头部添加具有接收所述报文的入接口信息的报文头所生成的报文;然后,所述fpga芯片可以根据所述目标报文的报文内容,确定所述目标报文所对应的目标收包队列,并将所述目标报文存储至所述目标收包队列,以及将所述目标报文向所述处理器中与所述目标收包队列对应的目标cpu核心发送,以便所述目标cpu核心针对所述目标报文进行业务处理,并根据所述目标报文的报文头中的入接口信息进行转发处理。可见,通过在网络控制器的收包队列和处理器之间增加fpga芯片,可以实现在处理器中的cpu核心处理网络控制器收到的报文之前,fpga芯片能够将各个报文分别存储至对应的目标收包队列中,使得处理器中的各个cpu核心均能够独立接收对应的收包队列中的报文,并进行相应的业务处理和转发处理,从而避免了处理器中的多个cpu核心之间并发处理同一队列的报文而需要加锁等待的操作,并且保证了处理器中的多个cpu核心均能用于对报文进行业务处理和转发处理,使得具有多个cpu核心的处理器可以充分发挥其处理性能,提高了处理器的整机业务处理性能。

附图说明

图1是现有技术的一种多核处理器与网络控制器配合工作的结构示意图;

图2是现有技术的一种多核处理器、网络控制器和交换芯片配合工作的结构示意图;

图3是本申请实施例提供的一种网络安全设备的结构示意图;

图4是本申请实施例提供的一种处理网络流量的方法的流程示意图;

图5是本申请实施例提供的一种处理网络流量的装置的结构示意图;

图6是本申请实施例提供的一种处理网络流量的设备的一个实施例示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在传统的处理网络流量方法中,网络安全设备通常只包括处理器、网络控制器和交换芯片,但由于网络控制器只能模式化的通过报文中的各个字节的位置,识别出报文中的五元组。故此,当报文的头部添加了higig报文头之后,网络控制器不能识别交换芯片发送的报文中的higig报文头,导致报文中higig报文头后面的五元组也就无法解析,从而导致所有无法解析出五元组的报文均会分流到固定的收包队列0上,进而导致网络控制器的多队列属性无法使用,使得多核处理器无法达到最大性能。

为解决上述问题,本申请提供了一种处理网络流量的方法,通过在网络控制器的收包队列和处理器之间增加fpga芯片,可以实现在处理器中的cpu核心处理网络控制器收到的报文之前,fpga芯片能够将各个报文分别存储至对应的目标收包队列中,使得处理器中的各个cpu核心均能够独立接收对应的收包队列中的报文,并进行相应的业务处理和转发处理,从而避免了处理器中的多个cpu核心之间并发处理同一队列的报文而需要加锁等待的操作,并且保证了处理器中的多个cpu核心均能用于对报文进行业务处理和转发处理,使得具有多个cpu核心的处理器可以充分发挥其处理性能,提高了处理器的整机业务处理性能。

作为一种示例,本申请实施例所提供的处理网络流量的方法可以应用到如图3所示的网络安全设备300中。在网络安全设备300可以包括:处理器301、网络控制器302、交换芯片303和fpg芯片304。

具体地,网络安全设备300中的交换芯片303包括多个接口,例如图3中所示的eth0、eth1…ethn-1,交换芯片303中的借口均可以用于接收和发送报文。

网络安全设备300中的处理器301可以包括n个cpu核心,例如图3中所示的cpu0、cpu1…cpun-1,处理器301中的cpu核心均可以用于对报文进行业务处理和转发处理。

网络安全设备300中的网络控制器302包括1个收包队列(例如图3中的收包队列0)和n个发包队列(例如图3中所示的发包队列0、发包队列1…发包队列n-1),其中,收包队列用于接收并存储交换芯片303发送的报文,发包队列用于接收并存储处理器中cpu核心发送的报文。

网络安全设备300中的fpga芯片304可以包括n个收包队列,例如图3中所示的收包队列0、收包队列1…收包队列n-1,其中,fpga芯片304中的收包队列均用于接收并存储网络控制器302发送的报文,并且fpga芯片304中不同的收包队列所存储的报文是不相同的。

需要说明的是,上述所提及的n均等于或大于2;并且,fpga芯片304中的n个收包队列分别与处理器301中的n个cpu核心一一对应,例如,fpga芯片304中的收包队列0与处理器301中的cpu0相对应,fpga芯片304中的收包队列1与处理器301中的cpu1相对应,…,fpga芯片304中的收包队列n-1与处理器301中的cpun-1相对应;同样的,处理器301中的n个cpu核心分别与网络控制器302中的n个发包队列一一对应,处理器301中的cpu0与网络控制器302中的发包队列0相对应,处理器301中的cpu1与网络控制器302中的发包队列1相对应,…,处理器301中的cpun-1与网络控制器302中的发包队列n-1相对应。

需要注意的是,上述应用场景仅是为了便于理解本申请而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。

另外,还需要强调的是,在本申请实施例中,网络控制器中的发包队列的队列数量和fpga中的收包队列的队列数量可以均是由处理器根据其cpu核心的数量统一设置的,并且,处理器中的cpu核心数量可以根据实际需要进行调整设置。

下面结合附图,详细说明本申请的各种非限制性实施方式。

参见图4,该图为本申请实施例提供的一种处理网络流量的方法的流程示意图,具体地,所述方法可以包括以下步骤:

s401:所述fpga芯片检测所述网络控制器的收包队列中有目标报文,所述fpga芯片读取所述目标报文。

在本实施例中,当交换芯片中的任一入接口接收到输入的报文时,交换芯片可以在该报文的报文头部添加一个报文头,例如,该报文头可以是一个12字节的higig报文头;其中,所述报文头可以包括接收所述报文的入接口信息,即所述报文头可以包括接收所述报文的接口的相关信息,结合图3举例来说,假设交换芯片303的eth0接口接收到报文,则交换芯片303可以在该报文的报文头部添加包括了eth0接口的位置信息的higig报文头。需要说明的是,在本实施例中,为便于描述,可以将交换芯片在接收报文后,在所述报文的报文头部添加了包括入接口信息的报文头之后所生成的报文称之为目标报文。

在交换芯片生成目标报文后,可以通过所述交换芯片的以太网口向网络控制器发送所述目标报文。所述网络控制器接收到所述目标报文后,可以将所述目标报文存储至所述网络控制器中的唯一一个收包队列中。例如,如图3所示,当网络控制器302接收到目标报文时,网络控制器302可以将该目标报文存储至收包队列0中。

fpga芯片可以检测网络控制器的收包队列中是否有目标报文,在一种可能的实施例中,fpga芯片可以是实时检测网络控制器的收包队列中是否有目标报文,也可以是每隔一段预设时间便检测网络控制器的收包队列中是否有目标报文。当fpga芯片到检测网络控制器的收包队列中保存有目标报文时,所述fpga芯片可以读取所述目标报文。例如,如图3所示,当fpga芯片304检测到网络控制器302的收包队列0中保存有目标报文时,所述fpga芯片304可以从所述网络控制器302的收包队列0中读取所述目标报文。

s402:所述fpga芯片根据所述目标报文的报文内容,确定所述目标报文所对应的目标收包队列。

为了避免处理器中的多个cpu核心之间并发处理同一队列的报文而需要加锁等待的操作,并保证处理器中的多个cpu核心均能用于对报文进行业务处理和转发处理,在本实施例中,需要fpga芯片可以将不同的目标报文存储至对应的收包队列中,以实现所述fpga芯片中的不同收包队列中保存着不同的报文,从而使得处理器中的各个cpu核心均能够独立接收对应的收包队列中的报文,并进行相应的业务处理和转发处理。

具体地,fpga芯片读取到目标报文后,所述fpga芯片可以根据所述目标报文的报文内容,确定所述fpga芯片中与所述目标报文对应的收包队列,其中,需要说明的是,为便于描述,fpga芯片中与目标报文对应的收包队列可以称之为目标收包队列。

在一种可能的实现方式中,fpga芯片可以先从目标报文的报文内容中提取所述目标报文的五元组,其中,五元组可以包括源互联网协议地址(internetprotocoladdress,ip)、目的ip、协议号、源端口(port)和目的port。然后,所述fpga芯片可以根据所述目标报文的五元组,计算所述目标报文对应的哈希(hash)值,并根据所述hash值确定所述目标报文对应的目标收包队列。例如,可以通过“求余”的方式确定目标报文对应的目标收包队列,举例来说,假设fpga芯片包括两个收包队列,分别为收包队列0和收包队列1,且目标报文的hash值为3,由于该hash值3除以2余1,那么,可以确定该目标报文对应的目标收包队列为1;假设fpga芯片包括两个收包队列,分别为收包队列0和收包队列1,且目标报文的hash值为2,由于该hash值2除以2余0,那么,可以确定该目标报文对应的目标收包队列为0。

s403:所述fpga芯片将所述目标报文存储至所述目标收包队列,并将所述目标报文向所述目标收包队列对应的目标cpu核心发送,以便所述目标cpu核心针对所述目标报文进行业务处理,并根据所述目标报文的报文头中的入接口信息进行转发处理。

在本实施例中,fpga芯片确定目标报文对应的目标收包队列后,所述fpga芯片可以将该目标报文存储至该目标收包队列中。并且,由于fpga芯片中的各cpu核心可以分别对各自对应的收包队列进行监测,故此,当目标收包队列中存储有目标报文时,所述目标收包队列对应的cpu核心可以监测到该目标报文。需要说明的是,为便于描述,可以将处理器中与目标收包队列对应的cpu核心称之为目标cpu核心。

当目标cpu核心监测到目标收包队列中保存有目标报文时,所述目标cpu核心可以从所述目标收包队列中读取所述目标报文,此时,所述fpga芯片可以将所述目标报文向所述目标收包队列对应的目标cpu核心发送。接下来,结合图3举例说明,假设fpga芯片304中的收包队列0与处理器301中的cpu0相对应,当该cpu0监测到该收包队列0中保存有报文时,cpu0可以从该收包队列0中读取该报文。

需要说明的是,在一种实现方式中,处理器可以通过高速串行计算机扩展总线标准(peripheralcomponentinterconnectexpress,pcie)总线与fpga芯片相连接,以实现处理器中的各cpu核心可以通过pcie总线分别访问fpga芯片中各自对应的收包队列中保存的报文。

目标cpu核心读取到目标报文后,可以针对所述目标报文进行业务处理,并根据所述目标报文的报文头中的入接口信息进行转发处理。接下来,将对目标cpu核心针对目标报文进行业务处理的方式和目标cpu核心针对目标报文进行转发处理的方式进行介绍。

首先,介绍目标cpu核心针对目标报文进行业务处理的方式。

在一种实现方式中,目标cpu核心可以根据目标报文的hash值确定所述目标报文对应的业务会话,并根据所确定的业务会话对该目标报文进行业务处理。在本方式中,目标cpu核心中可以预先存储了hash值与业务会话的对应关系,因此,目标cpu核心可以根据目标报文的hash值确定该目标报文对应的业务会话,并进行相应的业务处理。例如,目标cpu核心中预先存储了hash值30与业务会话为访问a网站的对应关系,当目标cpu核心确定目标报文的hash值为30时,可以确定该目标报文对应的业务会话为访问a网站,从而可以进行相应的业务处理,即访问a网站。

需要说明的是,为了缩短目标cpu核心确定目标报文的hash值的时间,在本方式中,在s403之前,还可以包括以下步骤:fpga芯片将目标报文的hash值存储至所述目标报文的报文头。这样,目标cpu核心读取到目标报文后,目标cpu核心可以从目标报文的报文头中直接获取到所述目标报文的hash值,而不需要重新根据所述目标报文的五元组计算所述目标报文的hash值,从而缩短了目标cpu核心针对目标报文进行业务处理的时间,提高了目标cpu核心针对目标报文进行业务处理的效率。

接下来,将介绍目标cpu核心针对目标报文进行转发处理的方式。

在一种实现方式中,目标cpu核心针对目标报文的业务处理完成后,所述目标cpu核心可以根据目标报文的报文头中的入接口信息,确定所述目标报文对应的出接口信息,例如,可以根据入接口信息中的入接口,通过查询二层转发表或三层转发表,确定对应的出接口的位置,从而确定对应的出接口信息。需要说明的是,在另一种可能的实现方式中,目标cpu核心也可以根据目标报文的报文头中的入接口信息和报文内容确定对应的出接口信息,例如可以根据入接口信息和媒体访问控制(mediaaccesscontrol,mac)地址,通过查询二层转发表确定对应的出接口信息,或者,可以根据入接口信息和ip地址,通过查询三层转发表确定对应的出接口信息。在目标cpu核心确定目标报文对应的出接口信息后,可以将所述出接口信息存储至所述目标报文的报文头中,以便后续转发处理。

在本方式中,目标cpu核心可以根据目标报文的报文内容,确定所述目标报文所对应的目标发包队列,并向所述目标发包队列发送,其中,所述目标发包队列可以理解为所述网络控制器中与所述目标报文对应的发包队列。

在一种可能的实现方式中,目标cpu核心可以根据目标报文的hash值,确定所述目标报文对应的目标发包队列,并将所述目标报文向所述目标发包队列发送。作为一种示例,目标cpu核心确定目标发包队列的方式可以与fpga芯片确定目标收包队列的方式相同,同样可以通过“求余”的方式确定目标报文对应的目标收包队列,举例来说,假设网络控制器包括两个发包队列,分别为发包队列0和发包队列1,且目标报文的hash值为3,由于该hash值3除以2余1,那么,可以确定该目标报文对应的目标发包队列为1;假设网络控制器包括两个发包队列,分别为发包队列0和发包队列1,且目标报文的hash值为2,由于该hash值2除以2余0,那么,可以确定该目标报文对应的目标发包队列为0。

需要说明的是,为了缩短目标cpu核心确定目标报文的hash值的时间,在本方式中,在s403之前,同样可以包括以下步骤:fpga芯片将目标报文的hash值存储至所述目标报文的报文头。这样,目标cpu核心针对目标报文的业务处理完成后,目标cpu核心可以从目标报文的报文头中直接获取到所述目标报文的hash值,而不需要重新根据所述目标报文的五元组计算所述目标报文的hash值,从而缩短了目标cpu核心针对目标报文进行转发处理的时间,提高了目标cpu核心针对目标报文进行转发处理的效率。

在本实施例中,网络控制器中的目标发包队列接收目标报文后,所述网络控制器可以将所述目标报文向交换芯片发送,以便所述交换芯片可以根据所述目标报文的报文头中的出接口信息,将所述目标报文向所述出接口信息对应的接口发送。

具体地,网络控制器中的目标发包队列接收目标报文后,所述网络控制器可以通过以太网口,将所述目标报文向交换芯片发送。所述交换芯片接收到所述目标报文后,可以直接从所述目标报文的报文头中的出接口信息,确定用于输出所述目标报文的接口,并通过该接口输出所述目标报文。

接下来,结合图3举例说明,假设网络控制器302中的发包队列0接收到目标报文后,所述网络控制器302可以通过以太网口向交换芯片303发送所述目标报文,并且,所述交换芯片303接收到所述目标报文后,根据所述目标报文的报文头确定出接口信息为用于输出所述目标报文的接口为eth1,那么,所述交换芯片303可以通过接口eth1输出所述目标报文。

由上述技术方案可以看出,在本申请中,通过在网络控制器的收包队列和处理器之间增加fpga芯片,可以实现在处理器中的cpu核心处理网络控制器收到的报文之前,fpga芯片能够将各个报文分别存储至对应的目标收包队列中,使得处理器中的各个cpu核心均能够独立接收对应的收包队列中的报文,并进行相应的业务处理和转发处理,从而避免了处理器中的多个cpu核心之间并发处理同一队列的报文而需要加锁等待的操作,并且保证了处理器中的多个cpu核心均能用于对报文进行业务处理和转发处理,使得具有多个cpu核心的处理器可以充分发挥其处理性能,提高了处理器的整机业务处理性能。另外,由于fpga芯片处理数据的能力强,并且,其在本申请的技术方案中仅需要实现将各个报文分别存储至对应的目标收包队列中的功能,即本申请的技术方案需要fpga实现的功能很少,因此,fpga芯片的处理能力不会成为通过网络控制器接收报文的瓶颈,从而使得fpga芯片可以兼容各种高性能网络控制器,进而使得网络安全设备更换更高性能、更大带宽的网络控制器更加方便。

参见图5,示出了本申请的一种处理网络流量的装置,所述装置应用于网络安全设备,所述网络安全设备包括处理器、网络控制器、交换芯片和现场可编程门阵列(fpga)芯片;所述交换芯片包括多个接口,用于接收和发送报文;所述处理器包括n个cpu核心,所述网络控制器包括1个收包队列和n个发包队列,所述fpga芯片包括n个收包队列;其中,n等于或大于2,所述n个cpu核心分别与所述n个发包队列一一对应,所述n个cpu核心分别与所述n个收包队列一一对应;所述装置包括:

读取单元501,用于检测所述网络控制器的收包队列中有目标报文,则读取所述目标报文;所述目标报文为所述交换芯片在接收报文后,所述交换芯片在所述报文的报文头部添加报文头所生成的报文,其中,所述报文头包括接收所述报文的入接口信息;

确定单元502,用于根据所述目标报文的报文内容,确定所述目标报文所对应的目标收包队列,所述目标收包队列为所述fpga芯片中与所述目标报文对应的收包队列;

存储单元503,用于将所述目标报文存储至所述目标收包队列;

发送单元504,用于将所述目标报文向所述目标收包队列对应的目标cpu核心发送,以便所述目标cpu核心针对所述目标报文进行业务处理,并根据所述目标报文的报文头中的入接口信息进行转发处理;所述目标cpu核心为所述处理器中与所述目标收包队列对应的cpu核心。

可选的,所述确定单元502,具体用于:

所述fpga芯片根据所述目标报文的五元组,计算所述目标报文对应的哈希(hash)值,并根据所述hash值确定所述目标报文对应的目标收包队列;其中,所述五元组包括源互联网协议地址、目的互联网协议地址、协议号、源端口和目的端口。

可选的,所述装置还包括转发处理单元,所述转发处理单元用于:

针对所述目标报文的业务处理完成后,根据所述入接口信息,确定所述目标报文对应的出接口信息,并将所述出接口信息存储至所述目标报文的报文头中;

所述目标cpu核心根据所述目标报文的报文内容,确定所述目标报文所对应的目标发包队列,并向所述目标发包队列发送;所述目标发包队列为所述网络控制器中与所述目标报文对应的发包队列。

可选的,所述装置还包括业务处理单元,所述业务处理单元用于:

根据所述目标报文的hash值确定所述目标报文对应的业务会话,并根据所述目标报文对应的业务会话进行业务处理。

可选的,所述转发处理单元,具体用于:

根据所述hash值,确定所述目标报文对应的目标发包队列,并将所述目标报文向所述目标发包队列发送。

可选的,所述装置还包括hash值存储单元,所述hash值存储单元用于:

将所述hash值存储至所述目标报文的报文头。

可选的,所述装置还包括发送单元,所述发送单元用于:

所述网络控制器中的所述目标发包队列接收所述目标报文后,将所述目标报文向所述交换芯片发送,以便所述交换芯片根据所述报文头中的出接口信息,将所述目标报文向所述出接口信息对应的接口发送。

参见图6,为本申请一种处理网络流量的设备的一个实施例示意图,该处理网络流量的设备可以包括:内部总线610,以及通过内部总线610连接的存储器620、处理器630和外部接口640。

其中,所述存储器620,用于存储文件存储的控制逻辑对应的机器可读指令;

所述处理器630,用于读取所述存储器上的所述机器可读指令,并执行所述指令以实现如下操作:

检测所述网络控制器的收包队列中有目标报文,则读取所述目标报文;所述目标报文为所述交换芯片在接收报文后,所述交换芯片在所述报文的报文头部添加报文头所生成的报文,其中,所述报文头包括接收所述报文的入接口信息;

根据所述目标报文的报文内容,确定所述目标报文所对应的目标收包队列,所述目标收包队列为所述fpga芯片中与所述目标报文对应的收包队列;

将所述目标报文存储至所述目标收包队列,并将所述目标报文向所述目标收包队列对应的目标cpu核心发送,以便所述目标cpu核心针对所述目标报文进行业务处理,并根据所述目标报文的报文头中的入接口信息进行转发处理;所述目标cpu核心为所述处理器中与所述目标收包队列对应的cpu核心。

此外,本申请实施例示出的处理网络流量的流程还可以被包括在计算机可读存储介质中,该存储介质可以与执行指令的处理设备连接,该存储介质上存储有文件存储的控制逻辑对应的机器可读指令,这些指令能够被处理设备执行,上述机器可读指令用于实现如下操作:

检测所述网络控制器的收包队列中有目标报文,则读取所述目标报文;所述目标报文为所述交换芯片在接收报文后,所述交换芯片在所述报文的报文头部添加报文头所生成的报文,其中,所述报文头包括接收所述报文的入接口信息;

根据所述目标报文的报文内容,确定所述目标报文所对应的目标收包队列,所述目标收包队列为所述fpga芯片中与所述目标报文对应的收包队列;

将所述目标报文存储至所述目标收包队列,并将所述目标报文向所述目标收包队列对应的目标cpu核心发送,以便所述目标cpu核心针对所述目标报文进行业务处理,并根据所述目标报文的报文头中的入接口信息进行转发处理;所述目标cpu核心为所述处理器中与所述目标收包队列对应的cpu核心。

在本申请实施例中,计算机可读存储介质可以是多种形式,比如,在不同的例子中,所述机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。特殊的,所述的计算机可读介质还可以是纸张或者其他合适的能够打印程序的介质。使用这些介质,这些程序可以被通过电学的方式获取到(例如,光学扫描)、可以被以合适的方式编译、解释和处理,然后可以被存储到计算机介质中。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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