CN112737914B - 报文处理方法、装置、网络设备及可读存储介质 - Google Patents
报文处理方法、装置、网络设备及可读存储介质 Download PDFInfo
- Publication number
- CN112737914B CN112737914B CN202011585512.0A CN202011585512A CN112737914B CN 112737914 B CN112737914 B CN 112737914B CN 202011585512 A CN202011585512 A CN 202011585512A CN 112737914 B CN112737914 B CN 112737914B
- Authority
- CN
- China
- Prior art keywords
- message
- fpga
- table entry
- cpu
- forwarding table
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- 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
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种报文处理方法、装置、网络设备及可读存储介质。方法包括:通过网络设备中的FPGA接收报文;通过FPGA根据流表信息判断报文是否命中,流表信息包括与五元组对应的转发表项;当报文命中时,根据目标转发表项封装报文,得到封装后的待转发报文,目标转发表项为流表信息中与报文命中的转发表项;根据目标转发表项,通过FPGA将待转发报文发送至网络设备的出接口。在本方案中,若报文命中,表示FPGA可以直接对该报文进行封装以及转发,如此,可以无需CPU参与,以降低对CPU的依赖,改善CPU因需要处理的报文过多而影响报文正常传输的问题。
Description
技术领域
本申请涉及数据通信领域,具体而言,涉及一种报文处理方法、装置、网络设备及可读存储介质。
背景技术
TCP(Transmission Control Protocol,传输控制协议)是一种可靠的,面向连接的,基于字节流的传输层通讯协议。目前,TCP报文建立连接的方法主要为:通过CPU(Central Processing Unit,中央处理器)完成报文连接的建立,连接的保持及拆除,CPU需要处理每一个报文,包括拆解报文和封装报文。连接建立的过程中,CPU需要分析每一个报文,维持连接的状态。当用户数量较多时,突发连接的建立会占用大量的CPU资源,由于报文的传输对CPU的依赖高,从而容易影响报文的正常传输,例如,因CPU负载高导致传输通道堵塞,无法传输报文。
发明内容
本申请实施例的目的在于提供一种报文处理方法、装置、网络设备及可读存储介质,能够改善报文传输时对CPU依赖高,影响报文正常传输的问题。
为了实现上述目的,本申请的实施例通过如下方式实现:
第一方面,本申请实施例提供一种报文处理方法,应用于网络设备,所述方法包括:
通过网络设备中的FPGA接收报文;
通过所述FPGA根据流表信息判断所述报文是否命中,所述流表信息包括与五元组对应的转发表项;
当所述报文命中时,根据目标转发表项封装所述报文,得到封装后的待转发报文,所述目标转发表项为所述流表信息中与所述报文命中的转发表项;
根据所述目标转发表项,通过所述FPGA将所述待转发报文发送至所述网络设备的出接口。
在上述的实施方式中,当网络设备需要对报文进行转发时,可以通过FPGA对报文进行分析处理,若报文命中,表示FPGA可以直接对该报文进行封装以及转发,如此,可以无需CPU参与,以降低对CPU的依赖,改善CPU因需要处理的报文过多而影响报文正常传输的问题。
结合第一方面,在一些可选的实施方式中,所述方法还包括:
当所述报文未命中,且所述报文为表征同一流的SYN包时,将所述报文发送至所述网络设备中的CPU,其中,所述同一流中的报文的五元组相同;
通过所述CPU根据所述报文,创建与所述报文的五元组对应的转发表项;
通过CPU将所述转发表项发送至所述FPGA,并将所述报文发送至所述出接口。
在上述的实施方式中,当报文未命中时,表示目前的FPGA未配置对该报文进行分析处理的配置,此时,通过CPU基于流的首个报文,生成转发表项,然后发送至FPGA,使得FPGA后续具有分析处理、转发该报文的能力,在后续发送报文时,可以降低CPU的运算量。
结合第一方面,在一些可选的实施方式中,在通过所述FPGA根据流表信息判断所述报文是否命中之前,所述方法还包括:
当所述报文为表征同一流的SYN包时,将所述报文发送至CPU;
通过所述CPU根据所述报文,创建与所述报文的五元组对应的转发表项;
通过CPU将所述转发表项发送至所述FPGA,并将所述报文发送至出接口。
在上述的实施方式中,通过提前对FPAG进行配置,使得FPGA后续具有分析处理、转发该报文的能力,在后续发送报文时,可以降低CPU的运算量。
结合第一方面,在一些可选的实施方式中,所述方法还包括:
通过所述FPGA统计所述FPGA发送的所述报文,得到统计表项消息;
每间隔预设时长,或者当所述统计表项消息中统计的所述报文的数量达到指定数量,或者当所述统计表项信息的字节达到预设字节时,将所述统计表项消息发送至所述网络设备中的CPU。
在上述的实施方式中,FPGA可以统计所转发的报文,然后将得到的统计表项信息发送至CPU,以便于CPU获取FPAG所转发的报文的信息,以对每条流的数据进行实时监控。
结合第一方面,在一些可选的实施方式中,所述方法还包括:
当所述统计表项消息中存在表征与所述报文对应的流失效的标志时,通过所述CPU控制与所述报文命中的所述目标转发表项失效,并关闭传输与所述报文的五元组相同的报文。
结合第一方面,在一些可选的实施方式中,所述统计表项消息包括:
表征流是否有效的标志、流的状态、流的编号、累计报文的数量、累计报文的字节中的至少一种。
结合第一方面,在一些可选的实施方式中,通过所述FPGA根据流表信息判断所述报文是否命中,包括:
判断所述报文是否为表征同一流的SYN包;
当所述报文不是所述SYN包,且所述流表信息中存在与所述报文的五元组匹配的转发表项时,确定所述报文命中。
结合第一方面,在一些可选的实施方式中,所述方法还包括:
通过所述FPGA根据筛选规则,对所述FPGA接收的报文进行筛选;
将筛选得到的异常报文丢弃或发送至所述网络设备中的CPU。
第二方面,本申请实施例还提供一种报文处理装置,应用于网络设备,所述装置包括:
接收单元,用于通过网络设备中的FPGA接收报文;
判断单元,用于通过所述FPGA根据流表信息判断所述报文是否命中,所述流表信息包括与五元组对应的转发表项;
封装单元,用于当所述报文命中时,根据目标转发表项封装所述报文,得到封装后的待转发报文,所述目标转发表项为所述流表信息中与所述报文命中的转发表项;
发送单元,用于根据所述目标转发表项,通过所述FPGA将所述待转发报文发送至所述网络设备的出接口。
第三方面,本申请实施例还提供一种网络设备,所述网络设备包括相互耦合的CPU、FPGA及存储器,所述存储器内存储计算机程序,当所述计算机程序被所述CPU及所述FPGA执行时,使得所述网络设备执行上述的方法。
第四方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行上述的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的网络设备的结构示意图。
图2为本申请实施例提供的报文处理方法的流程示意图。
图3为本申请实施例提供的统计表项消息的字段格式示意图。
图4为本申请实施例提供的报文处理装置的框图。
图标:10-网络设备;11-FPGA;12-CPU;13-存储模块;100-报文处理装置;110-接收单元;120-判断单元;130-封装单元;140-发送单元。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参照图1,本申请实施例提供一种网络设备10,可以用于对报文进行转发。报文可以是但不限于TCP报文、IP报文。
网络设备10可以包括FPGA11、CPU12及存储模块13。存储模块13内存储计算机程序,当计算机程序被FPGA11、CPU12执行时,使得网络设备10能够执行下述报文处理方法中的各步骤。
当然,网络设备10还可以包括其他模块。例如,网络设备10还可以包括通信模块,用于与其他设备建立通信连接,获取其他设备发送的报文数据,或将报文发送至其他设备。存储模块13内还可以固化有报文处理装置100。
FPGA11、CPU12、存储模块13以及报文处理装置100各个元件之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
在本实施例中,网络设备10可以通过入接口,接收其他设备发送的报文数据。入接口与FPGA11芯片连接。FPGA11芯片还与CPU12芯片连接。CPU12及FPGA11芯片均与网络设备10的出接口连接。入接口所接收的报文,可以通过FPGA11或CPU12传输至出接口,然后由出接口根据报文的目的地址,发送至相应的设备。
网络设备10可以是但不限于交换机、路由器等,可以用于转发报文的设备。
请参照图2,本申请实施例还提供一种报文处理方法,可以应用于上述的网络设备10,由网络设备10执行或实现方法的各步骤。方法可以包括以下步骤:
步骤S110,通过网络设备中的FPGA接收报文;
步骤S120,通过所述FPGA根据流表信息判断所述报文是否命中,所述流表信息包括与五元组对应的转发表项;
步骤S130,当所述报文命中时,根据目标转发表项封装所述报文,得到封装后的待转发报文,所述目标转发表项为所述流表信息中与所述报文命中的转发表项;
步骤S140,根据所述目标转发表项,通过所述FPGA将所述待转发报文发送至所述网络设备的出接口。
在上述的实施方式中,当网络设备需要对报文进行转发时,可以通过FPGA对报文进行分析处理,若报文命中,表示FPGA可以直接对该报文进行封装以及转发,如此,可以无需CPU参与,以降低对CPU的依赖,改善CPU因需要处理的报文过多而影响报文正常传输的问题。
下面将对方法的各步骤进行详细阐述,如下:
在步骤S110中,网络设备可以通过入接口接收其他设备发送的报文。报文可以是但不限于上述的TCP/IP报文。网络设备的入接口与FPGA连接,可以将接收的报文发送至FPGA进行分析处理。
在步骤S120中,FPGA预先存储有流表信息。流表信息包括一条或多条转发表项。每条转发表项与一类报文的五元组对应。不同五元组对应不同的转发表项。五元组包括源IP地址、源端口、目的IP地址、目的端口和传输层协议,为本领域技术人员熟知。
在FPGA获取到报文后,可以判断该报文是否命中流表信息中的转发表项。例如,步骤S120可以包括:当所述报文不是所述SYN包,且所述流表信息中存在与所述报文的五元组匹配的转发表项时,确定所述报文命中。
可理解地,FPGA可以自动判断报文是否为SYN包。其中,SYN包为一条流的首个报文,在SYN包中,可以包括用于表征该包为表示一条流的首个报文的标识或字段,可以通FPGA进行识别判断。其中,一条流指报文的五元组相同的数据报文形成的数据流。当FPGA确定该报文不是SYN包时,FPGA可以解析得到报文的五元组,然后判断流表信息中是否存在与该五元组对应的转发表项。若该流表信息中,存在与报文的五元组对应的转发表项,则表示该报文命中,且所命中的转发表项的五元组与该报文的五元组相同。与报文命中的转发表项即为该报文的目标转发表项。若流表信息的所有转发表项中,不存在报文的目标转发表项,则表示流表项信息中不存在与报文的五元组相同的转发表项,此时,可以确定报文未命中。
另外,若该报文是SYN包,此时,FPGA中,通常不存在与该报文的五元组对应的转发表项,或者FPGA中的与该报文对应的转发表项处于失效状态,无法命中该报文。即,若报文为SYN包,则FPGA可以直接确定该报文未命中。
在步骤S130中,在报文命中时,FPGA可以根据所命中的转发表项,对该报文的头部进行修改或重新封装,以使重新封装后的报文在网络设备内部传输。即,通过FPGA将封装后的报文发送至网络设备的出接口。其中,转发表项包括但不限于入接口、出接口、交换或路由模式等信息。
可理解地,FPGA所接收的报文,在未重新封装之前,通常无法将该报文准确发送至出接口。在根据转发表项对报文重新封装头部后,FPGA才可以准确将重新封装后的报文发送至出接口。经过重新封装后的报文即为待转发报文。
在步骤S140中,FPGA可以根据目标转发表项中的转发路径信息,将待转发报文发送至网络设备的出接口。出接口收到待转发报文后,可以将待转发报文发送至待转发报文的目的地址对应的接口。其中,出接口发送待转发报文的方式为本领域技术人员熟知,这里不再赘述。
作为一种可选的实施方式,在步骤S120之后,方法还可以包括:
当所述报文未命中,且所述报文为表征同一流的SYN包时,将所述报文发送至所述网络设备中的CPU,其中,所述同一流中的报文的五元组相同;
通过所述CPU根据所述报文,创建与所述报文的五元组对应的转发表项;
通过CPU将所述转发表项发送至所述FPGA,并将所述报文发送至所述出接口。
可理解地,若FPGA确定该报文未命中,且为同一流的SYN包时,则FPGA可以将该报文上传至CPU中,由CPU根据报文的五元组、入接口、出接口等信息,为该报文创建转发表项。然后,CPU将转发表项下发至FPGA,作为FPGA中的转发表项。其中,每个转发表项可以设置有状态标志,状态标志可以包括表征转发表项有效的第一标志,表征转发表项失效的第二标志。第一标志与第二标志位不同的标志,可以根据实际情况进行确定。例如,第一标志可以为数字1,第二标志可以为数字0。当状态标志位第一标志时,表示该转发表项处于有效状态,可以供FPGA进行匹配。若状态标志位第二标志,则表示该转发表项处于失效状态,无法供FPGA进行匹配。
其中,CPU下发至FPGA的转发表项的状态标志为表征有效的第一标志。当一条流的报文发送完毕时,CPU可以控制FPGA中的目标转发表项的状态标志为第二标志,以使目标转发表项失效。
CPU在接收到为SYN包的报文后,可以将该报文发送至出接口。其中,CPU将该报文发送至出接口的方式为本领域技术人员熟知。例如,CPU可以对报文重新封装报文头部,然后将重新封装后的报文作为待转发报文,最后将该待转发报文发送至出接口。
当报文为TCP报文,且为SYN包时,CPU通过对TCP报文创建目标转发表项,以及将TCP报文发送至出接口,如此,便可以实现TCP连接的建立,后续在接收到同一流的TCP报文时,可以直接由FPGA进行报文转发,无需CPU参与,以降低CPU的运算开销,改善因CPU处理压力大而导致报文处理的延时高、效率低的问题。
需要说明的是,CPU将报文发送至出接口,与CPU将转发表项发送至FPGA的先后顺序不作具体限定。
作为一种可选的实施方式,在步骤S120之前,方法还可以包括:
当所述报文为表征同一流的SYN包时,将所述报文发送至CPU;
通过所述CPU根据所述报文,创建与所述报文的五元组对应的转发表项;
通过CPU将所述转发表项发送至所述FPGA,并将所述报文发送至出接口。
可理解地,FPGA中的流表信息,为CPU预先配置并下发至FPGA的配置信息。若FPGA接收的报文为表征同一流的SYN包,此时,若在FPGA中,不存在与报文对应的转发流表,或者与报文对应的转发流表处于失效状态,该FPGA可以将该报文发送至CPU,由CPU进行相应的分析处理。
CPU在接收到该报文后,若判断FPGA中存在与该报文对应的目标转发表项时(此时,该目标转发表项的状态标志为第二标志,表示处于失效状态),便将FPGA中的该目标转发表项的状态标志更改为第一标志,表示处于有效状态。如此,CPU无需再重新创建与该报文对应的目标转发表项,有利于降低CPU的运算开销。
若CPU判断FPGA中不存在与该报文对应的目标转发表项时,便基于报文的五元组、入接口、出接口等信息,生成该报文的转发表项,然后将生成的转发表项发送至FPGA,以作为与该报文对应的转发表项,该转发表项即为该报文的目标转发表项。在该转发表项处于有效期间,当FPGA后续接收的与该报文属于同一流的报文时,可以直接命中该转发表项,后续无需CPU参与转发处理,便可以直接由FPGA实现报文的转发,以降低CPU的运算开销。
作为一种可选的实施方式,方法还可以包括:
通过所述FPGA统计所述FPGA发送的所述报文,得到统计表项消息;
每间隔预设时长,或者当所述统计表项消息中统计的所述报文的数量达到指定数量,或者当所述统计表项信息的字节达到预设字节时,将所述统计表项消息发送至所述网络设备中的CPU。
统计表项消息可以包括:表征流是否有效的标志、流的状态、流的编号、累计报文的数量、累计报文的字节中的至少一种。
请参照图3,统计表项消息的数据字段的格式可以如图3所示,可以包括流有效标志、流状态、流ID、累计报文数量、累计字节数量等。其中,FPGA可以针对每条流的报文进行统计。在每条流的数据传输完毕后,可以将统计表项消息发送至CPU,另外,FPGA还可以对统计表项消息进行初始化清零,以便于对后续的其他流进行统计。
流有效标志可以根据实际情况进行设置,用于指示当前报文所对应的流处于关闭状态或处于保持连接状态。
流状态表示当前流对应TCP协议的状态,为本领域技术人员熟知。
流ID为流的编号,通常而言,不同五元组的流的ID不同,可以根据实际情况进行设置。
累计报文数量可理解为FPGA从接收到同一流的第一个报文开始,所统计的FPGA转发的该流的报文的累计数量。
累计报文字节可理解为FPGA从接收到同一流的第一个报文开始,所统计的FPGA转发的该流的报文的累计字节量。
在FPGA对报文进行统计期限,还可以主动将得到的统计表项消息发送至CPU,以便于CPU对FPGA转发报文过程进行监控管理。
其中,FPGA发送统计表项消息的方式,可以为下述的任一种:
当统计表项消息中统计的报文的数量达到指定数量时,将统计表项消息发送至网络设备中的CPU;
或者,当统计表项信息的字节达到预设字节时,将统计表项消息发送至网络设备中的CPU;
或者,每间隔预设时长,将统计表项消息发送至网络设备中的CPU。
另外,FPGA还可以对上述的三种方式进行组合。例如,在预设时长内,若统计表项信息的字节达到预设字节,或统计表项消息中统计的报文的数量达到指定数量,便将当前的统计表项消息发送至网络设备中的CPU,在发送至CPU后,可以重新统计报文的数量或重新计算统计表项详细的字节。其中,指定数量、预设字节及预设时长,均可以根据实际情况进行设置,这里不作具体限定。例如,指定数量可以为1000个,预设字节可以为8KB,预设时长可以为0.1秒。
在本实施例中,FPGA可以将统计表项消息,以消息块的方式,发送至CPU。每个消息块的字节长度可以根据实际情况进行设置,例如为8字节,多个消息块可以封装成数据包,然后再进行发送。在上述的实施方式中,以预设时长或收集到一定数量的消息块后,再统一送至CPU,如此,有利于提升PCIe总线带宽的利用率,以及提高CPU处理消息的速率。
作为一种可选的实施方式,方法还可以包括:
通过所述FPGA根据筛选规则,对所述FPGA接收的报文进行筛选;
将筛选得到的异常报文丢弃或发送至所述网络设备中的CPU。
筛选规则可以根据实际情况进行确定,可以包括一类或多类规则。例如,可以根据报文的传输协议进行筛选。比如,筛选规则将报文的协议为TCP/IP协议的报文确定为正常报文,非TCP/IP协议的报文确定为异常报文。
或者,可以根据报文的源地址、目的地址,对报文进行筛选。例如,筛选规则包括白名单,白名单中包括的源地址、目的地址为正常的报文的地址,非白名单中的源地址、目的地址的报文为异常报文。FPGA可以通过对接收的报文的源地址、目的地址,与白名单中的地址进行比对,便可以确定该报文是否为异常报文。
当然,筛选规则还可以包括其他规则,这里不再赘述。
当FPGA确定出异常报文后,可以直接将该异常报文进行丢弃,或者将异常报文发送至CPU,由CPU对异常报文进行分析处理。其中,FPGA可以根据实际情况,选择对异常报文进行丢弃,或者选择将异常报文发送至CPU,这里不作具体限定。另外,CPU对异常报文进行分析处理的方式为本领域技术人员熟知,这里不再赘述。
作为一种可选的实施方式,方法还可以包括:当所述统计表项消息中存在表征与所述报文对应的流失效的标志时,通过所述CPU控制与所述报文命中的所述目标转发表项失效,并关闭传输与所述报文的五元组相同的报文。
例如,当FPGA接收到同一流的最后一个关闭报文时,可以将统计表项信息中的流有效标志更改为表示流失效的标志,然后将更新后的统计表项信息,发送至CPU。CPU接收到统计表项消息后,可以确定统计表项消息中存在表征与报文对应的流失效的标志,然后,拆除CPU中的连接信息,同时下发拆除命令,并将FPGA中与该流的报文命中的目标转发表项的状态标志更改为第二标志,表示目标转发表项无效。如此,可以关闭传输与报文的五元组相同的报文。其中,FPGA确定关闭报文的方式为本领域技术人员熟知。
基于上述设计,FPGA与CPU相互配合,可以实现TCP报文连接建立、保持、拆除,降低对CPU资源的占用。其中,在TCP连接建立后(即报文命中FPGA中的转发表项),CPU无需参与转发处理,可以仅由FPGA实现TCP报文的转发,以降低CPU的运算开销。另外,FPGA可以将统计表项消息,发送至CPU,使CPU可以获取每条流的必要信息,满足系统的实时性。在建立TCP连接以及拆除连接时,由FPGA与CPU相互配合实现,如此,不需要在FPGA中实现完整的TCP/IP协议栈,使得FPGA分担CPU处理压力的逻辑易于实现。
请参照图4,本申请实施例还提供一种报文处理装置100,可以应用于上述的网络设备中,用于执行方法中的各步骤。报文处理装置100包括至少一个可以软件或固件(Firmware)的形式存储于存储模块中或固化在网络设备操作系统(Operating System,OS)中的软件功能模块。处理模块用于执行存储模块中存储的可执行模块,例如报文处理装置100所包括的软件功能模块及计算机程序等。
报文处理装置100可以包括接收单元110、判断单元120、封装单元130及发送单元140,可以执行的操作内容如下:
接收单元110,用于通过网络设备中的FPGA接收报文;
判断单元120,用于通过所述FPGA根据流表信息判断所述报文是否命中,所述流表信息包括与五元组对应的转发表项;
封装单元130,用于当所述报文命中时,根据目标转发表项封装所述报文,得到封装后的待转发报文,所述目标转发表项为所述流表信息中与所述报文命中的转发表项;
发送单元140,用于根据所述目标转发表项,通过所述FPGA将所述待转发报文发送至所述网络设备的出接口。
判断单元120还可以用于:当所述报文不是所述SYN包,且所述流表信息中存在与所述报文的五元组匹配的转发表项时,确定所述报文命中。
作为一种可选的实施方式,报文处理装置100还可以包括创建单元。发送单元140还可以用于:当所述报文未命中,且所述报文为表征同一流的SYN包时,将所述报文发送至所述网络设备中的CPU,其中,所述同一流中的报文的五元组相同。创建单元用于通过所述CPU根据所述报文,创建与所述报文的五元组对应的转发表项。发送单元140还可以用于:通过CPU将所述转发表项发送至所述FPGA,并将所述报文发送至所述出接口。
作为一种可选的实施方式,在判断单元120执行步骤S120之前,发送单元140还可以用于:当所述报文为表征同一流的SYN包时,将所述报文发送至CPU;创建单元还可以用于:通过所述CPU根据所述报文,创建与所述报文的五元组对应的转发表项;发送单元140还可以用于:通过CPU将所述转发表项发送至所述FPGA,并将所述报文发送至出接口。
作为一种可选的实施方式,报文处理装置100还可以包括统计单元。统计单元用于通过所述FPGA统计所述FPGA发送的所述报文,得到统计表项消息;发送单元140还可以用于每间隔预设时长,或者当所述统计表项消息中统计的所述报文的数量达到指定数量,或者当所述统计表项信息的字节达到预设字节时,将所述统计表项消息发送至所述网络设备中的CPU。
作为一种可选的实施方式,报文处理装置100还可以包括筛选单元。筛选单元用于通过所述FPGA根据筛选规则,对所述FPGA接收的报文进行筛选;发送单元140还可以用于将筛选得到的异常报文丢弃或发送至所述网络设备中的CPU。
作为一种可选的实施方式,报文处理装置100还可以包括连接控制单元,用于当所述统计表项消息中存在表征与所述报文对应的流失效的标志时,通过所述CPU控制与所述报文命中的所述目标转发表项失效,并关闭传输与所述报文的五元组相同的报文。
在本实施例中,存储模块可以是,但不限于,随机存取存储器,只读存储器,可编程只读存储器,可擦除可编程只读存储器,电可擦除可编程只读存储器等。在本实施例中,存储模块可以用于存储流表信息。筛选规则、预设时长等。当然,存储模块还可以用于存储程序,处理模块在接收到执行指令后,执行该程序。
通信模块用于通过网络建立网络设备与其他设备的通信连接,并通过网络收发数据。
可以理解的是,图1所示的结构仅为网络设备的一种结构示意图,网络设备还可以包括比图1所示更多的组件。图1中所示的各组件可以采用硬件、软件或其组合实现。
需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的网络设备、报文处理装置100的具体工作过程,可以参考前述方法中的各步骤对应过程,在此不再过多赘述。
本申请实施例还提供一种计算机可读存储介质。计算机可读存储介质中存储有计算机程序,当计算机程序在计算机上运行时,使得计算机执行如上述实施例中所述的报文处理方法。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现,基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
综上所述,本申请提供一种报文处理方法、装置、网络设备及可读存储介质。方法包括:通过网络设备中的FPGA接收报文;通过FPGA根据流表信息判断报文是否命中,流表信息包括与五元组对应的转发表项;当报文命中时,根据目标转发表项封装报文,得到封装后的待转发报文,目标转发表项为流表信息中与报文命中的转发表项;根据目标转发表项,通过FPGA将待转发报文发送至网络设备的出接口。在本方案中,当网络设备需要对报文进行转发时,可以通过FPGA对报文进行分析处理,若报文命中,表示FPGA可以直接对该报文进行封装以及转发,如此,可以无需CPU参与,以降低对CPU的依赖,改善CPU因需要处理的报文过多而影响报文正常传输的问题。
在本申请所提供的实施例中,应该理解到,所揭露的装置、系统和方法,也可以通过其它的方式实现。以上所描述的装置、系统和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种报文处理方法,其特征在于,应用于网络设备,所述方法包括:
通过网络设备中的FPGA接收报文;
通过所述FPGA根据流表信息判断所述报文是否命中,所述流表信息包括与五元组对应的转发表项;
当所述报文命中时,根据目标转发表项封装所述报文,得到封装后的待转发报文,所述目标转发表项为所述流表信息中与所述报文命中的转发表项;
根据所述目标转发表项,通过所述FPGA将所述待转发报文发送至所述网络设备的出接口;
通过所述FPGA统计所述FPGA发送的所述报文,得到统计表项消息;
当所述统计表项消息中统计的所述报文的数量达到指定数量,或者当所述统计表项消息 的字节达到预设字节时,将所述统计表项消息发送至所述网络设备中的CPU;
当所述统计表项消息中存在表征与所述报文对应的流失效的标志时,通过所述CPU控制与所述报文命中的所述目标转发表项失效,并关闭传输与所述报文的五元组相同的报文。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述报文未命中,且所述报文为表征同一流的SYN包时,将所述报文发送至所述网络设备中的CPU,其中,所述同一流中的报文的五元组相同;
通过所述CPU根据所述报文,创建与所述报文的五元组对应的转发表项;
通过CPU将所述转发表项发送至所述FPGA,并将所述报文发送至所述出接口。
3.根据权利要求1所述的方法,其特征在于,在通过所述FPGA根据流表信息判断所述报文是否命中之前,所述方法还包括:
当所述报文为表征同一流的SYN包时,将所述报文发送至CPU;
通过所述CPU根据所述报文,创建与所述报文的五元组对应的转发表项;
通过CPU将所述转发表项发送至所述FPGA,并将所述报文发送至出接口。
4.根据权利要求1所述的方法,其特征在于,所述统计表项消息包括:
表征流是否有效的标志、流的状态、流的编号、累计报文的数量、累计报文的字节中的至少一种。
5.根据权利要求1所述的方法,其特征在于,通过所述FPGA根据流表信息判断所述报文是否命中,包括:
判断所述报文是否为表征同一流的SYN包;
当所述报文不是所述SYN包,且所述流表信息中存在与所述报文的五元组匹配的转发表项时,确定所述报文命中。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述FPGA根据筛选规则,对所述FPGA接收的报文进行筛选;
将筛选得到的异常报文丢弃或发送至所述网络设备中的CPU。
7.一种报文处理装置,其特征在于,应用于网络设备,所述装置包括:
接收单元,用于通过网络设备中的FPGA接收报文;
判断单元,用于通过所述FPGA根据流表信息判断所述报文是否命中,所述流表信息包括与五元组对应的转发表项;
封装单元,用于当所述报文命中时,根据目标转发表项封装所述报文,得到封装后的待转发报文,所述目标转发表项为所述流表信息中与所述报文命中的转发表项;
发送单元,用于根据所述目标转发表项,通过所述FPGA将所述待转发报文发送至所述网络设备的出接口;
统计单元,用于通过所述FPGA统计所述FPGA发送的所述报文,得到统计表项消息;
所述发送单元还用于当所述统计表项消息中统计的所述报文的数量达到指定数量,或者当所述统计表项消息 的字节达到预设字节时,将所述统计表项消息发送至所述网络设备中的CPU;
连接控制单元,用于当所述统计表项消息中存在表征与所述报文对应的流失效的标志时,通过所述CPU控制与所述报文命中的所述目标转发表项失效,并关闭传输与所述报文的五元组相同的报文。
8.一种网络设备,其特征在于,所述网络设备包括相互耦合的CPU、FPGA及存储器,所述存储器内存储计算机程序,当所述计算机程序被所述CPU及所述FPGA执行时,使得所述网络设备执行如权利要求1-6中任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011585512.0A CN112737914B (zh) | 2020-12-28 | 2020-12-28 | 报文处理方法、装置、网络设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011585512.0A CN112737914B (zh) | 2020-12-28 | 2020-12-28 | 报文处理方法、装置、网络设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112737914A CN112737914A (zh) | 2021-04-30 |
CN112737914B true CN112737914B (zh) | 2022-08-05 |
Family
ID=75606992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011585512.0A Active CN112737914B (zh) | 2020-12-28 | 2020-12-28 | 报文处理方法、装置、网络设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112737914B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113765804A (zh) * | 2021-08-05 | 2021-12-07 | 中移(杭州)信息技术有限公司 | 报文转发方法、装置、设备及计算机可读存储介质 |
CN113472700B (zh) * | 2021-09-01 | 2022-02-25 | 阿里云计算有限公司 | 报文处理方法、设备、存储介质及网卡 |
CN114205172A (zh) * | 2021-12-28 | 2022-03-18 | 杭州迪普信息技术有限公司 | 一种表项下发方法及一种报文转发方法 |
CN114827044B (zh) * | 2022-04-27 | 2023-12-26 | 新华三信息安全技术有限公司 | 一种报文处理方法、装置及网络设备 |
CN115834498B (zh) * | 2023-01-06 | 2023-05-02 | 北京中科网威信息技术有限公司 | 业务加速方法、装置、设备及介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101018176A (zh) * | 2007-03-09 | 2007-08-15 | 中国科学院软件研究所 | 自组织网络中的短报文可靠传输方法 |
CN102497372A (zh) * | 2011-12-13 | 2012-06-13 | 曙光信息产业(北京)有限公司 | 一种基于ip报文目的端口过滤策略的系统和方法 |
CN102769869A (zh) * | 2012-08-09 | 2012-11-07 | 北京傲天动联技术有限公司 | 无线接入点的控制和配置报文快速转发系统 |
CN105337991A (zh) * | 2015-11-23 | 2016-02-17 | 湖南戎腾网络科技有限公司 | 一种一体化的报文流查找与更新方法 |
CN106656799A (zh) * | 2017-02-14 | 2017-05-10 | 湖南基石通信技术有限公司 | 一种基于无线mesh网络的报文转发方法及装置 |
CN109688069A (zh) * | 2018-12-29 | 2019-04-26 | 杭州迪普科技股份有限公司 | 一种处理网络流量的方法、装置、设备及存储介质 |
EP3582441A1 (en) * | 2018-06-13 | 2019-12-18 | Juniper Networks, Inc. | Virtualization infrastructure underlay network performance measurement and monitoring |
CN111597142A (zh) * | 2020-05-15 | 2020-08-28 | 北京光润通科技发展有限公司 | 一种基于fpga的网络安全加速卡及加速方法 |
CN111740847A (zh) * | 2020-08-24 | 2020-10-02 | 常州楠菲微电子有限公司 | 一种基于fpga的高速网络数据传输系统及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1946061B (zh) * | 2006-10-12 | 2010-07-28 | 杭州华三通信技术有限公司 | 一种快速处理报文的方法及装置 |
US8228929B2 (en) * | 2008-10-24 | 2012-07-24 | Juniper Networks, Inc. | Flow consistent dynamic load balancing |
CN109587065B (zh) * | 2017-09-28 | 2021-02-23 | 北京金山云网络技术有限公司 | 转发报文的方法、装置、交换机、设备及存储介质 |
CN108134748B (zh) * | 2017-12-11 | 2022-01-25 | 杭州迪普科技股份有限公司 | 一种基于快速转发表项的丢包方法和装置 |
-
2020
- 2020-12-28 CN CN202011585512.0A patent/CN112737914B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101018176A (zh) * | 2007-03-09 | 2007-08-15 | 中国科学院软件研究所 | 自组织网络中的短报文可靠传输方法 |
CN102497372A (zh) * | 2011-12-13 | 2012-06-13 | 曙光信息产业(北京)有限公司 | 一种基于ip报文目的端口过滤策略的系统和方法 |
CN102769869A (zh) * | 2012-08-09 | 2012-11-07 | 北京傲天动联技术有限公司 | 无线接入点的控制和配置报文快速转发系统 |
CN105337991A (zh) * | 2015-11-23 | 2016-02-17 | 湖南戎腾网络科技有限公司 | 一种一体化的报文流查找与更新方法 |
CN106656799A (zh) * | 2017-02-14 | 2017-05-10 | 湖南基石通信技术有限公司 | 一种基于无线mesh网络的报文转发方法及装置 |
EP3582441A1 (en) * | 2018-06-13 | 2019-12-18 | Juniper Networks, Inc. | Virtualization infrastructure underlay network performance measurement and monitoring |
CN109688069A (zh) * | 2018-12-29 | 2019-04-26 | 杭州迪普科技股份有限公司 | 一种处理网络流量的方法、装置、设备及存储介质 |
CN111597142A (zh) * | 2020-05-15 | 2020-08-28 | 北京光润通科技发展有限公司 | 一种基于fpga的网络安全加速卡及加速方法 |
CN111740847A (zh) * | 2020-08-24 | 2020-10-02 | 常州楠菲微电子有限公司 | 一种基于fpga的高速网络数据传输系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112737914A (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112737914B (zh) | 报文处理方法、装置、网络设备及可读存储介质 | |
US20220217078A1 (en) | System and method for facilitating tracer packets in a data-driven intelligent network | |
US9819590B2 (en) | Method and apparatus for notifying network abnormality | |
US9769074B2 (en) | Network per-flow rate limiting | |
US7872973B2 (en) | Method and system for using a queuing device as a lossless stage in a network device in a communications network | |
CN108718283B (zh) | 数据中心网络中集中式端网协调的tcp拥塞控制方法 | |
US20220191140A1 (en) | Data transmission control method, apparatus, and storage medium | |
EP4054126A1 (en) | Transmission quality test method and apparatus, system, and storage medium | |
US20170331740A1 (en) | Forwarding of adaptive routing notifications | |
US11012327B2 (en) | Drop detection and protection for network packet monitoring in virtual processing environments | |
CN111385121B (zh) | 一种操作管理维护iOAM报文的传输方法及相应装置 | |
CN108449279B (zh) | 拥塞控制方法及装置 | |
WO2020083272A1 (zh) | 处理策略的生成方法、系统及存储介质 | |
US8787160B2 (en) | Method, apparatus, and system for judging path congestion | |
US20150341235A1 (en) | Packet Processing Method, Forwarder, Packet Processing Device, and Packet Processing System | |
US20150229574A1 (en) | Communication system, communication method, information processing apparatus, communication control method, and program | |
EP3534571A1 (en) | Service packet transmission method, and node apparatus | |
CN112333094A (zh) | 数据传输处理方法、装置、网络设备及可读存储介质 | |
CN113055301A (zh) | 拥塞控制方法及相关设备 | |
CN114095448A (zh) | 一种拥塞流的处理方法及设备 | |
US10749803B1 (en) | Enhanced congestion avoidance in network devices | |
US11146468B1 (en) | Intelligent export of network information | |
US20080159320A1 (en) | Layer 3 switch device and its control method | |
CN109547361B (zh) | 一种用于fcf设备的报文处理方法及系统 | |
CN116723162B (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 |