CN112532690A - 一种报文解析方法、装置、电子设备及存储介质 - Google Patents

一种报文解析方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN112532690A
CN112532690A CN202011219354.7A CN202011219354A CN112532690A CN 112532690 A CN112532690 A CN 112532690A CN 202011219354 A CN202011219354 A CN 202011219354A CN 112532690 A CN112532690 A CN 112532690A
Authority
CN
China
Prior art keywords
message
analysis
parsing
driver
packet
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
Application number
CN202011219354.7A
Other languages
English (en)
Other versions
CN112532690B (zh
Inventor
李小龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou DPTech Technologies Co Ltd
Original Assignee
Hangzhou DPTech Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou DPTech Technologies Co Ltd filed Critical Hangzhou DPTech Technologies Co Ltd
Priority to CN202011219354.7A priority Critical patent/CN112532690B/zh
Publication of CN112532690A publication Critical patent/CN112532690A/zh
Application granted granted Critical
Publication of CN112532690B publication Critical patent/CN112532690B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请提供一种报文解析方法、装置、电子设备及存储介质,所述方法应用于服务器,所述服务器搭载了用于采集报文的驱动程序;所述驱动程序为所述服务器中搭载的多个报文解析引擎提供共享缓冲区;所述方法包括:对所述驱动程序采集到的报文进行报文预解析,其中,所述报文预解析至少包括网络层报文解析;将报文预解析完成的所述报文写入所述驱动程序提供的共享缓冲区;基于所述报文解析引擎从所述共享缓冲区中读取报文预解析完成的所述报文;针对读取到的所述报文进一步的执行报文解析,其中,所述报文解析至少包括应用层报文解析。本申请可以实现多引擎处理场景下服务器报文处理性能的提升。

Description

一种报文解析方法、装置、电子设备及存储介质
技术领域
本申请涉及网络技术领域,尤其涉及一种报文解析方法、装置、电子设备及存储介质。
背景技术
随着网络技术的快速发展,网络安全防御体系面临着巨大的挑战。为了应对不断变化的网络攻击手段,以DPI(Deep Packet Inspection,数据包深度检测)技术为基础的报文处理软件,比如入侵检测系统、入侵防御系统、协议审计软件等,得到了广泛的应用。这类软件从网卡采集报文,并进行报文处理,再根据报文处理的结果进行应用层的业务处理;其中,上述报文处理至少包括根据报文解析引擎对应的协议栈逐层地(从网络层到应用层)解析报文。
例如,在实际应用中,通常在服务器中安装驱动程序,如pf_ring、DPDK(DataPlane Development Kit)等,服务器基于驱动程序进行报文采集,并将采集到的报文写入上述驱动程序提供的无锁缓冲区。服务器中可以有若干个对应着不同协议栈的报文解析引擎,上述驱动程序为每个报文解析引擎提供一个无锁缓冲区。服务器进行应用层的业务处理时,报文解析引擎可以调用驱动程序采集报文,并从对应的无锁缓冲区中读取报文,根据自身的协议栈对读取的报文进行网络层报文解析、传输层报文解析和应用层报文解析后,再提供给应用层进行业务处理。
相关技术中,为了提升报文处理软件发现安全威胁的能力,需要将攻击检测、协议审计等功能集成在一起,实质上就是将多个在应用层具备不同业务处理能力的报文解析引擎集成在一起。
发明内容
有鉴于此,本申请提供一种报文解析方法、装置、电子设备及存储介质,以解决在服务器中搭载的多个报文解析引擎运行的场景中,对同一报文在不同报文解析引擎对应的缓冲区中的拷贝重复解析的问题。
本申请提供一种报文解析方法,所述方法应用于服务器,所述服务器搭载了用于采集报文的驱动程序;所述驱动程序为所述服务器中搭载的多个报文解析引擎提供共享缓冲区;所述方法包括:
对所述驱动程序采集到的报文进行报文预解析,其中,所述报文预解析至少包括网络层报文解析;
将报文预解析完成的所述报文写入所述驱动程序提供的共享缓冲区;
基于所述报文解析引擎从所述共享缓冲区中读取报文预解析完成的所述报文;
针对读取到的所述报文进一步的执行报文解析,其中,所述报文解析至少包括应用层报文解析。
可选的,所述将报文预解析完成的所述报文写入所述驱动程序提供的共享缓冲区,包括:
将报文预解析的结果作为报文头部,将所述报文作为报文载荷,进行报文封装;
将封装后的报文写入所述驱动程序提供的共享缓冲区。
可选的,所述报文预解析包括网络层报文解析和传输层报文解析;所述报文解析包括应用层报文解析。
可选的,所述针对读取到的所述报文进一步的执行应用层报文解析,包括:
进一步的读取所述报文的报文载荷,针对读取到的所述报文的报文载荷进一步的执行应用层报文解析。
可选的,所述报文预解析完成的所述报文还包括计数值,所述计数值表示从所述共享缓冲区读取报文预解析完成的所述报文的报文解析引擎的数量。
可选的,所述基于所述报文解析引擎从所述共享缓冲区中读取报文预解析完成的所述报文时,所述方法还包括:
当任一所述报文解析引擎开始读取所述共享缓冲区中的报文预解析完成的所述报文时,将所述报文预解析完成的所述报文对应的计数值加1;
当任一所述报文解析引擎结束读取所述共享缓冲区中的报文预解析完成的所述报文时,将所述报文预解析完成的所述报文对应的计数值减1;
当任一所述报文预解析完成的所述报文对应的计数值减至0时,从所述共享缓冲区移除所述报文预解析完成的所述报文。
可选的,所述驱动程序包括pf_ring驱动程序;所述共享缓冲区包括共享无锁环形队列。
本申请提供一种报文解析装置,所述装置应用于服务器,所述服务器搭载了用于采集报文的驱动程序;所述驱动程序为所述服务器中搭载的多个报文解析引擎提供共享缓冲区;所述装置包括:
报文预解析单元,用于对所述驱动程序采集到的报文进行报文预解析,其中,所述报文预解析至少包括网络层报文解析;
写缓冲单元,用于将报文预解析完成的所述报文写入所述驱动程序提供的共享缓冲区;
读缓冲单元,用于基于所述报文解析引擎从所述共享缓冲区中读取报文预解析完成的所述报文;
报文解析单元,用于针对读取到的所述报文进一步的执行报文解析,其中,所述报文解析至少包括应用层报文解析。
可选的,所述写缓冲单元,具体用于:
将报文预解析的结果作为报文头部,将所述报文作为报文载荷,进行报文封装;
将封装后的报文写入所述驱动程序提供的共享缓冲区。
可选的,所述报文预解析包括网络层报文解析和传输层报文解析;所述报文解析包括应用层报文解析。
可选的,所述报文解析包括应用层报文解析时,所述报文解析单元,具体用于:进一步的读取所述报文的报文载荷,针对读取到的所述报文的报文载荷进一步的执行应用层报文解析。
可选的,所述报文预解析完成的所述报文还包括计数值,所述计数值表示从所述共享缓冲区读取报文预解析完成的所述报文的报文解析引擎的数量。
可选的,所述读缓冲单元还用于:
当任一所述报文解析引擎开始读取所述共享缓冲区中的报文预解析完成的所述报文时,将所述报文预解析完成的所述报文对应的计数值加1;
当任一所述报文解析引擎结束读取所述共享缓冲区中的报文预解析完成的所述报文时,将所述报文预解析完成的所述报文对应的计数值减1;
当任一所述报文预解析完成的所述报文对应的计数值减至0时,从所述共享缓冲区移除所述报文预解析完成的所述报文。
可选的,所述驱动程序包括pf_ring驱动程序;所述共享缓冲区包括共享无锁环形队列。
本申请还提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述方法。
本申请还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述方法。
本申请在多个报文解析引擎处理的场景中,报文解析引擎基于服务器的驱动程序采集报文时,所述驱动程序为该服务器中的多个报文解析引擎提供共享缓冲区,并且服务器至少对采集的报文进行网络层报文解析后,才基于所述驱动程序将至少进行过网络层报文解析的报文写入所述共享缓冲区中。
一方面,本申请服务器的驱动程序为该服务器中的多个报文解析引擎提供共享缓冲区,可以避免对采集的同一报文多次拷贝,以及可以避免将上述拷贝分别写入不同报文解析引擎对应的缓冲区,从而节约了服务器资源;另一方面,本申请服务器对驱动程序采集的报文至少进行网络层报文解析后,才写入共享缓冲区中,不同的报文解析引擎从共享缓冲区读取上述预解析过的报文后,只需要再根据对应的协议栈进行其他层的报文解析,从而在服务器中多个报文解析引擎处理的场景中,避免对同一报文在不同缓冲区的拷贝重复进行部分层的报文解析,从而实现了多引擎处理场景下报文处理性能的提升。
附图说明
图1是一示例性的实施例示出的一种相关技术中报文解析引擎调用驱动程序采集报文的示意图;
图2是一示例性的实施例示出的一种本申请的报文解析方法中报文解析引擎调用驱动程序采集报文的示意图;
图3是一示例性的实施例示出的一种报文解析方法的流程图;
图4是一示例性的实施例示出的一种报文解析装置的框图;
图5是一示例性的实施例示出的一种报文解析装置所在电子设备的硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本技术领域的人员更好地理解本说明书实施例中的技术方案,下面先对本说明书实施例涉及的报文解析的相关技术,进行简要说明。
网络体系中,协议就是通信双方在通信进程中应该遵守的规范,多个协议可以组成通信协议集;例如,TCP/IP就是常用的通信协议集。
TCP/IP体系结构将网络结构划分为四层,自下而上可以包括:网络接口层(相当于物理层和数据链路层)、网络层、传输层和应用层。其中,网络接口层可以定义网络接口,OSI/RM体系中已有的数据链路层协议和物理层协议都可以用于TCP/IP体系的网络接口层中;网络层可以将来自网络接口层的数据包通过一定的路径发送到目的端,网络层的协议可以包括IP、ARP、RARP、ICMP、IGMP等;传输层可以提供进程之间可靠的传输服务,传输层的协议可以包括TCP、UDP等;应用层可以为业务处理提供支持,如文件传输、电子邮件、网络管理等,应用层的协议可以包括FTP、POP3、SNMP、HTTP、DNS等。
应用层进行业务处理时,需要先对来自网络接口层的数据包进行报文解析,以获得上述数据包中以太网帧的五元组信息,再根据上述五元组信息将以太网帧发送给对应的不同业务应用进行处理。其中,上述报文解析可以包括网络层报文解析和传输层报文解析,上述五元组信息可以包括源地址、目的地址、源端口、目的端口和传输协议。
但是,网络攻击逐渐从网络层、传输层转向了应用层,若只依赖网络层报文解析和传输层报文解析获得报文的五元组信息,就无法识别该报文承载的具体业务类型,也无法防护针对应用层的网络攻击手段。因此,可以通过DPI技术来解决应用层的信息安全防护问题。
DPI技术可以通过应用层报文解析,针对不同报文的报文载荷进行深度检测,来获得该报文承载的具体业务类型、流量大小等信息,识别出该报文对应的业务应用处理或用户动作,从而实现攻击检测或流量控制等功能。其中,上述深度检测可以通过跟踪业务应用的协议交互过程,和/或对报文的报文载荷进行深度识别,上述深度识别具体可以包括特征匹配、应用层网关识别、等等。
上述深度识别可以基于报文解析引擎实现,一个服务器中可以有多个报文解析引擎;其中,每个报文解析引擎可以为应用层的业务应用提供不同的深度识别功能,例如攻击检测、协议审计等功能。每个报文解析引擎有其对应的协议栈,该协议栈可以定义在将数据包从网络接口层传送到应用层的过程中需要遵循的各种规范;其中,协议栈是网络协议套件的一个具体的软件实现,协议栈中可以包含网络体系中多个层面的协议。
在实际应用中,应用层的业务应用实现功能时,基于报文解析引擎进行报文解析的过程可以包括:服务器中与业务应用对应的报文解析引擎,可以调用该服务器上安装的驱动程序来采集网络中的数据包;该驱动程序将采集的数据包拷贝到缓冲区中,并通过内存映射机制将内存映射到应用层;该报文解析引擎可以通过内存映射机制读取缓冲区中的报文,并对读取的报文进行报文解析,直至完成应用层报文解析。
请参见图1,图1是一示例性的实施例示出的一种相关技术中报文解析引擎调用驱动程序采集报文的示意图。应用层的业务应用在服务器中搭载有多个报文解析引擎,每个报文解析引擎可以对应实现不同的业务功能。例如,报文解析引擎A可以对应实现协议审计功能,报文解析引擎B可以对应实现入侵防御功能,报文解析引擎C可以实现流量控制功能;应当清楚的是,服务器中可以搭载的报文解析引擎数量不仅仅包括三个的情况,上述解析引擎可以对应实现的业务功能也不仅仅包括以上示例的功能,本说明书不做限定。
下面以服务器上安装的驱动程序为pf_ring为例,说明一种现有技术方案;应当清楚的是,这仅仅是一种示例性的描述,不代表对本说明书的限定。
在一种现有技术方案中,当服务器搭载的报文解析引擎调用驱动程序pf_ring从网卡采集报文时,驱动程序pf_ring为报文解析引擎A、报文解析引擎B、报文解析引擎C分别提供一个单独的环形缓冲队列A、环形缓冲队列B、环形缓冲队列C,并将采集的报文的拷贝分别写入每个报文解析引擎对应的环形缓冲队列中;每个报文解析引擎可以通过内存映射机制mmap()从其对应的环形缓冲队列中读取业务处理所需的报文;每个报文解析引擎可以对其读取的报文进行网络层报文解析、传输层报文解析和应用层报文解析,再根据报文解析的结果进行应用层的业务处理。
由此可见,在以上示出的现有技术方案中,一方面,由于驱动程序pf_ring为每个报文解析引擎提供一个单独的环形缓冲队列,并将从网卡采集的报文的拷贝分别写入每个报文解析引擎对应的环形缓冲队列中,需要执行大量的拷贝操作和写操作,会造成服务器资源的消耗;另一方面,由于在多引擎处理场景中,如果多个报文解析引擎都需要对从网卡采集的同一报文进行读取和报文处理,那么该报文在不同环形缓冲队列中的拷贝就会被对应的报文解析引擎分别进行传输层报文解析、网络层报文解析和应用层报文解析,而对应用层的业务应用来说,同一报文经过网络层报文解析和传输层报文解析的结果并无差异,都可以获得该报文的五元组信息,因而相当于对同一报文在不同环形缓冲队列中的拷贝进行重复的网络层报文解析和传输层报文解析,会造成服务器计算资源的浪费。
有鉴于此,本说明书旨在提出一种,在多个报文解析引擎处理的场景中,报文解析引擎基于服务器的驱动程序所提供的共享缓冲区中已至少进行过网络层报文解析的报文,来完成报文解析的技术方案。
在实现时,上述报文解析方法应用于服务器,上述服务器搭载了用于采集报文的驱动程序;上述驱动程序为上述服务器中搭载的多个报文解析引擎提供共享缓冲区;上述方法包括:
对上述驱动程序采集到的报文进行报文预解析,其中,上述报文预解析至少包括网络层报文解析;
将报文预解析完成的上述报文写入上述驱动程序提供的共享缓冲区;
基于上述报文解析引擎从上述共享缓冲区中读取报文预解析完成的上述报文;
针对读取到的上述报文进一步的执行报文解析,其中,上述报文解析至少包括应用层报文解析。
由此可见,在本说明书的技术方案中,在多个报文解析引擎处理的场景中,报文解析引擎基于服务器的驱动程序采集报文时,该驱动程序为该服务器中的多个报文解析引擎提供共享缓冲区,并且服务器至少对采集的报文进行网络层报文解析后,才基于上述驱动程序将上述至少进行过网络层报文解析的报文写入上述共享缓冲区中。
相较于现有技术方案,本说明书提供的报文解析方法中,一方面,本说明书中服务器的驱动程序为该服务器中的多个报文解析引擎提供共享缓冲区,可以避免对采集的同一报文多次拷贝,以及可以避免将上述拷贝分别写入不同报文解析引擎对应的缓冲区,从而节约了服务器资源;另一方面,本说明书中服务器对驱动程序采集的报文至少进行网络层报文解析后,才写入共享缓冲区中,不同的报文解析引擎从共享缓冲区读取上述预解析过的报文后,只需要再根据对应的协议栈进行其他层的报文解析,从而在服务器中多个报文解析引擎处理的场景中,避免对同一报文在不同缓冲区的拷贝重复进行部分层的报文解析,从而实现了多引擎处理场景下报文处理性能的提升。
在本说明书中,应用层的业务应用可以基于对应不同业务功能的报文解析引擎进行报文解析,来实现对应的业务功能。具体地,上述报文解析引擎可以调用该服务器上安装的驱动程序,来采集网络中的数据包;上述驱动程序可以拷贝采集的数据包中的以太网帧,并将其写入为上述报文解析引擎提供的缓冲区中;上述报文解析引擎可以读取上述缓冲区中的报文,并进行报文解析;上述应用层的业务应用可以根据上述报文解析的结果进行业务处理,从而实现对应的业务功能。
下面通过具体实施例,并结合具体的应用场景,对本说明书提供的报文解析方法进行描述。
请参见图2,图2是一示例性的实施例示出的一种本申请的报文解析方法中报文解析引擎调用驱动程序采集报文的示意图。
在本说明书的一种应用场景中,服务器中搭载有多个报文解析引擎,每个报文解析引擎可以对应实现不同的业务功能。当服务器搭载的报文解析引擎调用驱动程序pf_ring从网卡采集报文时,驱动程序pf_ring为报文解析引擎A、报文解析引擎B、报文解析引擎C分别提供一个共享环形缓冲队列,并将采集的报文的拷贝写入该共享环形缓冲队列中;每个报文解析引擎可以通过内存映射机制mmap()从该共享环形缓冲队列中读取业务处理所需的报文;每个报文解析引擎可以对其读取的报文进行网络层报文解析、传输层报文解析和应用层报文解析,再根据报文解析的结果进行应用层的业务处理。
在本说明书的一种应用场景中,将采集的报文的拷贝写入共享环形缓冲队列之前,还可以先对上述采集的报文进行报文预解析,其中,上述报文预解析可以包括网络层报文解析,也可以包括网络层报文解析和传输层报文解析;对上述采集的报文进行报文预解析后,再将报文预解析完成后的上述报文写入共享环形缓冲队列。应当清楚的是,上述对采集的报文进行报文预解析可以由服务器执行,也可以由服务器中搭载的驱动程序或其他程序执行,本说明书中不做限制。
由此可见,相较于现有技术方案,本说明书提供的报文解析方法中,一方面,本说明书中服务器的驱动程序为该服务器中的多个报文解析引擎提供共享缓冲区,可以避免对采集的同一报文多次拷贝,以及可以避免将上述拷贝分别写入不同报文解析引擎对应的缓冲区,从而节约了服务器资源;另一方面,本说明书中服务器对驱动程序采集的报文至少进行网络层报文解析后,才写入共享缓冲区中,不同的报文解析引擎从共享缓冲区读取上述预解析过的报文后,只需要再根据对应的协议栈进行其他层的报文解析,从而在服务器中多个报文解析引擎处理的场景中,避免对同一报文在不同缓冲区的拷贝重复进行部分层的报文解析,从而实现了多引擎处理场景下报文处理性能的提升。
请参见图3,图3是一示例性的实施例示出的一种报文解析方法的流程图,上述方法应用于服务器,上述服务器搭载了用于采集报文的驱动程序;上述驱动程序为上述服务器中搭载的多个报文解析引擎提供共享缓冲区;上述方法执行以下步骤:
步骤301:对驱动程序采集到的报文进行报文预解析,其中,上述报文预解析至少包括网络层报文解析;
步骤302:将报文预解析完成的上述报文写入上述驱动程序提供的共享缓冲区;
步骤303:基于上述报文解析引擎从上述共享缓冲区中读取报文预解析完成的上述报文;
步骤304:针对读取到的上述报文进一步的执行报文解析,其中,上述报文解析至少包括应用层报文解析。
在本说明书中,上述服务器搭载有驱动程序,该驱动程序可以从网卡采集数据包,该数据包中可以包括需要进行解析的报文,该报文的具体形式可以为以太网帧。应当清楚的是,由于计算机设备通过网卡连接到网络中,因而服务器中的驱动程序采集网络中的数据包,也可以说成是驱动程序从网卡采集数据包,这仅是一种示例性的描述,并不代表对本说明书作限制。
在实际应用中,上述驱动程序可以为具有从网卡采集数据包的功能,并且能够为服务器中搭载的报文解析引擎提供缓冲区的驱动程序。例如,上述驱动程序可以是pf_ring、DPDK(Data Plane Development Kit,数据平面开发套件)等,关于驱动程序的具体实现方式,本说明书的实施例仅是示例性的举例,并不做限制。
在本说明书中,上述服务器对上述驱动程序采集的报文进行报文预解析,其中,上述报文预解析至少包括网络层报文解析。
在实际应用中,上述报文预解析可以为网络层报文解析,也可以为网络层报文解析和传输层报文解析。
需要说明的是,由于不同的报文解析引擎分别对同一报文进行网络层报文解析或者传输层报文解析的结果并无差异,在上述驱动程序将采集的报文写入缓冲区之前,服务器先对上述驱动程序采集的报文进行报文预解析,在服务器中多个报文解析引擎进行报文处理的场景中,可以避免每个报文解析引擎分别对同一报文重复进行网络层报文解析或网络层报文解析和传输层报文解析,从而节约服务器的计算资源。
在本说明书中,上述服务器的驱动程序将报文预解析完成的上述报文写入上述驱动程序提供的共享缓冲区。
在实际应用中,上述缓冲区通常可以是环形缓冲区。其中,环形缓冲区通常可以是一个可容纳固定数量元素的闭环,服务器可以在环形缓冲区初始化的时候为其分配内存空间,这些内存空间可以重复利用;当环形缓冲区有元素进队或出队时,只需要返回指示元素内存的地址即可,从而避免频繁进行内存分配和内存释放的开销。上述环形缓冲区中的元素,就是将环形缓冲区中的数据或报文预先解析为固定长度的字段,再在上述固定长度的字段前加上元素头部标识。
例如,当上述服务器中的驱动程序为DPDK时,DPDK可以通过PMD(Poll ModeDriver,轮询模式驱动)来接收数据包。其中,DPDK可以为服务器提供Mempool Library(内存池),用于分配固定大小的对象,并且用环来存储为使用的对象;不同的Mempool Library用名字来区分。上述Mempool Library中,还可以存储有Mbuf Library,用于分配和释放缓冲区给DPDK应用来存储缓存消息。上述DPDK还可以包括Ring Library,用于提供一种链表队列的管理,具有先进先出、定长、无锁、并发出/入队等特性。
需要说明的是,上述环形缓冲区可以保证其中的数据或报文按照“先进先出”的原则进行操作,也就是可以保证报文解析引擎对环形缓冲区中的数据或报文顺序访问。另外,在需要进行多线程通信的场景中,环形缓冲区有利于高效且频繁地实现多线程通信。
在示出的一种实施方式中,上述服务器对上述驱动程序采集到的报文进行报文预解析后,将报文预解析的结果作为报文头部,将上述报文作为报文载荷,进行报文封装;并将封装后的报文写入上述驱动程序提供的共享缓冲区。
在实际应用中,当上述报文预解析为网络层报文解析时,上述服务器可以获得上述驱动程序采集的报文的源地址(包括源IP和源MAC)和目的地址(包括目的IP和目的MAC),并将其封装在报文预解析完成的上述报文的头部信息中。当上述报文预解析为网络层报文解析和传输层报文解析时,上述服务器可以获得上述驱动程序采集的报文的源地址(包括源IP和源MAC)、目的地址(包括目的IP和目的MAC)、源端口、目的端口和传输协议,也就是可以获得上述驱动程序采集的报文的五元组信息,并将上述五元组信息封装在报文预解析完成的上述报文的头部信息中。
例如,服务器对驱动程序从网卡采集的报文进行网络层报文解析,获得了该报文的源地址和目的地址;上述服务器根据上述网络层报文解析的结果,将其封装为报文预解析完成的报文,其中,上述解析获得的报文的源地址和目的地址被封装在报文预解析完成的上述报文的头部信息中。
在示出的一种实施方式中,上述驱动程序包括pf_ring驱动程序,上述共享缓冲区包括共享无锁环形队列。
在实际应用中,由于读写操作的竞争机制,当同一个缓冲队列中写进程和读进程并发进行时,就可能出现中断的情况;因而在相关技术中,通常可以为每个报文解析引擎提供一个单独的环形缓冲队列。而本说明书中,上述pf_ring驱动程序可以为服务器中搭载的多个报文解析引擎提供共享无锁环形队列。
需要说明的是,当上述驱动程序为pf_ring驱动程序时,上述共享缓冲区为共享无锁环形队列,由于上述无锁环形队列具有“无锁”的特性,当上述服务器中的驱动程序向上述共享无锁环形队列写入报文预解析完成的上述报文和上述报文解析引擎从上述共享无锁环形队列读取报文预解析完成的上述报文同时发生时,写进程与读进程互不影响,相对于可能发生中断的缓冲队列,可以避免中断导致的等待时间,从而能够提高服务器进行报文处理的速度。
在本说明书中,上述服务器基于报文解析引擎从上述共享缓冲区中读取报文预解析完成的上述报文。
在实际应用中,上述报文解析引擎可以通过上述驱动程序所提供的、上述共享缓冲区与应用层的业务应用之间的零拷贝数据机制,来访问上述共享缓冲区,并读取上述共享缓冲区中的报文预解析完成的报文。
例如,当上述驱动程序为pf_ring驱动程序时,上述报文解析引擎可以通过内存映射机制mmap()访问上述共享缓冲区,并读取上述共享缓冲区中的报文预解析完成的报文。其中,mmap()是一种区别于读/写机制的内存映射机制,并不需要先将上述共享缓冲区中的报文预解析完成的报文拷贝到应用层,再由应用层的业务应用调用上述拷贝到应用层的报文预解析完成的报文;通过mmap(),应用层的业务应用可以直接访问上述共享缓冲区,并利用读指针从上述共享缓冲区中读取报文预解析完成的上述报文。
又例如,当上述驱动程序为DPDK驱动程序时,上述报文解析引擎可以通过IVSHMEME Library访问上述共享缓冲区,并读取上述共享缓冲区中的报文预解析完成的报文。
在本说明书中,上述报文解析引擎针对读取到的上述报文进一步的执行报文解析,其中,上述报文解析至少包括应用层报文解析。
在实际应用中,当上述服务器根据报文预解析完成的上述报文的头部信息,检测出报文预解析完成的上述报文进行过网络层报文解析后,可以对报文预解析完成的上述报文进行传输层报文解析和应用层报文解析。当上述服务器根据报文预解析完成的上述报文的头部信息,检测出报文预解析完成的上述报文进行过网络层报文解析和传输层报文解析后,可以对报文预解析完成的上述报文进行应用层报文解析。
应当理解的是,在网络体系中,报文的传输和解析过程,需要按照体系结构的层次和协议逐层进行,但是这仅仅是一种按顺序执行,并不代表每层的处理结果会影响下一层的处理结果;例如,本说明书中的网络层报文解析、传输层报文解析和应用层报文解析,可以包括服务器在体系结构的不同层上,对报文中的不同字段进行报文解析,这仅仅表示各层报文解析需要按顺序执行,不代表上一层的报文解析结果会对下一层的报文解析产生影响,下一层的报文解析也不需要依赖上一层报文解析的结果。
例如,业务应用的协议审计功能对应的报文解析引擎,获得了上述报文的源地址和目的地址,并检测出报文预解析完成的上述报文进行过网络层报文解析后,可以对报文预解析完成的上述报文进行传输层报文解析和应用层报文解析,以获得上述报文的源端口、目的端口和传输协议,并对上述报文的内容进行深度识别。
需要说明的是,上述服务器基于报文解析引擎,对报文预解析完成的上述报文进一步的执行应用层报文解析,就可以检测出上述驱动程序采集的报文的具体业务类型以及流量大小等信息,以使应用层上的业务应用可以根据上述每层报文解析的结果,进行对应的业务处理。
在示出的一种实施方式中,上述报文解析引擎根据从上述共享缓冲区中读取的报文预解析完成的报文的头部信息,获得上述报文预解析的结果。
在实际应用中,当上述报文预解析为网络层报文解析时,上述服务器可以根据上述报文解析引擎读取的报文预解析完成的报文的头部信息,获得上述驱动程序采集的报文的源地址(包括源IP和源MAC)和目的地址(包括目的IP和目的MAC),并检测出报文预解析完成的上述报文只进行过网络层报文解析。当上述报文预解析为网络层报文解析和传输层报文解析时,上述服务器可以根据报文预解析完成的上述报文的头部信息,获得上述驱动程序采集的报文的源地址(包括源IP和源MAC)、目的地址(包括目的IP和目的MAC)、源端口、目的端口和传输协议,也就是可以获得上述驱动程序采集的报文的五元组信息,并检测出报文预解析完成的上述报文进行过网络层报文解析和传输层报文解析。
例如,业务应用的协议审计功能对应的报文解析引擎从上述共享缓冲区中读取了一段报文预解析完成的报文,根据报文预解析完成的上述报文的头部信息,只获得了该报文的源地址和目的地址,可以检测出报文预解析完成的上述报文进行过网络层报文解析。
在示出的一种实施方式中,上述报文预解析为网络层报文解析和传输层报文解析时,上述进一步的报文解析为应用层报文解析。在上述驱动程序采集的报文写入上述共享缓冲区之前,上述服务器对上述采集的报文进行了网络层报文解析和传输层报文解析;上述报文解析引擎从上述共享缓冲区中读取第一报文后,只需要对报文预解析完成的上述报文进行应用层报文解析。
例如,服务器对驱动程序从网卡采集的报文进行网络层报文解析和传输层报文解析,并获得了该报文的五元组信息;上述服务器根据上述网络层报文解析的结果,将其封装为报文预解析完成的报文,其中,上述解析获得的五元组信息被封装在报文预解析完成的上述报文的头部信息中。业务应用的入侵检测功能对应的报文解析引擎从上述共享缓冲区中读取了一段报文预解析完成的报文,根据报文预解析完成的上述报文的头部信息,获得了该报文的五元组信息,可以检测出报文预解析完成的上述报文进行过网络层报文解析和传输层报文解析。上述报文解析引擎只需要对上述报文进行应用层报文解析,以对上述报文的内容进行深度识别。
需要说明的是,在上述驱动程序采集的报文写入上述共享缓冲区之前,上述服务器对上述采集的报文进行了网络层报文解析和传输层报文解析,而对应用层来说,同一个报文基于不同协议栈进行网络层报文解析和传输层报文解析的结果,都是该报文的五元组信息;因而不同的报文解析引擎从共享缓冲区读取上述预解析过的报文预解析完成的报文后,只需要再根据对应的协议栈进行不同的应用层报文解析;从而在服务器中多个报文解析引擎运行的场景中,避免对同一报文在不同缓冲区的拷贝被重复进行部分层面的报文解析,实现了多引擎处理场景下报文处理性能的提升。
在示出的另一种实施方式中,报文预解析完成的上述报文可以包括报文头部和报文载荷,此时,上述针对读取到的上述报文进一步的执行应用层报文解析,可以包括:进一步的读取上述报文的报文载荷,针对读取到的上述报文的报文载荷进一步的执行应用层报文解析。
在实际应用中,上述报文预解析为网络层报文解析和传输层报文解析时,服务器已经获得了上述驱动程序采集的报文的五元组信息,并且将上述五元组信息封装到报文预解析完成的上述报文的头部信息中;当上述报文解析引擎从上述共享缓冲区中读取报文预解析完成的报文时,可以从读取的上述报文的头部信息中获取上述报文的五元组信息;上述报文解析引擎可以直接对读取的上述报文的报文载荷进行应用层报文解析。
需要说明的是,上述报文预解析为网络层报文解析和传输层报文解析时,服务器已经获得了上述驱动程序采集的报文的五元组信息,此时上述报文解析引擎只需要根据自身对应的协议栈,对读取的上述报文的报文载荷进行应用层报文解析,就可以检测出上述驱动程序采集的报文的具体业务类型以及流量大小等信息,以使应用层上的业务应用能进行对应的业务处理。
在示出的另一种实施方式中,报文预解析完成的上述报文可以包括报文头部、报文载荷和计数值,其中,上述计数值表示从上述共享缓冲区读取报文预解析完成的上述报文的报文解析引擎的数量。
在实际应用中,当服务器中多个报文解析引擎同时对上述共享缓冲区中的报文预解析完成的报文进行报文处理时,就需要确定上述共享缓冲区中的某段报文预解析完成的报文是否正在被处理,以及何时所有报文解析引擎都结束了对该报文的处理。上述计数值可以表示从上述共享缓冲区读取报文预解析完成的上述报文的报文解析引擎的数量。
需要说明的是,通过在报文预解析完成的上述报文中增加计数值,用于表示从上述共享缓冲区读取报文预解析完成的上述报文的报文解析引擎的数量,从而可以判断上述共享缓冲区中的某段报文预解析完成的报文是否正在被上述报文解析引擎读取调用,以及上述报文解析引擎是否已经结束读取调用,从而在多引擎并发处理的场景下,确定报文预解析完成的上述报文是否可以从上述共享缓冲区移除。
在示出的另一种实施方式中,报文预解析完成的上述报文包括计数值时,基于报文解析引擎从上述共享缓冲区中读取报文预解析完成的上述报文时,上述报文解析方法可以包括:当任一报文解析引擎开始读取上述共享缓冲区中的报文预解析完成的报文时,将报文预解析完成的上述报文对应的计数值加1;当任一报文解析引擎结束读取上述共享缓冲区中的报文预解析完成的报文时,将报文预解析完成的上述报文对应的计数值减1;当任一报文预解析完成的上述报文的计数值减至0时,从上述共享缓冲区移除上述报文。
在实际应用中,上述计数值可以表示从上述共享缓冲区读取报文预解析完成的上述报文的报文解析引擎的数量。当上述计数值不为0时,表示当前有多个报文解析引擎正在读取或调用该计数值对应的报文预解析完成的报文;当某一个报文解析引擎结束读取报文预解析完成的上述报文时,该报文预解析完成的报文对应的计数值减1;当某段报文预解析完成的报文的计数值减少至0时,表示当前所有报文解析引擎已经结束了读取该段报文预解析完成的报文。有新的报文预解析完成的报文需要写入上述共享缓冲区的某块内存时,如果该内存上的报文预解析完成的报文对应的计数值为0,则新的报文预解析完成的报文可以将该段报文预解析完成的报文覆盖;如果该内存上的报文预解析完成的报文对应的计数值不为0,则新的报文预解析完成的报文不能将该段仍在被读取或调用的报文预解析完成的报文覆盖,需要轮询下一块内存。
例如,报文解析引擎调用驱动程序pf_ring的轮询接口进行报文收取,如果从上述共享无锁环形队列中读取到报文预解析完成的报文,则该报文对应的计数值加1,并返回mmap()内存映射后的内存指针,该内存指针指向的内容就是上述被报文解析引擎从共享无锁环形队列中读取的报文预解析完成的报文;上述报文解析引擎收取上述报文完成后,该报文对应的计数值减1;若上述计数值减少至0,则该报文可以被新的报文覆盖。
需要说明的是,当报文预解析完成的报文中包括计数值时,有新的报文预解析完成的报文需要写入上述共享缓冲区的某块内存时,就可以通过上述计数值的取值,判断上述计数值对应的报文预解析完成的报文是否正在被上述报文解析引擎调用,从而确定上述新的报文预解析完成的报文是否可以直接覆盖该内存上原来的报文。
在本说明书的技术方案中,在多个报文解析引擎处理的场景中,报文解析引擎基于服务器的驱动程序采集报文时,该驱动程序为该服务器中的多个报文解析引擎提供共享缓冲区,并且服务器至少对采集的报文进行网络层报文解析后,才基于上述驱动程序将上述至少进行过网络层报文解析的报文写入上述共享缓冲区中。一方面,本说明书中服务器的驱动程序为该服务器中的多个报文解析引擎提供共享缓冲区,可以避免对采集的同一报文多次拷贝,以及可以避免将上述拷贝分别写入不同报文解析引擎对应的缓冲区,从而节约了服务器资源;另一方面,本说明书中服务器对驱动程序采集的报文至少进行网络层报文解析后,才写入共享缓冲区中,不同的报文解析引擎从共享缓冲区读取上述预解析过的报文后,只需要再根据对应的协议栈进行其他层的报文解析,从而在服务器中多个报文解析引擎处理的场景中,避免对同一报文在不同缓冲区的拷贝重复进行部分层的报文解析,从而实现了多引擎处理场景下报文处理性能的提升。
进一步地,在本说明书的技术方案中,当上述驱动程序为pf_ring驱动程序时,上述共享缓冲区为共享无锁环形队列,由于上述无锁环形队列具有“无锁”的特性,当上述服务器中的驱动程序向上述共享无锁环形队列写入报文预解析完成的上述报文和上述报文解析引擎从上述共享无锁环形队列读取报文预解析完成的上述报文同时发生时,写进程与读进程互不影响,相对于有锁机制的缓冲队列,可以避免有锁机制导致的等待时间,从而能够提高服务器进行报文处理的速度。
进一步地,在本说明书的技术方案中,通过在报文预解析完成的上述报文中增加计数值,用于表示从上述共享缓冲区读取报文预解析完成的上述报文的报文解析引擎的数量,在多引擎并发处理的场景下,有新的报文预解析完成的报文需要写入上述共享缓冲区的某块内存时,就可以通过上述计数值的取值,判断上述计数值对应的报文预解析完成的报文是否正在被上述报文解析引擎调用,从而确定上述新的报文预解析完成的报文是否可以直接覆盖该内存上原来的报文。
与上述方法实施例对应地,本说明书还提供了一种报文解析装置的实施例。
请参见图4,图4是一示例性的实施例示出的一种报文解析装置的框图,上述装置应用于服务器,上述服务器搭载了用于采集报文的驱动程序,上述驱动程序为上述服务器中搭载的多个报文解析引擎提供共享缓冲区,上述装置可以包括如下所示单元:
报文预解析单元401,用于对上述驱动程序采集到的报文进行报文预解析,其中,上述报文预解析至少包括网络层报文解析;
写缓冲单元402,用于将报文预解析完成的上述报文写入上述驱动程序提供的共享缓冲区;
读缓冲单元403,用于基于上述报文解析引擎从上述共享缓冲区中读取报文预解析完成的上述报文;
报文解析单元404,用于针对读取到的上述报文进一步的执行报文解析,其中,上述报文解析至少包括应用层报文解析。
在本实施例中,可选的,上述写缓冲单元402,具体用于:将报文预解析的结果作为报文头部,将上述报文作为报文载荷,进行报文封装;将封装后的报文写入上述驱动程序提供的共享缓冲区。
在本实施例中,上述报文预解析包括网络层报文解析和传输层报文解析;上述报文解析包括应用层报文解析。
在本实施例中,上述报文解析包括应用层报文解析时,上述报文解析单元404,具体用于:进一步的读取上述报文的报文载荷,针对读取到的上述报文的报文载荷进一步的执行应用层报文解析。
在本实施例中,上述报文预解析完成的上述报文还包括计数值,上述计数值表示从上述共享缓冲区读取报文预解析完成的上述报文的报文解析引擎的数量。
在本实施例中,上述读缓冲单元403还用于:当任一上述报文解析引擎开始读取上述共享缓冲区中的报文预解析完成的上述报文时,将上述报文预解析完成的上述报文对应的计数值加1;当任一上述报文解析引擎结束读取上述共享缓冲区中的报文预解析完成的上述报文时,将上述报文预解析完成的上述报文对应的计数值减1;当任一上述报文预解析完成的上述报文对应的计数值减至0时,从上述共享缓冲区移除上述报文预解析完成的上述报文。
在本实施例中,上述驱动程序包括pf_ring驱动程序;上述共享缓冲区包括共享无锁环形队列。
此外,本说明书还提供了一种报文解析装置所在的电子设备的实施例。
与上述方法实施例对应地,本说明书还提供了一种报文解析装置的实施例。本说明书的报文解析装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在存储设备的处理器,将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,请参见图5,图5是一示例性的实施例示出的一种报文解析装置所在电子设备的硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例只是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

Claims (10)

1.一种报文解析方法,所述方法应用于服务器,其特征在于,所述服务器搭载了用于采集报文的驱动程序;所述驱动程序为所述服务器中搭载的多个报文解析引擎提供共享缓冲区;所述方法包括:
对所述驱动程序采集到的报文进行报文预解析,其中,所述报文预解析至少包括网络层报文解析;
将报文预解析完成的所述报文写入所述驱动程序提供的共享缓冲区;
基于所述报文解析引擎从所述共享缓冲区中读取报文预解析完成的所述报文;
针对读取到的所述报文进一步的执行报文解析,其中,所述报文解析至少包括应用层报文解析。
2.根据权利要求1所述的方法,其特征在于,所述将报文预解析完成的所述报文写入所述驱动程序提供的共享缓冲区,包括:
将报文预解析的结果作为报文头部,将所述报文作为报文载荷,进行报文封装;
将封装后的报文写入所述驱动程序提供的共享缓冲区。
3.根据权利要求1所述的方法,其特征在于,包括:
所述报文预解析包括网络层报文解析和传输层报文解析;
所述报文解析包括应用层报文解析。
4.根据权利要求3所述的方法,其特征在于,所述针对读取到的所述报文进一步的执行应用层报文解析,包括:
进一步的读取所述报文的报文载荷,针对读取到的所述报文的报文载荷进一步的执行应用层报文解析。
5.根据权利要求4所述的方法,其特征在于,所述报文预解析完成的所述报文还包括计数值,所述计数值表示从所述共享缓冲区读取报文预解析完成的所述报文的报文解析引擎的数量。
6.根据权利要求5所述的方法,其特征在于,所述基于所述报文解析引擎从所述共享缓冲区中读取报文预解析完成的所述报文时,所述方法还包括:
当任一所述报文解析引擎开始读取所述共享缓冲区中的报文预解析完成的所述报文时,将所述报文预解析完成的所述报文对应的计数值加1;
当任一所述报文解析引擎结束读取所述共享缓冲区中的报文预解析完成的所述报文时,将所述报文预解析完成的所述报文对应的计数值减1;
当任一所述报文预解析完成的所述报文对应的计数值减至0时,从所述共享缓冲区移除所述报文预解析完成的所述报文。
7.根据权利要求1所述的方法,其特征在于,包括:
所述驱动程序包括pf_ring驱动程序;
所述共享缓冲区包括共享无锁环形队列。
8.一种报文解析装置,所述装置应用于服务器,其特征在于,所述服务器搭载了用于采集报文的驱动程序;所述驱动程序为所述服务器中搭载的多个报文解析引擎提供共享缓冲区;所述装置包括:
报文预解析单元,用于对所述驱动程序采集到的报文进行报文预解析,其中,所述报文预解析至少包括网络层报文解析;
写缓冲单元,用于将报文预解析完成的所述报文写入所述驱动程序提供的共享缓冲区;
读缓冲单元,用于基于所述报文解析引擎从所述共享缓冲区中读取报文预解析完成的所述报文;
报文解析单元,用于针对读取到的所述报文进一步的执行报文解析,其中,所述报文解析至少包括应用层报文解析。
9.一种电子设备,其特征在于,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行权利要求1至7任一项所述的方法。
10.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现权利要求1至7任一项所述的方法。
CN202011219354.7A 2020-11-04 2020-11-04 一种报文解析方法、装置、电子设备及存储介质 Active CN112532690B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011219354.7A CN112532690B (zh) 2020-11-04 2020-11-04 一种报文解析方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011219354.7A CN112532690B (zh) 2020-11-04 2020-11-04 一种报文解析方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN112532690A true CN112532690A (zh) 2021-03-19
CN112532690B CN112532690B (zh) 2023-03-24

Family

ID=74979640

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011219354.7A Active CN112532690B (zh) 2020-11-04 2020-11-04 一种报文解析方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112532690B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114157467A (zh) * 2021-11-25 2022-03-08 山东科技大学 分布式可切换工控蜜网诱捕方法

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101089829A (zh) * 2007-08-01 2007-12-19 杭州华三通信技术有限公司 一种共享缓存系统及实现方法
CN101453386A (zh) * 2007-12-07 2009-06-10 英业达股份有限公司 网络的封包撷取方法
CN101504617A (zh) * 2009-03-23 2009-08-12 华为技术有限公司 一种基于处理器共享内存的数据发送、接收方法及装置
CN102520936A (zh) * 2011-11-30 2012-06-27 厦门雅迅网络股份有限公司 一种在Android上实现Socket通讯服务共享的方法
CN102651690A (zh) * 2011-02-28 2012-08-29 国际商业机器公司 对共享内存进行控制的方法和装置
CN102693162A (zh) * 2011-12-29 2012-09-26 中国科学技术大学苏州研究院 基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法
CN104092581A (zh) * 2014-06-30 2014-10-08 国家电网公司 智能变电站报文记录与分析系统中报文快速处理方法
CN105453056A (zh) * 2013-09-19 2016-03-30 英特尔公司 用于在多高速缓存环境中管理高速缓冲存储器的方法和装置
US20160335352A1 (en) * 2015-05-14 2016-11-17 Walleye Software, LLC Query dispatch and execution architecture
CN106774277A (zh) * 2017-01-17 2017-05-31 爱普(福建)科技有限公司 一种多虚拟控制器之间的数据共享方法
US20170214612A1 (en) * 2016-01-22 2017-07-27 Red Hat, Inc. Chaining network functions to build complex datapaths
CN107707546A (zh) * 2017-09-29 2018-02-16 江苏农林职业技术学院 一种报文复制方法及支持报文复制功能的新型网络适配器
CN110932998A (zh) * 2019-11-28 2020-03-27 杭州迪普科技股份有限公司 报文处理方法和装置
CN111327645A (zh) * 2018-11-28 2020-06-23 鸿合科技股份有限公司 一种共享网络方法及装置、电子设备
CN111371920A (zh) * 2020-03-16 2020-07-03 广州根链国际网络研究院有限公司 Dns前端解析方法及系统

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101089829A (zh) * 2007-08-01 2007-12-19 杭州华三通信技术有限公司 一种共享缓存系统及实现方法
CN101453386A (zh) * 2007-12-07 2009-06-10 英业达股份有限公司 网络的封包撷取方法
CN101504617A (zh) * 2009-03-23 2009-08-12 华为技术有限公司 一种基于处理器共享内存的数据发送、接收方法及装置
CN102651690A (zh) * 2011-02-28 2012-08-29 国际商业机器公司 对共享内存进行控制的方法和装置
CN102520936A (zh) * 2011-11-30 2012-06-27 厦门雅迅网络股份有限公司 一种在Android上实现Socket通讯服务共享的方法
CN102693162A (zh) * 2011-12-29 2012-09-26 中国科学技术大学苏州研究院 基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法
CN105453056A (zh) * 2013-09-19 2016-03-30 英特尔公司 用于在多高速缓存环境中管理高速缓冲存储器的方法和装置
CN104092581A (zh) * 2014-06-30 2014-10-08 国家电网公司 智能变电站报文记录与分析系统中报文快速处理方法
US20160335352A1 (en) * 2015-05-14 2016-11-17 Walleye Software, LLC Query dispatch and execution architecture
US20170214612A1 (en) * 2016-01-22 2017-07-27 Red Hat, Inc. Chaining network functions to build complex datapaths
CN106774277A (zh) * 2017-01-17 2017-05-31 爱普(福建)科技有限公司 一种多虚拟控制器之间的数据共享方法
CN107707546A (zh) * 2017-09-29 2018-02-16 江苏农林职业技术学院 一种报文复制方法及支持报文复制功能的新型网络适配器
CN111327645A (zh) * 2018-11-28 2020-06-23 鸿合科技股份有限公司 一种共享网络方法及装置、电子设备
CN110932998A (zh) * 2019-11-28 2020-03-27 杭州迪普科技股份有限公司 报文处理方法和装置
CN111371920A (zh) * 2020-03-16 2020-07-03 广州根链国际网络研究院有限公司 Dns前端解析方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114157467A (zh) * 2021-11-25 2022-03-08 山东科技大学 分布式可切换工控蜜网诱捕方法
CN114157467B (zh) * 2021-11-25 2024-06-04 山东科技大学 分布式可切换工控蜜网诱捕方法

Also Published As

Publication number Publication date
CN112532690B (zh) 2023-03-24

Similar Documents

Publication Publication Date Title
US11962518B2 (en) Hardware acceleration techniques using flow selection
CN108900327B (zh) 一种基于dpdk的天文数据采集和实时处理方法
US20200142760A1 (en) Packet processing on a multi-core processor
US8094560B2 (en) Multi-stage multi-core processing of network packets
US8225329B1 (en) Tail synchronized FIFO for fast user space packet access
CN112532538A (zh) 流量的控制方法、装置、电子设备及计算机可读存储介质
US10693787B2 (en) Throttling for bandwidth imbalanced data transfers
US8555374B2 (en) High performance packet processing using a general purpose processor
US20080263554A1 (en) Method and System for Scheduling User-Level I/O Threads
US20060098648A1 (en) Packet transmission device
US20210336883A1 (en) Systems for providing an lpm implementation for a programmable data plane through a distributed algorithm
CN114025018A (zh) 数据处理方法、装置、网络设备及计算机可读存储介质
US9755978B1 (en) Method and system for enforcing multiple rate limits with limited on-chip buffering
CN110096363A (zh) 一种网络事件与进程的关联方法及装置
CN112532690B (zh) 一种报文解析方法、装置、电子设备及存储介质
US20220060419A1 (en) Systems for building data structures with highly scalable algorithms for a distributed lpm implementation
Wang et al. Design and analysis of a robust pipelined memory system
US7675920B1 (en) Method and apparatus for processing network traffic associated with specific protocols
CN115033407A (zh) 一种适用于云计算的采集识别流量的系统和方法
CN114024758A (zh) 流量特征提取方法、系统、存储介质及电子设备
CN110602211B (zh) 一种带异步通知的乱序rdma方法与装置
US7940764B2 (en) Method and system for processing multicast packets
US7603539B2 (en) Systems and methods for multi-frame control blocks
CN116915667B (zh) 网络流量采集方法、装置、电子设备及存储介质
CN117579386B (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