CN110505161B - 一种报文处理方法及设备 - Google Patents
一种报文处理方法及设备 Download PDFInfo
- Publication number
- CN110505161B CN110505161B CN201910904680.2A CN201910904680A CN110505161B CN 110505161 B CN110505161 B CN 110505161B CN 201910904680 A CN201910904680 A CN 201910904680A CN 110505161 B CN110505161 B CN 110505161B
- Authority
- CN
- China
- Prior art keywords
- message
- processed
- ethernet port
- cpu
- chip
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种报文处理方法及设备。所述方法应用于包括多核CPU、现场可编程门阵列FPGA芯片的设备,包括:FPGA芯片通过自身的以太网口接收待处理报文,所述待处理报文中添加有备注信息;基于FPGA芯片内置的报文分析逻辑,从所述待处理报文中分析提取出五元组信息;根据提取出的五元组信息,确定匹配于所述待处理报文的报文接收队列,作为目标报文接收队列;将所述待处理报文添加到所述目标报文接收队列,以使对应目标报文接收队列的CPU核心收取所述待处理报文。与现有技术相比,多核CPU在接收无法正确识别五元组信息的报文时,仍可以发挥多核CPU并行处理的优势。
Description
技术领域
本申请涉及网络通信技术领域,尤其涉及一种报文处理方法及设备。
背景技术
目前,安装有多核中央处理器(Central Processing Unit,CPU)的设备一般通过网络控制器接收报文进行处理。基于多核CPU并行处理的优势,可以让不同的CPU核心处理具有不同五元组(源IP、目的IP、协议号、源Port、目的 Port)的报文;通常每个CPU核心对应一个报文接收队列和一个报文发送队列,所有报文接收队列和发送队列由网络控制器负责维护。即网络控制器在接收到报文时,根据从该报文中提取的五元组,将该报文添加到对应的报文接收队列,由负责处理该报文的CPU核心从该接收队列中获取报文进行处理。
一般情况下,由于五元组在报文中所处的位置是固定的,因此网络控制器能够根据五元组的固定位置提取五元组。但在某些情况下,报文中某个位置可能添加了备注信息,破坏了报文中原本的信息结构,使得五元组在报文中所处的位置发生改变,导致网络控制器无法准确地从报文中提取五元组,也就无法将报文添加到匹配的报文接收队列,进而导致多核CPU的并行处理优势无法发挥。
发明内容
针对上述技术问题,本申请公开了一种报文处理方法,技术方案如下:
一种报文处理方法,所述方法应用在包括多核CPU、现场可编程门阵列 (FieldProgrammable Gate Array,FPGA)芯片的设备中,所述FPGA芯片维护有N个报文接收队列,每个报文接收队列对应于所述多核CPU中的一个CPU 核心;
所述报文处理方法包括:
所述FPGA芯片接收待处理报文,所述待处理报文中添加有备注信息;
基于内置的报文分析逻辑,从所述待处理报文中提取五元组信息;
根据提取出的五元组信息,从所述N个报文接收队列中确定匹配于所述待处理报文的目标报文接收队列;
将所述待处理报文添加到所述目标报文接收队列,以使目标报文接收队列对应的CPU核心从所述目标报文接收队列中收取所述待处理报文进行处理。
一种设备,包括多核CPU与现场可编程门阵列FPGA芯片;所述FPGA芯片维护有N个报文接收队列,每个报文接收队列对应于所述多核CPU中的一个 CPU核心;
所述FPGA芯片,用于接收待处理报文,所述待处理报文中添加有备注信息;基于内置的报文分析逻辑,从所述待处理报文中分析提取出五元组信息;根据提取出的五元组信息,从所述N个报文接收队列中确定匹配于所述待处理报文的目标报文接收队列;将所述待处理报文添加到所述目标报文接收队列,以使所述目标报文接收队列对应的CPU核心从所述目标报文接收队列中收取所述待处理报文进行处理。
本申请公开的技术方案为增加了一个FPGA芯片,将报文接受工作由网络控制器转给FPGA芯片执行。由于FPGA芯片具有以太网口,能够作为多核CPU 在总线上的从设备,因此在结构上FPGA芯片可以替代网络控制器。由于FPGA 芯片的可编程特性,可以通过编写程序使FPGA芯片内置有报文分析逻辑,所述报文分析逻辑能够排除备注信息的干扰,从报文中提取出正确的五元组,并且FPGA芯片可以维护多个报文接收队列,以支持多核CPU的并行特点。
应用本申请公开的技术方案,可以使报文添加到匹配的报文接收队列,进而发挥多核CPU的并行处理优势。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为现有技术中公开的一种多核CPU通过网络控制器接收和发送报文的结构示意图;
图2为现有技术中多核CPU通过网络控制器和交换芯片接收和发送报文的原理示意图;
图3为本申请实施例一中提供的一种多核CPU通过FPGA芯片接收报文的原理示意图;
图4为本申请实施例一公开的一种报文处理方法的流程示意图;
图5为本申请实施例一中提供的一种设备的结构示意图;
图6为本申请实施例二中提供的一种多核CPU通过FPGA芯片接收报文,通过网络控制器发送报文的原理示意图;
图7为本申请实施例二公开的一种报文处理方法的流程示意图;
图8为本申请实施例三中提供的一种多核CPU通过FPGA芯片接收和发送报文的原理示意图;
图9为本申请实施例四中的一种FPGA芯片的结构示意图;
图10为本申请实施例五中的一种包含多核CPU和FPGA芯片的结构示意图;
图11为本申请实施例五中的一种包含多核CPU、FPGA芯片、交换芯片、网络控制器的设备的结构示意图。
具体实施方式
如图1所示,为相关技术中装载多核中央处理器CPU和网络控制器的设备(如网络交换设备)的结构示意图。其中,网络控制器具有以太网口,且维护多个报文接收队列和报文发送队列;多核CPU中包含N个CPU核心,每个CPU 核心分别对应一个报文发送队列和一个报文接收队列。
网络控制器通过以太网口接收到报文后,将报文分发到某一报文接收队列中,多核CPU中对应这一报文接收队列的CPU核心从队列中收取报文进行处理;在发送报文时,多核CPU中某一CPU核心将需要发送的报文插入到对应该CPU 核心的报文发送队列中,网络控制器将报文发送队列中的报文通过自身的以太网口发送出去。
其中,网络控制器将报文分发到某一报文接收队列的方法可以是网络控制器根据报文中的五元组(包括报文的源IP、目的IP、协议号、源端口号、目的端口号)信息进行分发。由于报文中五元组的位置是固定的,网络控制器可以通过获取报文中固定位置的字节段来获得报文五元组信息。
但某些情况下,报文会被添加备注信息。所述备注信息是CPU根据报文内容进行业务处理时所需要的辅助性信息。备注信息的添加可能影响报文中五元组的位置发生变化,从而使网络控制器在通过获取报文中固定位置的字节段时无法获得正确的报文五元组信息。例如在IP报文头部添加了3字节(即24位) 的备注信息,则正确的报文五元组信息被后移24位,网络控制器依然从原来的位置获取数据,则无法得到正确的报文五元组的信息。在无法获得正确的报文五元组信息时,由于无法根据现有规则将带有备注信息的报文分发到对应的报文接收队列,网络控制器会将带有备注信息的报文固定发送到某一个固定的报文接收队列中。
作为一种在报文中添加备注信息使网络控制器无法获得正确的报文五元组信息的情况示例,收发报文的硬件结构示意图如图2所示。与图1相比,增加了交换芯片。交换芯片通过以太网口与网络控制器相连,也具有多个其他以太网口向外发送或接收报文,拓展了以太网口。
在接收报文时,交换芯片通过某个以太网口接收报文,对接收到的报文可以在报文头部添加备注信息,备注信息的添加使报文五元组信息的位置向后移动,再将添加了备注信息的报文发送到网络控制器的以太网口,从而使网络控制器无法获得正确的报文五元组信息。其中备注信息可以包含交换芯片上接收该报文的以太网口的标识信息,以便将该标识信息告知处理该报文的CPU核心。
在报文中添加备注信息使网络控制器无法获得正确的报文五元组信息这一情况下,会使网络控制器将带有备注信息的报文固定发送到某一个固定的报文接收队列中,使得唯一对应这一报文接收队列的CPU核心才能处理带有备注信息的报文,从而在接收多个带有备注信息的报文时,无法发挥出多核CPU并行处理报文的优势。
本申请的技术方案旨在解决上述技术问题。
为了使本领域技术人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请保护的范围。
实施例一:
图3是本实施例中提供的一种多核CPU通过FPGA芯片接收报文的原理示意图,如图3所示,包括了多核CPU和FPGA芯片,其中多核CPU包含N个 CPU核心,N为大于1的自然数;所述多核CPU的不同CPU核心负责处理的报文所包含的五元组信息不同;所述FPGA芯片维护有N个报文接收队列;所述N个报文接收队列与N个CPU核心一一对应,所述报文接收队列可以由多核 CPU在设备初始化时按照多核CPU的核心数目分配给FPGA芯片;针对每个 CPU核心,该CPU核心可通过访问所述FPGA芯片的方式,从所述FPGA芯片维护的对应于该CPU核心的报文接收队列中获取报文进行处理;所述FPGA芯片具有以太网口,并内置有预设的报文分析逻辑,所述报文分析逻辑用于从添加有备注信息的报文中分析提取出正确的报文五元组信息。当所述FPGA芯片从以太网口接收到报文后,根据内置的报文分析逻辑从该报文中提取出五元组信息,并根据该五元组信息将该报文分配到某一报文接收队列,以使对应于该报文接收队列的CPU核心从该报文接收队列中获取该报文。
下面结合具体的步骤流程,如图4所示,对实施例一进行说明。
S401,FPGA芯片接收待处理报文。
需要说明的是,所述待处理报文中添加有备注信息。
作为一种示例,FPGA芯片接收的待处理报文可以来自于交换芯片,结构示意图如图5所示。所述交换芯片具有第一类以太网口,用于与所述FPGA的以太网口相连接;所述交换芯片还具有多个第二类以太网口,用于接收和发送来自外部网络的报文。需要说明的是,交换芯片的第一类以太网口、第二类以太网口,以及后文将要提到的第三类以太网口,都是为了描述方便进行区分,它们是设置于交换芯片上不同位置的以太网口。
在所述FPGA芯片通过以太网口接收待处理报文之前,交换芯片可以通过某一个第二类以太网口接收原始报文,向原始报文中添加一段备注信息,得到待处理报文,该备注信息用于标识接收原始报文的以太网口的属性,例如,该备注信息可以包含接收原始报文的所述第二类以太网口的网口标识,然后通过第一类以太网口将待处理报文发送给FPGA芯片的以太网口。其中,上述网口标识可以以明文形式存在,也可以以密文形式进行封装;上述备注信息可以是定长的,例如,具有S个字节,也可以是不定长的,对此本实施例不进行限制。
S402,基于内置的报文分析逻辑,从所述待处理报文中分析提取出五元组信息。
FPGA芯片根据内置的报文分析逻辑,可以排除备注信息的干扰,从待处理报文中提取出正确的五元组信息。
在FPGA芯片接收的待处理报文来自于交换芯片,备注信息中包含交换芯片的以太网口标识信息且为定长信息这一示例下,FPGA芯片可以将待处理报文头部的前S个字节剥离,即FPGA芯片剥离备注信息,对待处理报文的其他部分(即待处理报文还原得到的原始报文),利用报文五元组的固定位置作为依据,从原始报文中提取出报文五元组信息。
作为另一种示例,备注信息的长度不固定时,FPGA芯片从报文末尾开始检查字节并记录已检查的字节长度,直到检查到的字节代表的第一字节长度等于已检查字节的长度加上第二字节长度,所述第二字节长度为不含备注信息的报文开头到记录报文长度的字节之前的固定字节长度,此时认为当下检查的字节为记录报文长度的字节,依据这一位置信息提取出不含备注信息的报文,并根据报文五元组的固定位置从不含备注信息的报文中提取出报文五元组信息。
S403,根据提取出的五元组信息,确定匹配于所述待处理报文的目标报文接收队列。
FPGA芯片根据提取出的正确的五元组信息,经过一定计算和匹配,确定匹配于待处理报文的报文接收队列。
作为一种示例,可以计算五元组信息的哈希值,根据计算出的哈希值确定匹配于所述待处理报文的报文接收队列。更为具体地,在根据五元组信息的哈希值进行匹配时,可以使哈希值的可能取值数目与多核CPU的CPU核心数目一致,并且多个哈希值的取值与多个报文接收队列一一对应。例如多核CPU核心数为100时,报文接收队列也有100个,将哈希值确定为100以内的自然数,即五元组信息不论如何变化,根据五元组信息计算出的哈希值都会是某一个100 以内的自然数,其中100个哈希值与100个报文接收队列一一对应,当五元组信息计算出的哈希值为5时,将对应5的报文接收队列确定为匹配于所述报文的报文接收队列。
还可以根据多核CPU的CPU核心数目,利用二进制形式的哈希值中的某几位,使得哈希值的可能取值范围被分为多个范围,范围的数目与多核CPU的CPU 核心数目一致,并且多个范围与多个CPU核心一一对应。FPGA芯片可以预先确定全部的M位二进制数,并将全部的M位二进制数分配给所述N个报文接收队列;其中,M>0,≥N,<N;FPGA芯片计算所述五元组信息的哈希值,从计算出的哈希值中提取第P位至第P+M-1位二进制数,P大于0,确定提取出的M位二进制数对应的报文接收队列,作为匹配于所述待处理报文的报文接收队列。例如多核CPU核心数为4时,报文接收队列也有4个,将哈希值确定为32位二进制数,选取二进制形式的哈希值前两位,将哈希值的可能取值分为4个范围,分别是哈希值前两位为00、01、10、11,其中4个范围与4个报文接收队列一一对应,当五元组信息计算出的32位二进制哈希值的前两位为00 时,将对应哈希值前两位为00的报文接收队列确定为匹配于所述报文的报文接收队列。
作为另一种示例,可以将五元组信息中的五个信息作为二进制数求和,再用求得的和除以多核CPU的核心数,根据余数进行匹配,其中多个余数与多个报文接收队列一一对应。例如多核CPU核心数为5,将0、1、2、3、4一一对应于5个不同的报文接收队列,当某报文五元组信息求和为19384,则19384除以5得到余数为4,则将该报文分发到4对应的报文接收队列中。
S404,将所述待处理报文添加到所述目标报文接收队列。
在确定了目标报文接收队列后,FPGA芯片将待处理报文添加到目标报文接收队列中,以使对应于目标报文接收队列的CPU核心从目标报文接收队列中获取所述待处理报文。
作为一种示例,如果备注信息是封装过的,则为了让CPU在处理报文时直接获取明文的第二类以太网口的网口标识,FPGA芯片可以在将所述待处理报文添加到所述目标报文接收队列之前,解析备注信息得到解析结果,将备注信息替换为解析结果。
通过实施例一,在接收报文时,使用所述FPGA芯片维护多个报文接收队列,所述FPGA芯片具有与交换芯片相连的以太网口,所述FPGA芯片作为PCIE 总线的从设备与多核CPU交互,其中多个报文接收队列与多个CPU核心一一对应。由于可编程的特性,FPGA芯片内置有报文分析逻辑,使FPGA芯片能够从带有备注信息的报文中提取出正确的报文五元组信息。在接收报文时,FPGA芯片通过以太网口接收带有备注信息的报文,提取带有备注信息的报文中正确的报文五元组信息,根据所述报文五元组信息将带有备注信息的报文分发到某一报文接收队列中,以使多核CPU中对应这一报文接收队列的CPU核心从队列中收取报文进行处理。
如此,可以将携带有备注信息的报文分发到不同的CPU核心对应的报文接收队列中,从而可以发挥出多核CPU原有的并行处理的优势。
实施例一的表述至此结束。
在实施例一的基础上,本申请还公开了另一种报文处理发送方法,如实施例二所示。
实施例二:
图6是本实施例中提供的一种多核CPU通过FPGA芯片接收报文,通过网络控制器发送报文的原理示意图,如图6所示,在图5所示的架构基础上,设备还包括网络控制器;所述交换芯片还包括与所述网络控制器的以太网口相连的第三类以太网口;所述网络控制器维护有N个报文发送队列;所述N个报文发送队列与N个CPU核心一一对应,所述报文发送队列可以由多核CPU在设备初始化时按照多核CPU的核心数目分配给网络控制器;每个CPU核心可以访问网络控制器,向所述网络控制器中对应所述CPU核心的报文发送队列中插入报文。当所述FPGA芯片从以太网口接收到报文后,根据内置的报文分析逻辑从该报文中提取出五元组信息,并根据该五元组信息将该报文分配到某一报文接收队列;对应于该报文接收队列的CPU核心从该报文接收队列中获取该报文,该CPU核心确定需要发送的待发送报文,并将待发送报文发送到网络控制器中对应于该CPU核心的报文发送队列中,网络控制器将报文发送队列中的待发送报文通过以太网口发送到交换芯片的第三类以太网口,交换芯片通过某一第二类以太网口将待发送报文发送出去。
下面结合具体的步骤流程,如图7所示,对实施例二进行说明。
S701,CPU核心从对应的报文接收队列中获取报文。
S702,所述CPU核心对所述报文进行业务处理,并根据处理结果确定待发送报文。
作为一种示例,CPU核心对所述报文进行业务处理之后,生成新报文并确定为待发送报文。
作为另一种示例,CPU核心对所述报文进行业务处理,直接将所述报文确定为待发送报文。
作为另一种示例,CPU核心得到处理所述报文的结果后,确定交换芯片的某个第二类以太网口为目标以太网口,以使所述待发送报文从所述目标以太网口发送出去。根据所述目标以太网口的网口标识信息获得备注信息,根据处理结果确定发送待发送报文,所述待发送报文中包含备注信息。其中备注信息包含所述目标以太网口的网口标识信息。当然备注信息中也可以不包含所述目标以太网口的网口标识信息。
需要说明的是,此处的备注信息与实施例一的备注信息并不是同一概念,此处的备注信息封装有发送报文的第二类以太网口的网口标识信息,而分发阶段的备注信息封装的是接收报文的第二类以太网口的网口标识信息。
S703,所述CPU核心将所述待发送报文插入到所述网络控制器维护的对应所述CPU核心的报文发送队列。
S704,所述网络控制器通过以太网口将所述报文发送队列中的所述待发送报文发送到所述交换芯片的第三类以太网口。
在CPU核心根据交换芯片的目标以太网口的网口标识信息获得备注信息,并向报文添加备注信息得到待发送报文这一示例下,网络控制器可以从报文发送队列中提取出待发送报文,通过自身的以太网口将所述待发送报文发送到交换芯片的第三类以太网口。交换芯片根据待发送报文中的备注信息得到目标以太网口的网口标识,再将待发送报文或不含备注信息的待发送报文从所述网口标识信息对应的目标以太网口发送出去。
S705,所述交换芯片发送所述待发送报文。
作为一种示例,当备注信息中指定了目标以太网口发送报文时,交换芯片可以通过目标以太网口发送所述待发送报文。
作为另一种示例,当备注信息中并未指定目标以太网口发送报文时,交换芯片可以通过任一第二类以太网口发送所述待发送报文。
实施例二可以将报文的接收和发送过程分离,管理更加方便,也可以充分利用多核CPU与FPGA芯片之间的带宽、多核CPU与网络控制器之间的带宽。
实施例二的表述到此结束。
实施例三:
图8是本实施例中提供的一种多核CPU通过FPGA芯片接收和发送报文的原理示意图。如图8所示,在实施例二的基础上将网络控制器替换为FPGA芯片,也就是说,所述FPGA芯片还维护有N个报文发送队列。所述N个报文发送队列与N个CPU核心一一对应,所述报文发送队列可以由多核CPU在设备初始化时按照多核CPU的核心数目分配给FPGA芯片;每个CPU核心可以访问所述FPGA芯片,向所述FPGA芯片中对应所述CPU核心的报文发送队列中插入报文。实施例三与实施例二的主要区别在于,将维护报文发送队列的工作也交由FPGA芯片执行,可以参照前文对实施例二的说明理解实施例三,在此不再赘述。
实施例三可以简化硬件结构(不需要网络控制器),在既需要对接收的携带有备注信息的报文进行处理,又需要对外发送携带有备注信息的报文的场景下,发挥多核CPU的并行处理优势。
实施例三的表述到此结束。
除了上述方法实施例之外,一种可用的方案是,多核CPU接收多个带有备注信息的报文时,网络控制器将带有备注信息的报文固定发送到某一个固定的报文接收队列,使得唯一对应这一报文接收队列的CPU核心对带有备注信息的报文进行处理,提取出正确的报文五元组信息,再由这一CPU核心根据提取出的报文五元组信息将这一带有备注信息的报文分发到对应的CPU核心上。
此外,本申请还公开了相关的装置实施例和设备实施例,如实施例四和实施例五所示。
实施例四:
一种FPGA芯片,结构示意图如图9所示。
设备包括多核CPU与所述FPGA芯片;所述多核CPU包含N个CPU核心,其中N为大于1的自然数;所述多核CPU的不同CPU核心负责处理的报文所包含的五元组信息不同;
所述FPGA芯片维护有N个报文接收队列;所述N个报文接收队列与N个CPU核心一一对应,所述报文接收队列可以由多核CPU在设备初始化时按照多核CPU的核心数目分配给FPGA芯片;针对每个CPU核心,该CPU核心可通过访问所述FPGA芯片的方式,从所述FPGA芯片维护的对应于该CPU核心的报文接收队列中获取报文进行处理;所述FPGA芯片具有以太网口,并内置有预设的报文分析逻辑,所述报文分析逻辑用于从添加有备注信息的报文中分析提取出五元组信息;
所述FPGA芯片包括:
901,接收模块。用于通过自身的以太网口接收待处理报文,所述待处理报文中添加有备注信息。
作为一种示例,接收模块接收的待处理报文可以来自于交换芯片,如图5 所示。
所述交换芯片具有第一类以太网口,用于与所述接收模块的以太网口相连接;所述交换芯片还具有多个第二类以太网口,用于接收和发送来自外部网络的报文。在所述接收模块通过以太网口接收待处理报文之前,交换芯片通过某一个第二类以太网口接收原始报文,向原始报文中添加一段备注信息,得到待处理报文,其中备注信息包含接收原始报文的所述第二类以太网口的网口标识。然后通过第一类以太网口将待处理报文发送给接收模块的以太网口。
在接收模块接收的待处理报文来自于交换芯片这一种示例中,作为一种示例,备注信息可以是定长的,具有S个字节,被交换芯片添加在原始报文之前,得到待处理报文。
902,分析提取模块。基于内置的报文分析逻辑,从所述待处理报文中分析提取出五元组信息。
分析提取模块根据内置的报文分析逻辑,可以不受备注信息的影响,从待处理报文中提取出正确的五元组信息。
在分析提取模块接收的待处理报文来自于交换芯片,备注信息中包含交换芯片的以太网口标识信息且为定长信息这一示例下,作为一种示例,分析提取模块可以将待处理报文头部的前S个字节剥离,即分析提取模块剥离备注信息,对待处理报文的其他部分,利用报文五元组的固定位置作为依据,从报文中提取出正确的报文五元组信息。
作为另一种示例,备注信息的长度不固定时,分析提取模块从报文末尾开始检查字节并记录已检查的字节长度,直到检查到的字节代表的第一字节长度等于已检查字节的长度加上第二字节长度,所述第二字节长度为不含备注信息的报文开头到记录报文长度的字节之前的固定字节长度,此时认为当下检查的字节为记录报文长度的字节,依据这一位置信息提取出不含备注信息的报文,并根据报文五元组的固定位置从不含备注信息的报文中提取出正确的报文五元组信息。
903,确定模块。根据提取出的五元组信息,确定匹配于所述待处理报文的报文接收队列,作为目标报文接收队列。
确定模块根据提取出的正确的五元组信息,经过一定计算和匹配,确定匹配于待处理报文的报文接收队列。
作为一种示例,可以计算五元组信息的哈希值,根据计算出的哈希值确定匹配于所述待处理报文的报文接收队列。更为具体地,在根据五元组信息的哈希值进行匹配时,可以使哈希值的可能取值数目与多核CPU的CPU核心数目一致,并且多个哈希值的取值与多个报文接收队列一一对应。例如多核CPU核心数为100时,报文接收队列也有100个,将哈希值确定为100以内的自然数,即五元组信息不论如何变化,根据五元组信息计算出的哈希值都会是某一个100 以内的自然数,其中100个哈希值与100个报文接收队列一一对应,当五元组信息计算出的哈希值为5时,将对应5的报文接收队列确定为匹配于所述报文的报文接收队列。
还可以根据多核CPU的CPU核心数目,利用二进制形式的哈希值中的某几位,使得哈希值的可能取值范围被分为多个范围,范围的数目与多核CPU的CPU 核心数目一致,并且多个范围与多个CPU核心一一对应。例如多核CPU核心数为4时,报文接收队列也有4个,将哈希值确定为32位二进制数,选取二进制形式的哈希值前两位,将哈希值的可能取值分为4个范围,分别是哈希值前两位为00、01、10、11,其中4个范围与4个报文接收队列一一对应,当五元组信息计算出的32位二进制哈希值的前两位为00时,将对应哈希值前两位为00 的报文接收队列确定为匹配于所述报文的报文接收队列。
作为另一种示例,可以将五元组信息中的五个信息作为二进制数求和,再用求得的和除以多核CPU的核心数,根据余数进行匹配,其中多个余数与多个报文接收队列一一对应。
904,添加模块。将所述待处理报文添加到所述目标报文接收队列。
在确定了目标报文接收队列后,添加模块将待处理报文添加到目标报文接收队列中,以使对应目标报文接收队列的CPU核心到目标报文接收队列中收取所述待处理报文。
作为一种示例,在将所述待处理报文添加到所述目标报文接收队列之前,添加模块可以分析备注信息得到分析结果,将备注信息替换为分析结果。
实施例四的表述到此结束。
实施例五:
一种设备,结构示意图如图10所示,包括现场可编程门阵列FPGA芯片与多核CPU。
所述多核CPU包含N个CPU核心,其中N为大于1的自然数;所述多核 CPU的不同CPU核心负责处理的报文所包含的五元组信息不同。
所述FPGA芯片维护有N个报文接收队列;所述N个报文接收队列与N个 CPU核心一一对应,所述报文接收队列可以由多核CPU在设备初始化时按照多核CPU的核心数目分配给FPGA芯片;针对每个CPU核心,该CPU核心可通过访问所述FPGA芯片的方式,从所述FPGA芯片维护的对应于该CPU核心的报文接收队列中获取报文进行处理;所述FPGA芯片具有以太网口,并内置有预设的报文分析逻辑,所述报文分析逻辑用于从添加有备注信息的报文中分析提取出五元组信息。
所述FPGA芯片,用于通过自身的以太网口接收待处理报文,所述待处理报文中添加有备注信息;基于内置的报文分析逻辑,从所述待处理报文中分析提取出五元组信息;根据提取出的五元组信息,确定匹配于所述待处理报文的报文接收队列,作为目标报文接收队列;将所述待处理报文添加到所述目标报文接收队列。
作为一种设备示例,设备还包括交换芯片;所述交换芯片包括:用于与所述FPGA芯片的以太网口相连的第一类以太网口,以及用于接收和发送报文的多个第二类以太网口;
所述交换芯片,用于在所述FPGA芯片通过以太网口接收待处理报文之前,通过任一第二类以太网口接收原始报文;向所述原始报文中添加备注信息,得到所述待处理报文,所述备注信息中包含所述任一第二类以太网口的网口标识;通过所述第一类以太网口将所述待处理报文发送给所述FPGA芯片的以太网口。
作为包含交换芯片的设备示例下的另一种设备示例,设备还包括网络控制器,结构示意图如图11所示;所述交换芯片还包括:用于与网络控制器相连的第三类以太网口;所述网络控制器维护有N个报文发送队列;所述N个报文发送队列与N个CPU核心一一对应,所述报文发送队列可以由多核CPU在设备初始化时按照多核CPU的核心数目分配给FPGA芯片;每个CPU核心可以访问网络控制器,向所述网络控制器中对应所述CPU核心的报文发送队列中插入报文;
所述多核CPU中任一CPU核心,用于从对应的报文接收队列中获取报文;处理所述报文,并根据处理结果确定待发送报文;将所述待发送报文插入到所述网络控制器维护的对应所述CPU核心的报文发送队列。
所述网络控制器,用于通过以太网口将所述报文发送队列中的所述待发送报文发送到交换芯片的第三类以太网口。
所述交换芯片,还用于发送所述待发送报文。
实施例五的表述到此结束。
对于装置实施例四和设备实施例五而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例和设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种报文处理方法,其特征在于,所述方法应用在包括多核CPU、现场可编程门阵列FPGA芯片的设备中,所述FPGA芯片维护有N个报文接收队列,每个报文接收队列对应于所述多核CPU中的一个CPU核心;
所述报文处理方法包括:
所述FPGA芯片接收待处理报文,所述待处理报文中添加有备注信息;基于内置的报文分析逻辑,所述FPGA芯片从所述待处理报文末尾开始检查字节并记录已检查的字节长度,直到检查到的字节代表的第一字节长度等于已检查字节的长度加上第二字节长度,所述第二字节长度为不含备注信息的报文开头到记录报文长度的字节之前的固定字节长度,此时认为当下检查的字节为记录报文长度的字节,依据这一位置信息提取出不含备注信息的报文,并根据报文五元组的固定位置从所述不含备注信息的报文中提取五元组信息;
根据提取出的五元组信息,从所述N个报文接收队列中确定匹配于所述待处理报文的目标报文接收队列;
将所述待处理报文添加到所述目标报文接收队列,以使目标报文接收队列对应的CPU核心从所述目标报文接收队列中收取所述待处理报文进行处理。
2.根据权利要求1所述的方法,其特征在于,所述设备还包括交换芯片,所述交换芯片包括:用于与所述FPGA芯片的以太网口相连的第一类以太网口,以及用于接收和发送报文的多个第二类以太网口;
在所述FPGA芯片接收待处理报文之前,所述方法还包括:
所述交换芯片通过任一第二类以太网口接收原始报文;
所述交换芯片向所述原始报文中添加备注信息,得到所述待处理报文,所述备注信息中包含所述任一第二类以太网口的网口标识;
所述交换芯片通过所述第一类以太网口将所述待处理报文发送给所述FPGA芯片。
3.根据权利要求2所述的方法,其特征在于,所述备注信息的长度为S个字节,位于所述原始报文之前;
所述FPGA芯片基于内置的报文分析逻辑,从所述待处理报文中分析提取出五元组信息,包括:
所述FPGA芯片基于内置的报文分析逻辑,将所述待处理报文的前S个字节的备注信息剥离,获得原始报文;
从所述原始报文中的固定位置提取出五元组信息。
4.根据权利要求3所述的方法,其特征在于,在FPGA芯片将所述待处理报文添加到目标报文接收队列之前,所述方法还包括:
所述FPGA芯片解析待处理报文中的备注信息得到解析结果;
所述FPGA芯片将备注信息替换为解析结果。
5.根据权利要求2所述的方法,其特征在于,所述设备还包括网络控制器;所述交换芯片还包括:与所述网络控制器的以太网口相连的第三类以太网口;所述网络控制器维护有N个报文发送队列;每个报文发送队列对应于所述多核CPU中的一个CPU核心;
所述方法还包括:
CPU核心从对应的报文接收队列中获取报文;
所述CPU核心处理所述报文,并根据处理结果确定待发送报文;
所述CPU核心将所述待发送报文插入到所述网络控制器维护的对应所述CPU核心的报文发送队列;
所述网络控制器通过以太网口将所述报文发送队列中的所述待发送报文发送到所述交换芯片的第三类以太网口;
所述交换芯片发送所述待发送报文。
6.根据权利要求5所述的方法,其特征在于,所述CPU核心根据处理结果确定待发送报文,包括:
CPU核心根据处理结果确定用于将待发送报文发出的第二类以太网口,作为目标以太网口;
所述CPU核心向所述报文添加备注信息得到待发送报文,所述备注信息包含所述目标以太网口的网口标识。
7.根据权利要求6所述的方法,其特征在于,所述网络控制器通过以太网口将报文发送队列中的待发送报文发送到所述交换芯片的第三类以太网口,还包括:
所述网络控制器从所述报文发送队列中提取所述待发送报文;
所述网络控制器通过自身的以太网口将所述待发送报文发送到所述交换芯片的第三类以太网口;
所述交换芯片根据待发送报文中的备注信息得到所述目标以太网口的网口标识;
所述交换芯片将剥离了备注信息的待发送报文从所述网口标识对应的目标以太网口发送出去。
8.一种报文处理设备,其特征在于,包括多核CPU与现场可编程门阵列FPGA芯片;所述FPGA芯片维护有N个报文接收队列,每个报文接收队列对应于所述多核CPU中的一个CPU核心;
所述FPGA芯片,用于接收待处理报文,所述待处理报文中添加有备注信息;基于内置的报文分析逻辑,所述FPGA芯片从所述待处理报文末尾开始检查字节并记录已检查的字节长度,直到检查到的字节代表的第一字节长度等于已检查字节的长度加上第二字节长度,所述第二字节长度为不含备注信息的报文开头到记录报文长度的字节之前的固定字节长度,此时认为当下检查的字节为记录报文长度的字节,依据这一位置信息提取出不含备注信息的报文,并根据报文五元组的固定位置从所述不含备注信息的报文中提取五元组信息;根据提取出的五元组信息,从所述N个报文接收队列中确定匹配于所述待处理报文的目标报文接收队列;将所述待处理报文添加到所述目标报文接收队列,以使所述目标报文接收队列对应的CPU核心从所述目标报文接收队列中收取所述待处理报文进行处理。
9.根据权利要求8所述的设备,其特征在于,还包括交换芯片;
所述交换芯片包括:用于与所述FPGA的以太网口相连的第一类以太网口,以及用于接收和发送报文的多个第二类以太网口;
所述交换芯片,用于在所述FPGA芯片接收待处理报文之前,通过任一第二类以太网口接收原始报文;向所述原始报文中添加备注信息,得到所述待处理报文,所述备注信息中包含所述任一第二类以太网口的网口标识;通过所述第一类以太网口将所述待处理报文发送给所述FPGA芯片。
10.根据权利要求9所述的设备,其特征在于,还包括网络控制器;所述交换芯片还包括:用于与所述网络控制器的以太网口相连的第三类以太网口;所述网络控制器维护有N个报文发送队列;每个报文发送队列对应于所述多核CPU中的一个CPU核心;
所述多核CPU中任一CPU核心,用于从对应的报文接收队列中获取报文;处理所述报文,并根据处理结果确定待发送报文;将所述待发送报文插入到所述网络控制器维护的对应所述CPU核心的报文发送队列;
所述网络控制器,用于通过以太网口将所述报文发送队列中的所述待发送报文发送到所述交换芯片的第三类以太网口;
所述交换芯片,还用于发送所述待发送报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910904680.2A CN110505161B (zh) | 2019-09-24 | 2019-09-24 | 一种报文处理方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910904680.2A CN110505161B (zh) | 2019-09-24 | 2019-09-24 | 一种报文处理方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110505161A CN110505161A (zh) | 2019-11-26 |
CN110505161B true CN110505161B (zh) | 2023-01-24 |
Family
ID=68592624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910904680.2A Active CN110505161B (zh) | 2019-09-24 | 2019-09-24 | 一种报文处理方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110505161B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111131078B (zh) * | 2019-12-24 | 2022-09-16 | 北京天融信网络安全技术有限公司 | 报文散列方法、装置、fpga模组及处理器模组 |
CN111787032B (zh) | 2020-08-05 | 2022-10-25 | 北京北斗弘鹏科技有限公司 | 一种抵御网络通信监听的数据发送和接收方法以及装置 |
CN114285949A (zh) * | 2020-09-28 | 2022-04-05 | 深圳鼎信通达股份有限公司 | 一种基于阵列式高并发sbc系统 |
CN114338548B (zh) * | 2020-10-12 | 2024-08-20 | 迈普通信技术股份有限公司 | 报文分流方法、装置、网络设备及计算机可读存储介质 |
CN112202814B (zh) * | 2020-11-04 | 2022-02-08 | 中国电子科技集团公司第三十研究所 | 一种路由交换设备内生安全动态防护功能的处理方法 |
CN112769701A (zh) * | 2020-12-30 | 2021-05-07 | 杭州迪普信息技术有限公司 | 一种转发报文的方法及装置 |
CN113905416B (zh) * | 2021-09-16 | 2024-04-16 | 锐捷网络股份有限公司 | VoLTE报文的处理方法及装置 |
CN114615355B (zh) * | 2022-05-13 | 2022-10-04 | 恒生电子股份有限公司 | 报文处理方法以及报文解析模块 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102769869B (zh) * | 2012-08-09 | 2015-07-15 | 北京傲天动联技术股份有限公司 | 无线接入点的控制和配置报文快速转发系统 |
CN106685847B (zh) * | 2015-11-06 | 2020-01-17 | 华为技术有限公司 | 一种报文处理方法、装置及设备 |
CN109688069A (zh) * | 2018-12-29 | 2019-04-26 | 杭州迪普科技股份有限公司 | 一种处理网络流量的方法、装置、设备及存储介质 |
-
2019
- 2019-09-24 CN CN201910904680.2A patent/CN110505161B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110505161A (zh) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110505161B (zh) | 一种报文处理方法及设备 | |
CN100464320C (zh) | 用于高带宽总线的端口适配器 | |
US9276853B2 (en) | Hashing of network packet flows for efficient searching | |
CN105701053B (zh) | 串行数据发送、接收方法及装置 | |
CN108521371B (zh) | 报文转发方法及装置 | |
CN108521343A (zh) | 一种oam报文的处理方法及装置 | |
EP2490380B1 (en) | Cell processing method, source line card, and network card in switching network | |
EP3232630A1 (en) | Method and device for data packet extraction | |
CN109561395A (zh) | 一种蓝牙传输方法及装置 | |
EP4145788A1 (en) | Service data processing, exchange and extraction methods, devices, and computer-readable medium | |
CN110663217A (zh) | 利用帧属性的可配置业务分组引擎 | |
CN113422707A (zh) | 一种带内网络遥测方法及设备 | |
WO2018196776A1 (en) | Envelope header design in passive optical networks | |
EP2751941B1 (en) | A system and a method for identifying a point in time of receipt of a data packet | |
CN115174676A (zh) | 汇聚分流方法及其相关设备 | |
CN102404152B (zh) | 识别应答报文的方法及设备 | |
CN108460044B (zh) | 数据的处理方法和装置 | |
CN110417687B (zh) | 一种报文发送与接收方法及装置 | |
CN107276921B (zh) | 用于接收和转发以太网分组的交换机、设备及方法 | |
CN113765892A (zh) | 用于适应网络协议更新的系统、方法和计算机可读介质 | |
CN116405431A (zh) | 一种数据处理方法、网络节点和计算机可读存储介质 | |
CN107645747B (zh) | 一种发送和接收数据的方法及设备 | |
WO2022227484A1 (zh) | 数据通信方法、装置、计算机设备和存储介质 | |
CN113473267B (zh) | 数据传输方法、装置及通信装置 | |
CN108366039B (zh) | 一种mac层数据的发送方法、接收方法、装置及设备 |
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 |