CN108055202A - 一种报文处理设备和方法 - Google Patents
一种报文处理设备和方法 Download PDFInfo
- Publication number
- CN108055202A CN108055202A CN201711288346.6A CN201711288346A CN108055202A CN 108055202 A CN108055202 A CN 108055202A CN 201711288346 A CN201711288346 A CN 201711288346A CN 108055202 A CN108055202 A CN 108055202A
- Authority
- CN
- China
- Prior art keywords
- list item
- message
- fpga
- cpu
- unit
- 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
Classifications
-
- 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/66—Layer 2 routing, e.g. in Ethernet based MAN's
-
- 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
-
- 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
- H04L45/745—Address table lookup; Address filtering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种报文处理设备和方法,用于通过基于CPU+FPGA异构***进行报文的处理。该设备包括中央处理器CPU和至少一个现场可编程门阵列FPGA;所述CPU,用于为FPGA配置表项,并将配置所述表项的表项配置信息发送给所述FPGA;所述表项配置信息中携带所述表项的存储地址;所述至少一个FPGA,用于接收所述表项配置信息和待处理报文,截取所述待处理报文的报文头部字段,并从报文头部字段中提取用于查表的关键字,根据所述关键字以及所述存储地址存储的表项进行查表,根据查表结果对所述待处理报文进行处理,将处理后的报文发送给与所述处理后的报文对应的设备;其中,所述关键字与所述存储地址存储的表项相对应。
Description
技术领域
本发明涉及网络技术领域,特别涉及一种报文处理设备和方法。
背景技术
目前,网络设备的架构主要为集成电路(Application Specific IntegratedCircuit,ASIC)架构,或者为基于专用网络处理器(Network Processor,NP)架构,或者为基于多核中央处理器(Central Processing Unit,CPU)架构。
其中,ASIC架构由于只针对特定的业务场景,功能相对较为固定,因此性能较高,但也正因为功能相对固化的特性,ASIC架构的可编程能力不高,无法满足多变业务的需求。而NP架构由多个微码处理器以及多个硬件协处理器组成,多个微码处理器在内部并行运行,通过预先编制的微码(microcode)来控制处理流程,因此具有较强的可编程性,但是价格较为昂贵。另外,多核CPU架构能够在多核CPU上采用软件编程实现业务功能,具有很强的可编程能力,但多核CPU架构的性能相较其他架构均处于劣势。因此,目前的网络设备的架构或多或少的都存在这一些缺陷,从而使得基于现场可编程逻辑门阵列(Field-Programmable Gete Array,FPGA)架构逐渐开始被采用。其中,FPGA具有极强的可编程性,且在时延、吞吐率等方面也有很强的优势。但是,目前对于FPGA架构的网络设备,并没有一种通用的开发模型,或者较为固定的网络报文处理方法,所以几乎每次开发都是重新设计,并且模块接口各异,可重用性低,只有当开发人员对处理框架、报文处理逻辑较为熟悉时才能完成设计,而对于仅需要验证某个算法、协议甚至是某个单元处理逻辑的开发人员而言,搭建完整的网络报文处理框架需要消耗大量的时间,开发效率低。
发明内容
本发明实施例提供一种报文处理设备和方法,用于通过基于CPU+FPGA异构***进行报文的处理。
第一方面,提供一种报文处理设备,该设备包括中央处理器CPU和至少一个现场可编程门阵列FPGA;
所述CPU,用于为所述FPGA配置表项,并将配置所述表项的表项配置信息发送给所述FPGA;所述表项配置信息中携带所述表项的存储地址;
所述至少一个FPGA,用于接收所述表项配置信息和待处理报文,截取所述待处理报文的报文头部字段,并从所述报文头部字段中提取用于查表的关键字,根据所述关键字以及所述存储地址存储的表项进行查表,根据查表结果对所述待处理报文进行处理,将处理后的报文发送给与所述处理后的报文对应的设备;其中,所述关键字与所述存储地址存储的表项相对应。
可选的,所述至少一个FPGA中任意一个FPGA包括多个功能单元,所述多个功能单元具体包括:
报文接收RX单元,用于接收待处理报文;
报文包拆分Decap单元,用于截取所述待处理报文的报文头部字段,并将所述待处理报文中除所述报文头部字段之外的其他字段发送至所述FPGA包括的报文缓存PacketBuffer单元进行存储;
报文解析Parser单元,用于根据所述报文头部字段确定所述待处理报文的类型,在确定结果表明所述待处理报文为协议报文时,则在所述报文头部字段中添加上送CPU标志;其中,所述上送CPU标志表明需要将所述待处理报文发送给所述CPU;
关键字提取Fetch单元,用于提取所述报文头部字段中的关键字;
查表引擎单元,用于根据所述关键字以及所述存储地址存储的表项进行查表,并根据所述查表结果对所述报文头部字段进行修改;
报文封装Encap单元,用于根据修改后的报文头部字段确定是否需要将所述待处理报文进行封装;若确定需要将所述待处理报文进行封装,则将所述修改后的报文头部字段和所述PacketBuffer单元中存储的所述待处理报文中除所述报文头部字段之外的其他字段进行封装;
报文发送TX单元,用于确定封装后的报文中是否包括所述上送CPU标志;若确定结果为是,则将所述封装后的报文上送所述CPU。
可选的,所述查表引擎单元包括至少一个查表引擎,且每一个查表引擎包括:
匹配Match子单元,用于将所述关键字提取Fetch单元提取的关键字根据所述查表引擎包括的表项Table子单元能够识别的格式进行格式化;
所述表项Table子单元,用于根据格式化后的关键字以及所述存储地址存储的表项进行查表,并输出所述查表结果;其中,所述表项Table子单元中存储了用于查表的查表算法;
修改Action子单元,用于根据所述查表结果对所述报文头部字段进行修改。
可选的,所述每一个查表引擎还包括:
表项管理TableMng子单元,用于根据所述表项配置信息配置同一查询引擎中的表项Table子单元所能查询的表项。
可选的,所述CPU包括主管理Host Main单元和第一控制单元,所述多个功能单元还包括第二控制单元,
所述主管理Host Main单元,用于生成控制信号;所述控制信号中携带所述多个功能单元包括的其中一个功能单元的ID;其中,所述至少一个FPGA中任意一个FPGA中的不同功能单元的ID不同;
所述第一控制单元,用于将所述控制信号发送给所述第二控制单元;
所述第二控制单元,用于接收所述控制信号,并将所述控制信号转发给与所述ID对应的功能单元;其中,所述至少一个FPGA能够基于所述控制信号控制与所述ID对应的功能单元所实现功能的开启和/或参数设置。
可选的,所述CPU还包括报文收发单元;所述多个功能单元还包括直接内存访问单元,所述直接内存访问单元与所述报文接收RX单元和所述报文发送TX单元均相连;
所述报文收发单元,用于将待处理报文存储于内存中,并向所述直接内存访问单元发送所述待处理报文的存储地址;或者,接收所述直接内存访问单元发送的所述携带上送CPU标志的报文的存储地址,并根据所述携带上送CPU标志的报文的存储地址获取所述携带上送CPU标志的报文;
所述直接内存访问单元,用于接收所述待处理报文的存储地址,根据所述待处理报文的存储地址读取所述待处理报文,并将所读取的待处理报文发送给所述报文接收RX单元;或者,接收所述报文发送TX单元发送的所述携带上送CPU标志的报文,将所述携带上送CPU标志的报文存储于内存中,并将所述携带上送CPU标志的报文的存储地址发送给所述报文收发单元。
可选的,所述CPU还包括第一表项配置单元;所述多个功能单元还包括第二表项配置单元,所述第二表项配置单元与所述每个查表引擎中的所述表项管理TableMng子单元相连;
所述主管理Host Main单元,还用于生成表项配置信息;
所述第一表项配置单元,用于将所述表项配置信息发送给所述第二表项配置单元;
所述第二表项配置单元,用于接收所述表项配置信息,并根据所述表项配置信息配置的表项的类型将所述表项配置信息转发给与所述类型对应的主管理TableMng子单元。
可选的,所述CPU还包括报文源MAC地址学习单元;
所述报文源MAC地址学习单元,用于对所述携带所述上送CPU标志的报文包括的关键字进行存储,并将存储地址发送给所述第二表项配置单元。
可选的,所述至少一个FPGA中任意一个FPGA还包括:
报文传输通道,用于传输报文;
报文头部传输通道,用于传输报文头部字段;
报文头部控制字段传输通道,用于传输报文头部控制字段;
表项配置信息传输通道,用于传输所述表项配置信息;
req/ack信号通道,用于传输req/ack信号;
其中,在所述多个功能单元中的任意一个功能单元向其他功能单元进行数据传输时,所述任意一个功能单元能够调用与所要传输的数据的类型对应的通道进行传输。
第二方面,提供一种报文处理方法,所述方法应用于报文处理设备中,所述报文处理设备包括CPU和至少一个FPGA,所述方法包括:
所述至少一个FPGA接收CPU为自身配置的表项的表项配置信息;所述表项配置信息中携带所述表项的存储地址;
所述至少一个FPGA接收所述表项配置信息和待处理报文,截取所述待处理报文的报文头部字段,并从所述报文头部字段中提取用于查表的关键字,根据所述关键字以及所述存储地址存储的表项进行查表,根据查表结果对所述待处理报文进行处理,将处理后的报文发送给与所述处理后的报文对应的设备;其中,所述关键字与所述存储地址存储的表项相对应。
可选的,所述方法还包括:
所述至少一个FPGA接收待处理报文;
所述至少一个FPGA截取所述待处理报文的报文头部字段,并将所述待处理报文中除所述报文头部字段之外的其他字段进行存储;
所述至少一个FPGA根据所述报文头部字段确定所述待处理报文的类型,在确定结果表明所述待处理报文为协议报文时,则在所述报文头部字段中添加上送CPU标志;其中,所述上送CPU标志表明需要将所述待处理报文发送给所述CPU;
所述至少一个FPGA提取所述报文头部字段中的关键字;
所述至少一个FPGA根据所述关键字以及所述存储地址存储的表项进行查表,并根据所述查表结果对所述报文头部字段进行修改;
所述至少一个FPGA根据修改后的报文头部字段确定是否需要将所述待处理报文进行封装;若确定需要将所述待处理报文进行封装,则将所述修改后的报文头部字段和所述PacketBuffer单元中存储的所述待处理报文中除所述报文头部字段之外的其他字段进行封装;
所述至少一个FPGA确定封装后的报文中是否包括所述上送CPU标志;若确定结果为是,则将所述封装后的报文所述CPU。
可选的,所述至少一个FPGA根据所述关键字以及所述存储地址存储的表项进行查表,并根据所述查表结果对所述报文头部字段进行修改,包括:
所述至少一个FPGA将提取的关键字根据所述至少一个FPGA能够识别的格式进行格式化;
所述至少一个FPGA根据格式化后的关键字以及所述存储地址存储的表项进行查表,并输出所述查表结果;其中,所述至少一个FPGA存储了用于查表的查表算法;
所述至少一个FPGA根据所述查表结果对所述报文头部字段进行修改。
可选的,所述方法还包括:
所述至少一个FPGA根据所述表项配置信息配置所述至少一个FPGA所能查询的表项。
可选的,所述方法还包括:
所述至少一个FPGA接收所述CPU发送的控制信号;其中,所述至少一个FPGA包括多个功能单元,且任意一个FPGA中的不同功能单元的ID不同;所述控制信号中携带所述多个功能单元包括的其中一个功能单元的ID;
所述至少一个FPGA将所述控制信号发送给与所述ID对应的功能单元;其中,所述FPGA能够基于所述控制信号控制与所述ID对应的功能单元所实现功能的开启和/或参数设置。
可选的,所述方法还包括:
所述至少一个FPGA接收所述CPU发送的待处理报文的存储地址;并根据所述待处理报文的存储地址读取所述待处理报文;
或者,
所述至少一个FPGA携带上送CPU标志的报文存储于内存中,并将所述携带上送CPU标志的报文的存储地址发送给所述CPU。
可选的,所述方法还包括:
所述至少一个FPGA接收所述CPU发送的表项配置信息;
所述至少一个FPGA根据所述表项配置信息配置表项。
可选的,所述至少一个FPGA中任意一个FPGA还包括:
报文传输通道,用于传输报文;
报文头部传输通道,用于传输报文头部字段;
报文头部控制字段传输通道,用于传输报文头部控制字段;
表项配置信息传输通道,用于传输所述表项配置信息;
req/ack信号通道,用于传输req/ack信号;
其中,在所述多个功能单元中的任意一个功能单元向其他功能单元进行数据传输时,所述任意一个功能单元能够调用与所要传输的数据的类型对应的通道进行传输。
第三方面,提供一种报文处理方法,所述方法应用于报文处理设备中,所述报文处理设备包括CPU和FPGA,所述方法包括:
所述CPU生成表项配置信息;所述表项配置信息用于为所述FPGA配置表项,且所述表项配置信息中携带所述表项的存储地址;
所述CPU将配置所述表项的表项配置信息发送给所述FPGA。
可选的,所述方法还包括:
所述CPU生成控制信号;所述控制信号中携带所述FPGA包括的其中一个功能单元的ID;
所述CPU将所述控制信号发送给所述FPGA,以使得所述FPGA能够基于所述控制信号控制与所述ID对应的功能单元所实现功能的开启和/或参数设置。
可选的,所述方法还包括:
所述CPU将待处理报文存储于内存中,并向所述FPGA发送所述待处理报文的存储地址;
或者,
所述CPU接收所述FPGA发送的所述携带上送CPU标志的报文的存储地址,并根据所述存储地址读取所述携带上送CPU标志的报文。
可选的,在根据所述存储地址读取所述携带上送CPU标志的报文,之后所述方法还包括:
所述CPU对所述携带所述上送CPU标志的报文包括的关键字进行存储;
所述CPU将存储地址发送给所述FPGA。
在本发明实施例中,报文处理设备为基于CPU+FPGA异构***的设备,其中,CPU用于对FPGA的功能等进行控制和管理,而FPGA用于进行报文的具体处理和转发,通过CPU和FPGA的协同工作,实现了对通用网络报文的处理,能够满足网络报文处理算法验证、网络协议卸载实现等应用场景的要求,并且本发明实施例已经搭建了一种用于报文处理的CPU+FPGA异构***,为后续的开发提供了框架基础,节省了后续开发的时间。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的报文处理设备的一种结构示意图;
图2为本发明实施例提供的包括一个CPU和一个FPGA的报文处理设备的一种结构示意图;
图3为本发明实施例提供的用于处理二层报文的报文处理设备的一种结构示意图;
图4为本发明实施例提供的报文处理方法的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
下面介绍本发明实施例的技术背景。
目前,由于FPGA的极强的可编程性,且在时延、吞吐率等方面也有很强的优势,基于FPGA架构的网络设备逐渐开始被采用。但是,目前对于FPGA架构的网络设备,并没有一种通用的开发模型,或者较为固定的网络报文处理方法,所以几乎每次开发都是重新设计,并且模块接口各异,可重用性低,只有当开发人员对处理框架、报文处理逻辑较为熟悉时才能完成设计,而对于仅需要验证某个算法、协议甚至是某个单元处理逻辑的开发人员而言,搭建完整的网络报文处理框架需要消耗大量的时间,开发效率低。
鉴于此,本发明实施例提供一种报文处理设备,该设备为基于CPU+FPGA异构***的设备,其中,CPU用于对FPGA的功能等进行控制和管理,而FPGA用于进行报文的具体处理和转发,通过CPU和FPGA的协同工作,实现了对通用网络报文的处理,能够满足网络报文处理算法验证、网络协议卸载实现等应用场景的要求,并且本发明实施例已经搭建了一种用于报文处理的CPU+FPGA异构***,为后续的开发提供了框架基础,节省了后续开发的时间。
下面结合附图介绍本发明实施例提供的技术方案。
请参见图1,本发明一实施例提供一种报文处理设备10,该设备包括CPU和至少一个FPGA,CPU通过外部设备互连(Peripheral Component Interconnect express,PCIe)总线与所述FPGA相连。其中,由于每个FPGA中进行报文处理的过程都是相同的,因此下面将以其中一个FPGA为例进行说明,并且其中一个FPGA可以是上述至少一个FPGA中的任意一个,下面直接将其中一个FPGA简称为FPGA。
在本发明实施例中,FPGA可以用于承载数据面的转发功能,即用于对报文进行处理并转发。具体的,FPGA可以接收其他设备或者CPU发送的待处理报文,并提取待处理报文的报文头部字段,以及对报文头部字段进行解析,根据报文头部字段进行查表,并根据查表结果对报文进行处理,进而将处理后的报文发送给相应的设备。
在本发明实施例中,CPU可以用于承载控制面和管理面的功能,即用于为FPGA配置表项,以及对FPGA的功能的开启和关闭进行管理,以及对FPGA的工作时的参数进行设置等。其中,表项为FPGA根据报文包括的关键字进行查表时的表项,例如可以为媒体访问控制(Media Access Control,MAC)地址表项、地址解析协议(Address Resolution Protocol,ARP)表项和互联网协议地址(Internet Protocol Address,IP)地址表项等,当然,还可以包括其他可能的表项,本发明实施例对此不做限制。
请参见图2,为本发明实施例提供的FPGA和CPU的一种结构示意图。其中,FPGA可以包括多个功能单元。下面将针对FPGA包括的功能单元进行详细的描述,同时,在下面的描述中,还会涉及到CPU包括的各功能单元。
报文接收(Receiver,RX)单元,报文接收RX单元可以用于接收待处理报文。具体的,当待处理报文到达报文处理设备时,通常是通过该报文处理设备上的物理以太网口接收待处理报文,因此报文接收RX单元则可以从该物理以太网口接收待处理报文。另外,CPU也可以作为一个接收待处理报文的接口,因此,在CPU接收到待处理报文之后,报文接收RX单元也可以接收CPU转发过来的待处理报文。
报文包拆分(Decap)单元,报文包拆分Decap单元可以用于在报文接收RX单元接收到待处理报文之后,报文接收RX单元发送的待处理报文。因为在一个报文中,报文的头部字段已经包含了用于报文转发处理的所有信息,那么只需要对报文头部字段进行处理即可。因此,在报文包拆分Decap单元接收待处理报文之后,可以截取该待处理报文的报文头部字段,将报文头部字段作为报文处理的对象,而待处理报文中除了报文头部字段之外的其他字段不需要进行处理,因此可以存储在缓存中。因此,FPGA还可以包括报文缓存(PacketBuffer)单元,用于存储上述待处理报文中除了报文头部字段之外的其他字段。通常来讲,一个报文的前128B包括了用于报文转发处理的所有信息,因此这里报文包拆分Decap单元可以将待处理报文中的前128B作为报文头部字段,而待处理报文中128B之后的其他字段则存储到报文缓存PacketBuffer单元中。
报文解析(Parser)单元,可以用于根据报文头部字段确定待处理报文的类型。具体的,当待处理报文为协议报文时,则在报文头部字段中添加上送CPU标志,再将修改后的报文头部字段送往关键字提取(Fetch)单元进行处理,上送CPU标志表明需要将该待处理报文发送给CPU;当待处理报文不是协议报文时,则将报文头部字段直接送往关键字提取Fetch单元进行处理。另外,报文解析Parser单元还可以记录不同报文类型的数量。
关键字提取Fetch单元,可以用于接收报文解析Parser单元发送的修改后的报文头部字段或者报文头部字段,并提取其中包括的关键字,并将提取的关键字送入查表引擎单元。其中,关键字用于查表,关键字例如可以是报文中携带的MAC地址、源MAC地址、目的IP地址、源IP地址或者虚拟局域网(Virtual Local Area Network,VLAN)的标识(Identity,ID)等。
查表引擎单元,用于根据关键字提取Fetch单元提取的关键字和为该查表引擎单元配置的表项进行查表,并根据所述查表结果对所述报文头部字段进行修改。
具体的,查表引擎单元还可以包括多个查表引擎,且每一个查表引擎还可以包括多个子单元。其中,多个查表引擎可以依次相连,且每个查表引擎所查表的内容可以是不同。例如查表引擎单元包括两个查表引擎,其中一个查表引擎用于通过二层MAC地址进行查表,而另一个查表引擎可以用于通过三层IP地址进行查表。虽然查表引擎查表的内容可以不同,但是每一个查表引擎的结构可以是类似的,因此下面以一个查表引擎的结构为例进行描述。
具体的,查表引擎可以包括:
匹配(Match)子单元,用于将关键字提取Fetch单元提取的关键字根据查表引擎包括的表项(Table)子单元能够识别的格式进行格式化。其中,关键字提取Fetch单元提取的关键字仅仅是将关键字从报文头部字段中提取出来,但是可能并不是表项Table子单元能够识别的格式,因此匹配Match子单元则需要将关键字进行组合,然后再将组合后的关键字发送给表项Table子单元。例如,在进行MAC地址表项查找时,表项Table子单元所能识别的关键字的格式为按照VLAN ID在前,目的MAC地址在后的顺序进行组合,那么关键字提取Fetch单元将VLAN ID和目的MAC地址分别提取出来后,则匹配Match子单元需要按照VLANID在前,目的MAC地址在后的格式进行组合,再将组合后的关键字发送给表项Table子单元。
表项Table子单元,用于根据格式化后的关键字进行查表,得到查表结果。其中,表项Table子单元中可以封装多种查表算法,并且表项Table子单元还可以访问存储在内存中的表项,则表项Table子单元可以将格式化后的关键字与表项通过对应的查表算法进行查表。具体的,表项Table子单元中封装的查表算法可以包括直接索引算法、哈希(Hash)算法、多哈希算法、Hi-Cuts算法和最长前缀匹配(Long Prefix Matching,LPM)算法等。当然,还可以包括其他可能的算法,本发明实施例对此不做限制。Table子单元所能访问的表项是通过CPU进行配置的,这在后续会进行详细说明,在此不再赘述。这里所说的内存,可以是静态随机存储器(Static random access memory,SRAM);也可以是双倍速率同步动态随机存储器(Double Data Rate,DDR),当然,也可以是其他可能的存储器,本发明实施例对此不做限制。
修改(Action)子单元,用于根据查表结果对报文头部字段进行修改,再将修改后的报文头部字段发送给后续的查表引擎或者后续的功能单元。另外,报文头部字段中也可以携带查找结果。例如,当通过目的MAC地址和源MAC地址进行查表时,若是源MAC地址查表未命中时,则Action子单元可以在报文头部字段中添加上送CPU标志,以能够将该报文发送给CPU进行报文学习;若是目的MAC地址命中,则在报文头部字段中添加转发(Forward,FW)标志,并将查表结果中的报文转发出口添加在报文控制字段中,但若是目的MAC地址未命中,则直接在报文头部字段添加丢弃(Drop)标志。
本发明实施例中,查表引擎还可以包括表项管理(TableMng)子单元,表项管理TableMng子单元用于配置与该表项管理TableMng子单元处于同一查表引擎的表项Table子单元所能访问的表项。
在查表引擎单元输出修改后的报文头部字段之后,修改后的报文头部字段会输入至报文封装(Encap)单元。其中,报文封装Encap单元用于根据修改后的报文头部字段确定是否需要将所述待处理报文进行封装。具体的,若是修改后的报文头部字段中未携带Drop标志,则报文封装Encap单元将存储在报文缓存PackeBuffer单元中的剩余字段取出,并将该剩余字段与修改后的报文头部字段进行封装,并将封装后的报文发送给报文发送(Transmitter,TX)单元;若是修改后的报文头部字段中携带Drop标志,则将该修改后的报文头部字段直接丢弃,且删除存储在报文缓存PackeBuffer单元中的剩余字段。
报文发送(TX)单元,用于在接收到封装后的报文之后,根据封装后的报文中携带的标志,将该封装后的报文发送给相应的设备。具体的,若是封装后的报文中携带上送CPU标志,则将该封装后的报文发送给CPU;若是该封装后的报文中携带FW标志,则按照封装后的报文中携带的报文出口将该封装后的报文转发出去。
本发明实施例中,FPGA中除了用于对报文处理的功能单元,还包括一些特殊的功能单元,相应的,在CPU中也包括相应的功能单元,用于完成PFGA与CPU的交互,以协助完成报文处理流程。
其中,CPU中可以包括报文收发单元,相应的,FPGA中还可以包括内存访问(DirectMemory Access,DMA)单元,该直接内存访问单元可以与上述的多个功能单元相连,例如可以与报文发送TX单元和报文接收RX单元相连。具体的,报文收发单元可以在CPU接收新的待处理报文之后,将待处理报文存储在内存中,再将该待处理报文的存储地址发送给FPGA中的直接内存访问单元,直接内存访问单元则可以接收该存储地址,并根据该存储地址读取内存中存储的待处理报文,再将待处理报文发送给FPGA中的报文接收RX单元,以进行后续的报文处理。
另外,在报文发送TX单元确定封装后的报文中携带上送CPU标志时,还会将该封装后的报文发送给直接内存访问单元,直接内存访问单元再将封装后的报文存储于内存中,并将存储地址发送给CPU中的报文收发单元,报文收发单元则可以根据携带上送CPU标志的报文的存储地址获取携带上送CPU标志的报文。
当CPU中的报文收发单元接收到封装后的报文之后,还可以确定该封装后的报文中携带上送CPU标志的原因,例如原因可以是该报文为协议报文或者查表未命中的报文。其中,协议报文用于进行协议的传递,因此需要发送到CPU进行处理;查表未命中的报文需要转发到CPU中的报文源MAC地址学习单元进行报文的学习。例如在查表时若是源MAC地址未命中,则报文源MAC地址学习单元在则会对该源MAC地址进行学习,并将学习生成的表项存储于内存中,同时还需要将新生成的表项的信息发送给FPGA,以使得FPGA在下次查表时能够成功命中。
本发明实施例中,CPU中还包括主管理(Host Main)单元,用于根据报文源MAC地址学习单元的学习结果生成表项配置信息。例如,在报文源MAC地址学习单元学习生成新的表项之后,需要将新生成的表项的相关信息通知给FPGA,那么此时则需要通过主管理HostMain单元生成表项配置信息,在表项配置信息中携带新生成的表项的存储地址。
为了将表项配置信息发送给FPGA,在CPU中还可以包括第一表项配置(TableConfig)单元,第一表项配置单元可以用于将上述表项配置信息发送给FPGA。第一表项配置单元除了将学习的新增的表项的表项配置信息发送给FPGA,还可以在报文处理设备初始化的时候,将报文转发相关的表项的表项配置信息发送给FPGA;另外,还可以向FPGA发送用于删除部分表项的表项配置信息。
相对应的,FPGA中还可以包括第二表项配置单元,第二表项配置单元可以与每个查表引擎中的表项管理TableMng子单元相连。其中,第二表项配置单元可以接收第一表项配置单元发送给的表项配置信息,该表项配置信息中可以携带用于指示新生成的表项的类型的类型信息,那么第二表项配置单元可以根据该类型信息将该表项配置信息发送给相应的表项管理TableMng子单元。另外,在表项较大时,第二表项配置单元还可以负责表项的搬运,例如从CPU的DMA缓存中批量搬运表项。
本发明实施例中,CPU还可以对FPGA的功能和参数进行控制。具体的,CPU中的主管理Host Main单元还可以用于生成控制信号(Control Signal),该控制信号则用于对FPGA的功能单元的动态配置、实时管理、寄存器读写等进行控制。具体的,为了FPGA在收到该控制信号之后,能够正确的控制该FPGA中的具体的功能单元的所能实现的功能进行控制和/或参数设置,因此该控制信号可以携带FPGA包括的功能单元的ID,这样,在FPGA收到控制信号后,则可以更加准确的进行控制。其中,FPGA中的不同的功能单元的ID不同。
为了将控制信号发送给FPGA,在CPU中还可以包括第一控制单元,第一控制单元可以用于将控制信号发送给FPGA。
当然,主管理Host Main单元处理可以生成控制信号和表项配置信息之外,还可以生成其他的信息,例如还可以是生成调度FPGA中的一个功能单元执行相应的功能的调度信息等,本发明实施例对此不做限制。相应的,其他信息也可以通过第一控制单元转发给FPGA。
为了接收CPU发送的控制信号,FPGA中还可以包括第二控制单元,第二控制单元可以用于接收控制信号,并根据控制信号中携带的ID将该控制信号转发给与该ID对应的功能单元,从而使得相应的功能单元能够执行该控制信号指示的动作。例如,控制信号可以是用于设置报文接收RX单元的接收速率,则报文接收RX单元接收到该控制信号之后,则会按照该控制信号指示的接收速率进行待处理报文的接收;或者,控制信号还可以是用于控制表项Table子单元的报文学习功能的开启或者关闭,其中,CPU可以通过控制信号开启表项Table子单元的报文学习功能,这样,FPGA则可以直接对查表未命中的报文进行学习,而无需在发送给CPU;相应的,CPU也可以通过控制信号关闭表项Table子单元的报文学习功能。
本发明实施例中,CPU和FPGA之间的交互可以通过FPGA的生产厂商提供的开放运算语言(Open Computing Language,OpenCL)***中的主通道(Host Channel)来实现。例如CPU中的第一控制单元想要向FPGA中的第二控制单元发送控制信号时,则可以通过第一控制单元调用Host Channel进行发送。
另外,CPU中还可以预留一些可配置的功能单元,用于实现需要在CPU中其他功能单元不具备的一些功能,这些单元可以在实际运用过程中在进行配置。例如控制报文处理单元,用于对控制报文进行处理。
本发明实施例中,在FPGA中,可以包括以下数据传输通道:
(1)报文传输通道,用于传输报文;
(2)报文头部传输(pkt)通道,用于传输报文头部字段;
(3)报文头部控制字段传输(packet head control,phc)通道,用于传输报文头部控制字段;报文头部控制字段中携带报文转发控制信息,例如MAC层的头部偏移值,或者IP头部的偏移值,或者用于指示报文是否丢弃的标志的信息,或者用于指示报文是否镜像的标志的信息。
(4)消息传输(message,msg)通道,用于传输所述表项配置信息等信息;
(5)req/ack信号通道,用于传输req/ack信号;req/ack信号为两个功能单元之间的握手信号,用于两个功能单元之间按照这两个功能单元约定的协议方式进行通信。
上述数据传输通道都可以通过OpenCL***提供的Channel来实现。其中,报文传输通道和pkt通道的位宽可取128B,即在进行报文传输或者报文头部传输时的传输每节拍可传输128B;phc通道的位宽可取64B或者32B;msg通道的位宽可取32B或者16B;req/ack信号通道的位宽可取8B或者4B。当然,FPGA中还可以包括其他可能的数据传输通道,本发明实施例对此不做限制。
其中,在所述FPGA中的其中两个功能单元需要进行数据传输时,可以调用与所要传输的数据的类型对应的通道进行传输。具体的,上述数据传输通道还可以具备数据缓存能力,在进行数据传输时,如果两端的功能单元的节拍不同时,能够起到隔离作用。例如,当报文接收RX单元接收的速率高于报文包拆分Decap单元对报文的处理能力时,那么报文接收RX单元传递给报文包拆分Decap单元的报文则无法及时被处理,那么此时则需要报文接收RX单元和报文包拆分Decap单元之间的数据传输通道将报文包拆分Decap单元未及时处理的报文进行缓存。
在图2中示出了功能单元之间可能调用的数据传输通道,例如报文接收RX单元和报文包拆分Decap单元之间可能传输报文头部字段、报文或者报文头部控制字段或者其他信息,因此报文接收RX单元可以调用pkt通道、phc通道或者msg通道向报文包拆分Decap单元发送数据。其中,第二表项配置单元在转发表项配置信息时,当表项较小时,第二表项配置单元可以通过调用req/ack信号通道进行配置;当表项较大时,则可以通过第二表项配置单元直接调用msg通道进行配置。其余的功能单元的调用方式类似,在此则不再一一赘述。当然,图2中所示的通道的调用仅用于示意,因此还有可能存在其他可能的调用情况,本发明实施例对此不做限制。
请参见图3,为本发明实施例提供的用于以太网二层报文处理的报文处理设备的结构示意图。下面即以图3所示的报文处理设备的报文处理流程予以描述。
本发明实施例中,CPU可以通过第一控制单元向FPGA中的第二控制单元发送报文接收速率(Packet Rate Limit)信号,并在该信号中携带FPGA中的报文接收RX单元的ID,在第二控制单元接收到Packet Rate Limit信号之后则会将该信号转发给报文接收RX单元,报文接收RX单元也就会按照Packet Rate Limit信号指示的报文接收速率来接收报文。
当RX单元接收了待处理报文之后,则会将报文发送给报文包拆分Decap单元。报文包拆分Decap单元截取待处理报文中的前128B字段作为待处理报文的报文头部字段,再将报文头部字段发送给报文解析Parser单元,并将除这128B之外的剩余字段存储在报文缓冲PacketBuffer单元中。
报文解析Parser单元根据报文头部字段判断报文的类型,如果判断结果表明该待处理报文为协议报文,则在报文头部字段中添加上送CPU标识,再将修改后的报文头部字段发送给MAC地址提取Fetch单元;如果判断结果表明该待处理报文不是协议报文,则直接将报文头部字段发送给MAC Fetch单元。其中,MAC地址提取Fetch单元是二层报文处理中的特定单元。报文解析Parser单元还可以统计自己处理的报文的数量,以及不同类型的报文的数量,并通过第二控制单元发送给CPU。
MAC地址提取Fetch单元提取出报文头部字段中目的MAC地址和源MAC地址,送入地址转发表(Forwarding DataBase,FDB)查表引擎。
FDB查表引擎中的匹配Match子单元向哈希表项Hash Table子单元发送目的MAC地址查询请求和源MAC地址查询请求。哈希表项Hash Table子单元表明通过哈希算法进行查表。哈希表项Hash Table子单元根据目的MAC地址和源MAC地址计算哈希值,再根据哈希值进行查表,并将查表结果发送给修改Action子单元。当源MAC地址未命中时,若是CPU通过第一控制单元为哈希表项Hash Table子单元配置了源MAC地址自动学习(Auto Learn)功能,则哈希表项Hash Table子单元会自动保存源MAC地址,若是关闭了Auto Learn功能,则修改Action子单元在报文头部字段中添加上送CPU标志。当查表结果表明目的MAC地址未命中,Action子单元则为报文头部字段添加Drop标志,当查表结果表明目的MAC地址命中时,修改Action子单元则将报文出口存入报文控制字段,并在报文头部字段添加FW标志。
报文封装Encap单元在收到修改Action子单元发送的修改后的报文头部字段之后,若是该修改后的报文头部字段中包括Drop标志,则将该报文头部字段直接丢弃,且清空该报文头部字段对应的存储在报文缓冲PacketBuffer单元的剩余字段。若是该修改后的报文头部字段中未携带Drop标志,则从报文缓冲PacketBuffer单元中的剩余字段,再将该剩余字段和报文头部字段进行封装,并将封装后的报文发送给报文发送TX单元。
若是封装后的报文中携带上送CPU标志,则报文发送TX单元将封装后的报文通过直接内存访问单元发送给CPU;若是封装后的报文中携带FW标志,则报文发送TX单元将封装后的报文通过封装后的报文中携带的报文出口发送给对应的设备。
本发明实施例中,当FPGA将源MAC地址未命中的报文发送给CPU之后,CPU中的报文收发单元接收该报文,并将该报文发送给主管理单元,主管理单元将该报文转发给报文源MAC地址学习单元进行学习,报文源MAC地址学习单元学习生成的表项发送给主管理单元,主管理单元将表项存储到内存中,并生成表项配置信息,在通过第一表项配置单元将表项配置信息发送给FPGA中的第二表项配置单元。
第二表项配置单元将表项配置信息转发给哈希表项管理Hash TableMng子单元,进而哈希表项管理Hash TableMng子单元能够根据该表项配置信息为哈希表项管理HashTable子单元配置表项。
综上所述,报文处理设备为基于CPU+FPGA异构***的设备,其中,CPU用于对FPGA的功能等进行控制和管理,而FPGA用于进行报文的具体处理和转发,通过CPU和FPGA的协同工作,实现了对通用网络报文的处理,能够满足网络报文处理算法验证、网络协议卸载实现等应用场景的要求,并且本发明实施例已经搭建了一种用于报文处理的CPU+FPGA异构***,为后续的开发提供了框架基础,节省了后续开发的时间。
请参见图4,基于同一发明构思,本发明一实施例提供一种报文处理方法,该方法应用于报文处理设备中,报文处理设备包括CPU和至少一个FPGA,该方法包括:
步骤401:至少一个FPGA接收CPU为自身配置的表项的表项配置信息;表项配置信息中携带表项的存储地址;
步骤402:至少一个FPGA接收表项配置信息和待处理报文,截取待处理报文的报文头部字段,并从报文头部字段中提取用于查表的关键字,根据关键字以及存储地址存储的表项进行查表,根据查表结果对待处理报文进行处理,将处理后的报文发送给与处理后的报文对应的设备;其中,关键字与存储地址存储的表项相对应。
本发明一实施例还提供一种报文处理***,该报文处理***包括CPU和至少一个FPGA;其中,至少一个FPGA中的任意一个FPGA例如可以是图2所示的实施例中的FPGA,CPU例如可以是图2所示的实施例中的CPU。具体的,FPGA能够用于进行报文的处理,CPU能够对FPGA包括的各个功能单元进行调度,并对各个功能单元的参数进行设置和管理,以对FPGA进行报文处理的过程进行控制。
本发明实施例中,CPU中的各个功能单元可以是基于Thread,那么CPU中的功能单元的实现可以是通过C++编写的Thread代码;FPGA中的各个功能单元可以是基于Kernel的,那么FPGA中的各个功能单元的实现可以通过OpenCL语言进行编写的Kernel代码。在两侧代码都编写完成后,Kernel代码可以通过OpenCL编译器进行编译,Thread代码可以通过GCC编译器进行编译,再将编译后的Kernel代码烧录到FPGA中,并通过CPU加载Thread代码,从而实现以上的功能。
在本发明实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性或其它的形式。
在本发明实施例中的各功能单元可以集成在一个处理单元中,或者各个单元也可以均是独立的物理模块。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备,例如可以是个人计算机,服务器,或者网络设备等,或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(Universal Serial Bus flash drive)、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明实施例的方法,不应理解为对本发明实施例的限制。本技术领域的技术人员可轻易想到的变化或替换,都应涵盖在本发明实施例的保护范围之内。
Claims (10)
1.一种报文处理设备,其特征在于,包括中央处理器CPU和至少一个现场可编程门阵列FPGA;
所述CPU,用于为所述至少一个FPGA配置表项,并将配置所述表项的表项配置信息发送给所述至少一个FPGA;所述表项配置信息中携带所述表项的存储地址;
所述至少一个FPGA,用于接收所述表项配置信息和待处理报文,截取所述待处理报文的报文头部字段,并从所述报文头部字段中提取用于查表的关键字,根据所述关键字以及所述存储地址存储的表项进行查表,根据查表结果对所述待处理报文进行处理,将处理后的报文发送给与所述处理后的报文对应的设备;其中,所述关键字与所述存储地址存储的表项相对应。
2.如权利要求1所述的设备,其特征在于,所述至少一个FPGA中任意一个FPGA包括多个功能单元,所述多个功能单元具体包括:
报文接收RX单元,用于接收待处理报文;
报文包拆分Decap单元,用于截取所述待处理报文的报文头部字段,并将所述待处理报文中除所述报文头部字段之外的其他字段发送至所述多个功能单元中的报文缓存PacketBuffer单元进行存储;
报文解析Parser单元,用于根据所述报文头部字段确定所述待处理报文的类型,在确定结果表明所述待处理报文为协议报文时,则在所述报文头部字段中添加上送CPU标志;其中,所述上送CPU标志表明需要将所述待处理报文发送给所述CPU;
关键字提取Fetch单元,用于提取所述报文头部字段中的关键字;
查表引擎单元,用于根据所述关键字以及所述存储地址存储的表项进行查表,并根据所述查表结果对所述报文头部字段进行修改;
报文封装Encap单元,用于根据修改后的报文头部字段确定是否需要将所述待处理报文进行封装;若确定需要将所述待处理报文进行封装,则将所述修改后的报文头部字段和所述PacketBuffer单元中存储的所述待处理报文中除所述报文头部字段之外的其他字段进行封装;
报文发送TX单元,用于确定封装后的报文中是否包括所述上送CPU标志;若确定结果为是,则将所述封装后的报文上送所述CPU。
3.如权利要求2所述的设备,其特征在于,所述查表引擎单元包括至少一个查表引擎,且每一个查表引擎包括:
匹配Match子单元,用于将所述关键字提取Fetch单元提取的关键字根据所述查表引擎包括的表项Table子单元能够识别的格式进行格式化;
所述表项Table子单元,用于根据格式化后的关键字以及所述存储地址存储的表项进行查表,并输出所述查表结果;其中,所述表项Table子单元中存储了用于查表的查表算法;
修改Action子单元,用于根据所述查表结果对所述报文头部字段进行修改。
4.如权利要求3所述的设备,其特征在于,所述每一个查表引擎还包括:
表项管理TableMng子单元,用于根据所述表项配置信息配置同一查询引擎中的表项Table子单元所能查询的表项。
5.如权利要求4所述的设备,其特征在于,所述CPU包括主管理Host Main单元和第一控制单元,所述多个功能单元还包括第二控制单元,
所述主管理Host Main单元,用于生成控制信号;所述控制信号中携带所述多个功能单元包括的其中一个功能单元的ID;其中,所述至少一个FPGA中任意一个FPGA中的不同功能单元的ID不同;
所述第一控制单元,用于将所述控制信号发送给所述第二控制单元;
所述第二控制单元,用于接收所述控制信号,并将所述控制信号转发给与所述ID对应的功能单元;其中,所述至少一个FPGA能够基于所述控制信号控制与所述ID对应的功能单元所实现功能的开启和/或参数设置。
6.如权利要求3所述的设备,其特征在于,所述CPU还包括报文收发单元;所述多个功能单元还包括直接内存访问单元,所述直接内存访问单元与所述报文接收RX单元和所述报文发送TX单元均相连;
所述报文收发单元,用于将待处理报文存储于内存中,并向所述直接内存访问单元发送所述待处理报文的存储地址;或者,接收所述直接内存访问单元发送的所述携带上送CPU标志的报文的存储地址,并根据所述携带上送CPU标志的报文的存储地址获取所述携带上送CPU标志的报文;
所述直接内存访问单元,用于接收所述待处理报文的存储地址,根据所述待处理报文的存储地址读取所述待处理报文,并将所读取的待处理报文发送给所述报文接收RX单元;或者,接收所述报文发送TX单元发送的所述携带上送CPU标志的报文,将所述携带上送CPU标志的报文存储于内存中,并将所述携带上送CPU标志的报文的存储地址发送给所述报文收发单元。
7.如权利要求5所述的设备,其特征在于,所述CPU还包括第一表项配置单元;所述多个功能单元还包括第二表项配置单元,所述第二表项配置单元与所述每个查表引擎中的所述表项管理TableMng子单元相连;
所述主管理Host Main单元,还用于生成表项配置信息;
所述第一表项配置单元,用于将所述表项配置信息发送给所述第二表项配置单元;
所述第二表项配置单元,用于接收所述表项配置信息,并根据所述表项配置信息配置的表项的类型将所述表项配置信息转发给与所述类型对应的表项管理TableMng子单元。
8.如权利要求6所述的设备,其特征在于,所述至少一个FPGA中任意一个FPGA还包括:
报文传输通道,用于传输报文;
报文头部传输通道,用于传输报文头部字段;
报文头部控制字段传输通道,用于传输报文头部控制字段;
表项配置信息传输通道,用于传输所述表项配置信息;
req/ack信号通道,用于传输req/ack信号;
其中,在所述多个功能单元中的任意一个功能单元向其他功能单元进行数据传输时,所述任意一个功能单元能够调用与所要传输的数据的类型对应的通道进行传输。
9.一种报文处理方法,其特征在于,所述方法应用于报文处理设备中,所述报文处理设备包括CPU和至少一个FPGA;包括:
所述至少一个FPGA接收CPU为自身配置的表项的表项配置信息;所述表项配置信息中携带所述表项的存储地址;
所述至少一个FPGA接收所述表项配置信息和待处理报文,截取所述待处理报文的报文头部字段,并从所述报文头部字段中提取用于查表的关键字,根据所述关键字以及所述存储地址存储的表项进行查表,根据查表结果对所述待处理报文进行处理,将处理后的报文发送给与所述处理后的报文对应的设备;其中,所述关键字与所述存储地址存储的表项相对应。
10.如权利要求9所述的方法,其特征在于,所述至少一个FPGA根据所述关键字以及所述存储地址存储的表项进行查表,根据查表结果对所述待处理报文进行处理,包括:
所述至少一个FPGA将提取的关键字根据所述至少一个FPGA能够识别的格式进行格式化;
所述至少一个FPGA根据格式化后的关键字以及所述存储地址存储的表项进行查表,并输出所述查表结果;其中,所述至少一个FPGA存储了用于查表的查表算法;
所述至少一个FPGA根据所述查表结果对所述报文头部字段进行修改。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711288346.6A CN108055202B (zh) | 2017-12-07 | 2017-12-07 | 一种报文处理设备和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711288346.6A CN108055202B (zh) | 2017-12-07 | 2017-12-07 | 一种报文处理设备和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108055202A true CN108055202A (zh) | 2018-05-18 |
CN108055202B CN108055202B (zh) | 2020-11-20 |
Family
ID=62122382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711288346.6A Active CN108055202B (zh) | 2017-12-07 | 2017-12-07 | 一种报文处理设备和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108055202B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108848202A (zh) * | 2018-06-21 | 2018-11-20 | Oppo(重庆)智能科技有限公司 | 电子装置、数据传输方法及相关产品 |
CN109032982A (zh) * | 2018-08-02 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种数据处理方法、装置、设备、***、fpga板卡及其组合 |
CN109657463A (zh) * | 2018-12-18 | 2019-04-19 | 北京东土军悦科技有限公司 | 一种报文洪泛攻击的防御方法及装置 |
CN110061992A (zh) * | 2019-04-22 | 2019-07-26 | 杭州迪普科技股份有限公司 | 一种动态配置fpga的方法及网络安全设备 |
CN110113265A (zh) * | 2019-05-16 | 2019-08-09 | 济南浪潮高新科技投资发展有限公司 | 基于fpga的多i2c接口互联方法及模块 |
CN110413464A (zh) * | 2019-07-12 | 2019-11-05 | 杭州迪普科技股份有限公司 | 一种配置表项测试方法、*** |
CN110535847A (zh) * | 2019-08-23 | 2019-12-03 | 北京无极芯动科技有限公司 | 网络处理器及网络数据的入栈处理方法 |
CN110611625A (zh) * | 2018-11-27 | 2019-12-24 | 新华三技术有限公司 | 网络设备及虚拟装置 |
CN111031044A (zh) * | 2019-12-13 | 2020-04-17 | 浪潮(北京)电子信息产业有限公司 | 一种报文解析硬件装置及报文解析方法 |
CN111221759A (zh) * | 2020-01-17 | 2020-06-02 | 深圳市风云实业有限公司 | 一种基于dma的数据处理***及方法 |
CN111917735A (zh) * | 2020-07-12 | 2020-11-10 | 中信银行股份有限公司 | 通讯报文的生成与处理方法、装置及电子设备 |
CN112632340A (zh) * | 2020-12-28 | 2021-04-09 | 盛科网络(苏州)有限公司 | 查表方法及装置、存储介质以及电子设备 |
CN113114569A (zh) * | 2020-01-10 | 2021-07-13 | 北京京东尚科信息技术有限公司 | 数据流卸载的方法和装置 |
CN113542445A (zh) * | 2021-05-28 | 2021-10-22 | 新华三信息安全技术有限公司 | 一种地址转换方法、装置、设备及机器可读存储介质 |
CN114296815A (zh) * | 2021-12-15 | 2022-04-08 | 杭州迪普科技股份有限公司 | 一种配置表项下发方法及装置 |
CN114979236A (zh) * | 2022-05-12 | 2022-08-30 | 山石网科通信技术股份有限公司 | 数据传输方法、装置、存储介质以及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104348716A (zh) * | 2013-07-23 | 2015-02-11 | 杭州华三通信技术有限公司 | 一种报文处理方法及设备 |
US20150172422A1 (en) * | 2013-11-23 | 2015-06-18 | William A. FLANAGAN | Systems and methods of header compression in a software defined network |
CN105515995A (zh) * | 2015-12-01 | 2016-04-20 | 华为技术有限公司 | 报文处理方法、流表生成方法及装置 |
-
2017
- 2017-12-07 CN CN201711288346.6A patent/CN108055202B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104348716A (zh) * | 2013-07-23 | 2015-02-11 | 杭州华三通信技术有限公司 | 一种报文处理方法及设备 |
US20150172422A1 (en) * | 2013-11-23 | 2015-06-18 | William A. FLANAGAN | Systems and methods of header compression in a software defined network |
CN105515995A (zh) * | 2015-12-01 | 2016-04-20 | 华为技术有限公司 | 报文处理方法、流表生成方法及装置 |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108848202A (zh) * | 2018-06-21 | 2018-11-20 | Oppo(重庆)智能科技有限公司 | 电子装置、数据传输方法及相关产品 |
CN108848202B (zh) * | 2018-06-21 | 2021-05-04 | Oppo(重庆)智能科技有限公司 | 电子装置、数据传输方法及相关产品 |
CN109032982A (zh) * | 2018-08-02 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种数据处理方法、装置、设备、***、fpga板卡及其组合 |
US11765102B2 (en) | 2018-11-27 | 2023-09-19 | New H3C Technologies Co., Ltd. | Network device and conversion apparatus |
CN110611625A (zh) * | 2018-11-27 | 2019-12-24 | 新华三技术有限公司 | 网络设备及虚拟装置 |
CN110611625B (zh) * | 2018-11-27 | 2020-11-06 | 新华三技术有限公司 | 网络设备及应用于网络设备的逻辑装置 |
CN109657463A (zh) * | 2018-12-18 | 2019-04-19 | 北京东土军悦科技有限公司 | 一种报文洪泛攻击的防御方法及装置 |
CN109657463B (zh) * | 2018-12-18 | 2021-08-20 | 北京东土军悦科技有限公司 | 一种报文洪泛攻击的防御方法及装置 |
CN110061992A (zh) * | 2019-04-22 | 2019-07-26 | 杭州迪普科技股份有限公司 | 一种动态配置fpga的方法及网络安全设备 |
US11568092B2 (en) | 2019-04-22 | 2023-01-31 | Hangzhou Dptech Technologies Co., Ltd. | Method of dynamically configuring FPGA and network security device |
CN110061992B (zh) * | 2019-04-22 | 2021-12-24 | 杭州迪普科技股份有限公司 | 一种动态配置fpga的方法及网络安全设备 |
CN110113265A (zh) * | 2019-05-16 | 2019-08-09 | 济南浪潮高新科技投资发展有限公司 | 基于fpga的多i2c接口互联方法及模块 |
CN110413464A (zh) * | 2019-07-12 | 2019-11-05 | 杭州迪普科技股份有限公司 | 一种配置表项测试方法、*** |
CN110413464B (zh) * | 2019-07-12 | 2023-10-27 | 杭州迪普科技股份有限公司 | 一种配置表项测试方法、*** |
CN110535847B (zh) * | 2019-08-23 | 2021-08-31 | 极芯通讯技术(南京)有限公司 | 网络处理器及网络数据的入栈处理方法 |
CN110535847A (zh) * | 2019-08-23 | 2019-12-03 | 北京无极芯动科技有限公司 | 网络处理器及网络数据的入栈处理方法 |
CN111031044A (zh) * | 2019-12-13 | 2020-04-17 | 浪潮(北京)电子信息产业有限公司 | 一种报文解析硬件装置及报文解析方法 |
CN113114569A (zh) * | 2020-01-10 | 2021-07-13 | 北京京东尚科信息技术有限公司 | 数据流卸载的方法和装置 |
CN111221759B (zh) * | 2020-01-17 | 2021-05-28 | 深圳市风云实业有限公司 | 一种基于dma的数据处理***及方法 |
CN111221759A (zh) * | 2020-01-17 | 2020-06-02 | 深圳市风云实业有限公司 | 一种基于dma的数据处理***及方法 |
CN111917735A (zh) * | 2020-07-12 | 2020-11-10 | 中信银行股份有限公司 | 通讯报文的生成与处理方法、装置及电子设备 |
CN112632340A (zh) * | 2020-12-28 | 2021-04-09 | 盛科网络(苏州)有限公司 | 查表方法及装置、存储介质以及电子设备 |
CN112632340B (zh) * | 2020-12-28 | 2024-04-16 | 苏州盛科通信股份有限公司 | 查表方法及装置、存储介质以及电子设备 |
CN113542445A (zh) * | 2021-05-28 | 2021-10-22 | 新华三信息安全技术有限公司 | 一种地址转换方法、装置、设备及机器可读存储介质 |
CN114296815A (zh) * | 2021-12-15 | 2022-04-08 | 杭州迪普科技股份有限公司 | 一种配置表项下发方法及装置 |
CN114979236A (zh) * | 2022-05-12 | 2022-08-30 | 山石网科通信技术股份有限公司 | 数据传输方法、装置、存储介质以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN108055202B (zh) | 2020-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108055202A (zh) | 一种报文处理设备和方法 | |
US10122629B2 (en) | Systems and methods for externalizing network functions via packet trunking | |
KR102402176B1 (ko) | 소프트웨어-규정된 네트워크 엔진에서 패킷 수정 및 포워딩을 위해서 룩업들을 생성하고 결정들을 수행하기 위한 장치 및 방법 | |
WO2019128817A1 (zh) | 报文处理的方法和装置 | |
US9203750B2 (en) | Ethernet frame translation to internet protocol over infiniband | |
CN100358280C (zh) | 一种网络安全装置及其实现方法 | |
US20200007472A1 (en) | Service insertion in basic virtual network environment | |
CN104704778A (zh) | 用于虚拟和物理网络集成的方法和*** | |
US9160659B2 (en) | Paravirtualized IP over infiniband bridging | |
CN101278521A (zh) | 无状态双向代理 | |
Pontarelli et al. | Stateful openflow: Hardware proof of concept | |
CN110505244A (zh) | 远程隧道访问技术网关以及服务器 | |
CN107222496A (zh) | 基于现场层设备的报文的安全策略匹配方法和现场层设备 | |
CN106209637A (zh) | 从虚拟可扩展局域网至虚拟局域网的报文转发方法和设备 | |
Mühlbach et al. | Malcobox: Designing a 10 gb/s malware collection honeypot using reconfigurable technology | |
Pacífico et al. | Application layer packet classifier in hardware | |
CN106209554B (zh) | 跨虚拟可扩展局域网的报文转发方法和设备 | |
Steinert et al. | Hardware and software components towards the integration of network-attached accelerators into data centers | |
WO2023104054A1 (zh) | 网络处理模块、数据处理方法、网络节点和存储介质 | |
US20220394062A1 (en) | Aggregated networking subsystem station move control system | |
Mariño et al. | Loopback strategy for in-vehicle network processing in automotive gateway network on chip | |
CN106789706A (zh) | 一种基于tcam的网络分流*** | |
US11425036B1 (en) | Pipelined match-action circuitry | |
WO2023207278A1 (zh) | 一种报文处理方法及装置 | |
CN106656810B (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 |