CN116016295B - 以太网性能监控方法、系统、工控设备以及存储介质 - Google Patents

以太网性能监控方法、系统、工控设备以及存储介质 Download PDF

Info

Publication number
CN116016295B
CN116016295B CN202211615927.7A CN202211615927A CN116016295B CN 116016295 B CN116016295 B CN 116016295B CN 202211615927 A CN202211615927 A CN 202211615927A CN 116016295 B CN116016295 B CN 116016295B
Authority
CN
China
Prior art keywords
data packet
kernel
before entering
protocol stack
xdp
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
Application number
CN202211615927.7A
Other languages
English (en)
Other versions
CN116016295A (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.)
Peng Cheng Laboratory
Original Assignee
Peng Cheng Laboratory
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 Peng Cheng Laboratory filed Critical Peng Cheng Laboratory
Priority to CN202211615927.7A priority Critical patent/CN116016295B/zh
Publication of CN116016295A publication Critical patent/CN116016295A/zh
Application granted granted Critical
Publication of CN116016295B publication Critical patent/CN116016295B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Small-Scale Networks (AREA)

Abstract

本申请公开了一种以太网性能监控方法、系统、工控设备以及存储介质,其以太网性能监控方法包括:通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获;根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库;根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网。本申请为解决现有软硬件结合方案存在的操作繁琐的问题,提出了一种工业以太网现场总线纯软件实时监控方案,实现软件自动抓包及分析,简化操作步骤。

Description

以太网性能监控方法、系统、工控设备以及存储介质
技术领域
本申请涉及网络通信技术领域,尤其涉及一种以太网性能监控方法、系统、工控设备以及存储介质。
背景技术
工业以太网要求数据包传输具备高实时性和可靠性,通常情况下,测试并分析工业现场总线的通信质量需要购买专用硬件网络分析仪。目前,网络分析仪除了价格较为昂贵外,它的操作也较为繁杂,一般分为两个步骤:第一步,将网络分析仪串联到现场网络拓扑结构中进行数据包抓取并保存;第二步,将抓取的数据包传输到电脑上并使用Wireshark等软件工具进行数据包的分析与筛选。
因此,针对现有软硬件结合方案存在的操作繁琐的问题,有必要提出一种简化操作步骤的以太网性能监控解决方案。
发明内容
本申请的主要目的在于提供一种以太网性能监控方法、系统、工控设备以及存储介质,旨在解决现有软硬件结合方案存在的操作繁琐的问题,通过纯软件实时监控工业以太网现场总线传输质量,实现了软件自动抓包及分析,简化操作步骤。
为实现上述目的,本申请提供一种以太网性能监控方法,应用于工业以太网,所述以太网性能监控方法包括:
通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获;
根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库;
根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;
根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网。
可选地,所述性能分析结果包括协议类型、数据包的走向定义、数据流量分析结果和数据包超时结果,所述根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库的步骤包括:
读取所述进入内核协议栈之前的数据包的元数据中的协议偏移地址;
根据所述协议偏移地址判断所述进入内核协议栈之前的数据包的协议类型是否符合当前工业以太网的协议类型;
若符合当前工业以太网的协议类型,则输出第一数据包的走向定义XDP_DROP;
若符合当前工业以太网的协议类型,则获取当前时间点作为所述进入内核协议栈之前的数据包的时间戳并记录到所述内核数据库中;
从所述内核数据库中查找并获取上一个数据包的时间戳和预设的抖动门限值;
根据所述进入内核协议栈之前的数据包的时间戳和所述上一个数据包的时间戳计算得到时间差值,将所述时间差值与所述预设的抖动门限值进行比较;
若所述时间差值小于所述预设的抖动门限值,则输出第二数据包的走向定义XDP_REDIRECT,并控制所述内核数据库中的数据流量计数器加一,得到所述数据流量分析结果;
若所述时间差值大于所述预设的抖动门限值,则控制所述内核数据库中的超时计时器加一,得到所述数据包超时结果。
可选地,所述数据包的处理结果包括数据包丢弃结果,所述根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果的步骤包括:
若所述性能分析结果为所述第一数据包的走向定义XDP_DROP,则将所述进入内核协议栈之前的数据包丢弃,得到所述数据包丢弃结果。
可选地,所述数据包的处理结果还包括输出至应用层的数据包,所述根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果的步骤,还包括:
若所述性能分析结果为所述第二数据包的走向定义XDP_REDIRECT,则将所述进入内核协议栈之前的数据包重定向至内核层;
所述内核层通过预先创建的地址族快速数据路径套接字AF_XDP socket接收所述进入内核协议栈之前的数据包;
将所述进入内核协议栈之前的数据包传递到应用层,得到所述输出至应用层的数据包。
可选地,所述内核层通过预先创建的地址族快速数据路径套接字AF_XDP socket接收所述进入内核协议栈之前的数据包的步骤之前,还包括:
通过所述应用层创建并配置所述AF_XDP socket,具体包括:
创建所述AF_XDP socket并得到文件描述符,其中,所述文件描述符用以组成环形接收缓冲区RX ring和环形发送缓冲区FILL ring;
申请并得到数据缓冲区UMEM的内存空间;
创建并配置所述RX ring和所述FILL ring的内存大小,将所述RX ring与所述AF_XDP socket进行绑定,将所述FILL ring与所述UMEM进行绑定;
将所述UMEM注册到所述AF_XDP socket中;
将所述FILL ring映射到用户态,以供应用层访问并获取到所述UMEM中缓存的信息。
可选地,所述根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网的步骤包括:
将所述输出至应用层的数据包进行解析,得到解析后的数据包并输出至终端显示以供监控所述工业以太网;
读取所述内核数据库中的所述性能分析结果并输出至所述终端显示以供监控所述工业以太网。
本申请实施例还提出一种以太网性能监控系统,应用于工业以太网,所述以太网性能监控系统包括:数据包捕获模块、数据包分析模块、数据包存储模块以及监控模块;
所述数据包捕获模块,用于通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获;所述数据包捕获模块包括网卡驱动层、内核层和应用层,其中,所述网卡驱动层用于将所述XDP程序挂载在所述网卡驱动层接收数据包的路径上,通过所述XDP程序将进入内核协议栈之前的数据包进行捕获;所述内核层用于通过预先创建的地址族快速数据路径套接字AF_XDP socket接收所述进入内核协议栈之前的数据包,以及将所述进入内核协议栈之前的数据包传递到应用层;所述应用层用于创建并配置所述AF_XDP socket;
所述数据包分析模块,用于根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果;根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;
所述数据包存储模块,用于存储捕获的所述进入内核协议栈之前的数据包和所述工业以太网的性能分析结果;所述数据包存储模块包括内核数据库,用于存储所述工业以太网的性能分析结果以及所述内核层与所述应用层之间的控制参数,所述控制参数包括时间戳和抖动门限值;
所述监控模块,用于根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网。
本申请实施例还提出一种工控设备,所述工控设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的以太网性能监控程序,所述以太网性能监控程序被所述处理器执行时实现如上所述的以太网性能监控方法的步骤。
本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有以太网性能监控程序,所述以太网性能监控程序被处理器执行时实现如上所述的以太网性能监控方法的步骤。
本申请实施例提出的以太网性能监控方法、系统、工控设备以及存储介质,应用于工业以太网,通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获;根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库;根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网。通过将包含工业以太网数据包监控功能的XDP程序挂载到网卡驱动层接收数据包的路径上,可以对进入内核协议栈之前的数据包进行捕获,保证工业数据包的完整性与正确性;通过根据数据包分析规则对进入内核协议栈之前的数据包进行性能分析,可以完成数据包的过滤以及流量、传输耗时等状态的分析,以便监控工业以太网现场总线的链路传输质量;通过根据所述性能分析结果处理所述进入内核协议栈之前的数据包,根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网,可以实时显示工业以太网的传输状态,为用户离线分析和实时查看性能分析结果提供一个渠道。基于本申请方案,通过纯软件实时监控工业以太网现场总线传输质量,解决了现有软硬件结合方案存在的操作繁琐的问题,实现了软件自动抓包及分析,简化操作步骤。
附图说明
图1为本申请以太网性能监控装置所属工控设备的功能模块示意图;
图2为本申请以太网性能监控方法第一示例性实施例的流程示意图;
图3为本申请实施例中普通网卡驱动层接收工业数据包的流程示意图;
图4为本申请以太网性能监控方法第二示例性实施例的流程示意图;
图5为本申请以太网性能监控方法第三示例性实施例的流程示意图;
图6为本申请实施例中链路层的数据包的结果示意图;
图7为本申请以太网性能监控方法第四示例性实施例的流程示意图;
图8为本申请实施例中以太网性能监控系统的组成结构示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例的主要解决方案是:通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获;根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库;根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网。通过将包含工业以太网数据包监控功能的XDP程序挂载到网卡驱动层接收数据包的路径上,可以对进入内核协议栈之前的数据包进行捕获,保证工业数据包的完整性与正确性;通过根据数据包分析规则对进入内核协议栈之前的数据包进行性能分析,可以完成数据包的过滤以及流量、传输耗时等状态的分析,以便监控工业以太网现场总线的链路传输质量;通过根据所述性能分析结果处理所述进入内核协议栈之前的数据包,根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网,可以实时显示工业以太网的传输状态,为用户离线分析和实时查看性能分析结果提供一个渠道。基于本申请方案,通过纯软件实时监控工业以太网现场总线传输质量,解决了现有软硬件结合方案存在的操作繁琐的问题,实现了软件自动抓包及分析,简化操作步骤。
本申请实施例涉及的技术术语:
eBPF(extended Berkeley Packet Filter,扩展伯克利包过滤器)是一种可以在Linux内核中运行用户编写的程序,而不需要修改内核代码或加载内核模块的技术。
XDP(eXpress Data Path,快速数据路径)是Linux网络数据路径上内核集成的数据包处理器,具有安全、可编程、高性能的特点。当网卡驱动程序收到数据包时,该处理器执行eBPF程序。这使得XDP程序可以在最早的时间点,对接收到的数据包进行丢弃、修改或允许等操作。
AF_XDP(Address Family eXpress Data Path,地址族快速数据路径)属于address family的一种,AF_XDP socket(即AF_XDP套接字)通过XDP直接将网卡驱动收到的数据包重定向redirect到用户空间,它绕过了内核的网络协议栈,能够用来实现高性能的网络包处理。它可以看作是XDP的用户态接口,应用程序需要事先将定制的XDP程序绑定到对应的网卡上,XDP程序在内核网卡驱动中会预先处理网卡收到的网络报文,它会将报文发送到一个在用户态可以读写的共享内存(UMEM)当中,应用程序可以直接利用AF_XDPsocket来接收数据,在UMEM中完成对网络报文的读写。
本申请实施例为了降低工业以太网实时性能监控的软硬件成本,简化操作步骤,实现动态及时地对总线传输质量进行分析,针对运行Linux操作系统的工业主站Master,提出一种工业以太网现场总线纯软件实时监控方案。
考虑到工业应用对数据包的周期抖动有极为严苛的要求且不容忍丢包,因此,本申请实施例结合eBPF及XDP技术,对于运行Linux操作系统的工业主站,设计了一种软件通用方案:将包含特定策略的工业以太网数据包监控eBPF程序,通过XDP钩子挂载到主站Master的网卡驱动接收数据包的路径上,操作系统内核在链路层立即对其进行抖动分析处理,确认当前网络是否满足工业以太网的实时性能要求,统计并反馈分析结果信息到主站Master的应用程序。对于非工业以太网协议的数据包,如EtherCAT等,则进行丢弃处理,保证工业以太网的安全性;对于工业以太网的实时分析监控则由工业主站Master自动单独处理,而不需要专用网络分析仪及繁琐的手动操作处理。
具体地,参照图1,图1为本申请以太网性能监控装置所属工控设备的功能模块示意图。该以太网性能监控装置可以为独立于工控设备的、能够进行数据包传输与捕获、数据包分析和分析结果显示的装置,其可以通过硬件或软件的形式承载于工控设备上。
在本实施例中,该以太网性能监控装置所属工控设备至少包括输出模块110、处理器120、存储器130以及通信模块140。
存储器130中存储有操作系统以及以太网性能监控程序,以太网性能监控装置可以将挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,捕获的进入内核协议栈之前的数据包,根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析得到的工业以太网的性能分析结果,根据所述性能分析结果处理所述进入内核协议栈之前的数据包得到的数据包的处理结果等信息存储于该存储器130中;输出模块110可为显示屏等。通信模块140可以包括WIFI模块、移动通信模块以及蓝牙模块等,通过通信模块140与外部设备或服务器进行通信。
其中,存储器130中的以太网性能监控程序被处理器执行时实现以下步骤:
通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获;
根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库;
根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;
根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网。
进一步地,存储器130中的以太网性能监控程序被处理器执行时还实现以下步骤:
将所述XDP程序挂载在所述网卡驱动层接收数据包的路径上。
进一步地,存储器130中的以太网性能监控程序被处理器执行时还实现以下步骤:
读取所述进入内核协议栈之前的数据包的元数据中的协议偏移地址;
根据所述协议偏移地址判断所述进入内核协议栈之前的数据包的协议类型是否符合当前工业以太网的协议类型;
若符合当前工业以太网的协议类型,则输出第一数据包的走向定义XDP_DROP;
若符合当前工业以太网的协议类型,则获取当前时间点作为所述进入内核协议栈之前的数据包的时间戳并记录到所述内核数据库中;
从所述内核数据库中查找并获取上一个数据包的时间戳和预设的抖动门限值;
根据所述进入内核协议栈之前的数据包的时间戳和所述上一个数据包的时间戳计算得到时间差值,将所述时间差值与所述预设的抖动门限值进行比较;
若所述时间差值小于所述预设的抖动门限值,则输出第二数据包的走向定义XDP_REDIRECT,并控制所述内核数据库中的数据流量计数器加一,得到所述数据流量分析结果;
若所述时间差值大于所述预设的抖动门限值,则控制所述内核数据库中的超时计时器加一,得到所述数据包超时结果。
进一步地,存储器130中的以太网性能监控程序被处理器执行时还实现以下步骤:
若所述性能分析结果为所述第一数据包的走向定义XDP_DROP,则将所述进入内核协议栈之前的数据包丢弃,得到所述数据包丢弃结果。
进一步地,存储器130中的以太网性能监控程序被处理器执行时还实现以下步骤:
若所述性能分析结果为所述第二数据包的走向定义XDP_REDIRECT,则将所述进入内核协议栈之前的数据包重定向至内核层;
所述内核层通过预先创建的地址族快速数据路径套接字AF_XDP socket接收所述进入内核协议栈之前的数据包;
将所述进入内核协议栈之前的数据包传递到应用层,得到所述输出至应用层的数据包。
进一步地,存储器130中的以太网性能监控程序被处理器执行时还实现以下步骤:
通过所述应用层创建并配置所述AF_XDP socket,具体包括:
创建所述AF_XDP socket并得到文件描述符,其中,所述文件描述符用以组成环形接收缓冲区RX ring和环形发送缓冲区FILL ring;
申请并得到数据缓冲区UMEM的内存空间;
创建并配置所述RX ring和所述FILL ring的内存大小,将所述RX ring与所述AF_XDP socket进行绑定,将所述FILL ring与所述UMEM进行绑定;
将所述UMEM注册到所述AF_XDP socket中;
将所述FILL ring映射到用户态,以供应用层访问并获取到所述UMEM中缓存的信息。
进一步地,存储器130中的以太网性能监控程序被处理器执行时还实现以下步骤:
将所述输出至应用层的数据包进行解析,得到解析后的数据包并输出至终端显示以供监控所述工业以太网;
读取所述内核数据库中的所述性能分析结果并输出至所述终端显示以供监控所述工业以太网。
本实施例通过上述方案,具体通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获;根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库;根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网。通过将包含工业以太网数据包监控功能的XDP程序挂载到网卡驱动层接收数据包的路径上,可以对进入内核协议栈之前的数据包进行捕获,保证工业数据包的完整性与正确性;通过根据数据包分析规则对进入内核协议栈之前的数据包进行性能分析,可以完成数据包的过滤以及流量、传输耗时等状态的分析,以便监控工业以太网现场总线的链路传输质量;通过根据所述性能分析结果处理所述进入内核协议栈之前的数据包,根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网,可以实时显示工业以太网的传输状态,为用户离线分析和实时查看性能分析结果提供一个渠道。基于本申请方案,通过纯软件实时监控工业以太网现场总线传输质量,解决了现有软硬件结合方案存在的操作繁琐的问题,实现了软件自动抓包及分析,简化操作步骤。
基于上述工控设备架构但不限于上述架构,提出本申请方法实施例。
参照图2,图2为本申请以太网性能监控方法第一示例性实施例的流程示意图。本实施例方法的执行主体可以是一种以太网性能监控装置,也可以是一种以太网性能监控工控设备或服务器,本实施例以以太网性能监控装置进行举例,该以太网性能监控装置可以集成在具有数据处理功能的智能手机、平板电脑等工控设备上。所述以太网性能监控方法应用于工业以太网,其方法包括:
步骤S10,通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获。
具体地,通过预先挂载到网卡驱动层接收数据包的路径上的快速数据路径程序,即XDP程序,将即将进入内核协议栈之前的数据包进行捕获,其中,该XDP程序为包含特定策略的工业以太网数据包监控eBPF程序。
需要说明的是,普通的网卡驱动层接收工业数据包的过程,如图3所示,具体可以包括:①网卡驱动层通过一致性DMA映射的方式创建接收环形描述符;
②网卡驱动层给每一个接收环形描述符分配一个数据缓冲区,并建立流式DMA的映射,将映射后的数据缓冲区地址保存在对应的接收环形描述符中;
③网卡硬件接收到数据包,将该数据包保存在硬件接收队列中;
④DMA控制器找出可以使用的接收环形描述符并将硬件接收队列中的数据包复制到接收环形描述符对应的数据缓存区中;
⑤在DMA控制器完成数据复制后,网卡硬件通过硬中断通知中央处理器CPU从数据缓存区中取数据,CPU执行硬中断函数;
⑥在硬中断函数中,中断被禁止,开启NAPI进行软中断收包程序;
⑦通过内核线程ksoftirqd执行软中断函数net_rx_action(),从接收环形描述符对应的数据缓存区中拷贝数据,并通过netif_receive_skb()函数将拷贝的数据送进内核协议栈。
在本实施例中,为满足工业以太网高精度要求,相比于普通的网卡驱动层接收工业数据包的过程,本申请实施例方案通过在上述步骤⑦中挂载XDP程序对即将进入内核协议栈之前的数据包进行捕获。
步骤S20,根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库。
具体地,根据XDP程序中的数据包分析规则对捕获到的进入内核协议栈之前的数据包进行性能分析,得到工业以太网的性能分析结果。其中,数据包分析规则的本质是XDP程序中的逻辑代码,数据包分析规则可以根据用户的需求进行自定义设置,其规则的条数也可以进行自定义增加或减少。可选地,所述性能分析结果可以包括但不限于数据包的走向定义、数据包流量分析和数据包传输耗时等。示例性地,XDP程序中对数据包进行性能分析后返回的数据包的走向定义类型可如下表一所示:
数据包的走向定义 描述
XDP_DROP 数据包被丢弃
XDP_PASS 数据包送到内核协议栈
XDP_REDIRECT 主要将数据包重定向到指定的套接字
表一:数据包的走向定义类型
其中,当XDP程序的返回值是XDP_DROP时,表示要将这个数据包丢弃;当XDP程序的返回值是XDP_PASS时,表示要将这个数据包送到内核协议栈;当XDP程序的返回值是XDP_REDIRECT时,表示要将这个数据包重定向到指定的套接字中。
然后,将得到的工业以太网的性能分析结果存储至内核数据库中。
步骤S30,根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;
步骤S40,根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网。
具体地,根据得到的性能分析结果对进行内核协议栈之前的数据包进行相应处理,得到数据包的处理结果,如数据包解析内容、数据包丢弃等。然后,根据得到的性能分析结果和数据包的处理结果对工业以太网进行监控。可选地,将工业以太网的性能分析结果和数据包的处理结果输出至终端显示,以供用户监控所述工业以太网。
本实施例通过上述方案,具体通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获;根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库;根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网。通过将包含工业以太网数据包监控功能的XDP程序挂载到网卡驱动层接收数据包的路径上,可以对进入内核协议栈之前的数据包进行捕获,保证工业数据包的完整性与正确性;通过根据数据包分析规则对进入内核协议栈之前的数据包进行性能分析,可以完成数据包的过滤以及流量、传输耗时等状态的分析,以便监控工业以太网现场总线的链路传输质量;通过根据所述性能分析结果处理所述进入内核协议栈之前的数据包,根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网,可以实时显示工业以太网的传输状态,为用户离线分析和实时查看性能分析结果提供一个渠道。基于本申请方案,通过纯软件实时监控工业以太网现场总线传输质量,解决了现有软硬件结合方案存在的操作繁琐的问题,实现了软件自动抓包及分析,简化操作步骤。
参照图4,图4为本申请以太网性能监控方法第二示例性实施例的流程示意图。基于上述图2所示的实施例,在本实施例中,在步骤S10,通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获之前,所述以太网性能监控方法还可以包括:
步骤S01,将所述XDP程序挂载在所述网卡驱动层接收数据包的路径上。
具体地,将包含特定策略的工业以太网数据包监控eBPF程序,即XDP程序,通过XDP钩子挂载到网卡驱动层接收数据包的路径上。
本实施例通过结合eBPF及XDP技术,实现对普通以太网卡的驱动改造,以便支持XDP特性。通过挂载的XDP程序对数据包进行拦截捕获,相比于使用专用硬件网络分析仪抓取数据包,实现了软件自动抓包并保存,在简化操作步骤的同时,降低实时工业以太网监控成本。
参照图5,图5为本申请以太网性能监控方法第三示例性实施例的流程示意图。基于上述图2或图4所示的实施例,在本实施例中,所述性能分析结果可以包括协议类型、数据包的走向定义、数据流量分析结果和数据包超时结果,上述步骤S20,根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库可以包括:
步骤S201,读取所述进入内核协议栈之前的数据包的元数据中的协议偏移地址。
在本实施例中,首先读取进入内核协议栈之前的数据包的元数据中的协议偏移地址。需要说明的是,XDP程序运行在网卡驱动层时,其面对的是链路层的数据包,也就是MAC帧。如图6所示,XDP程序的入口参数有一个属性data,其记录的是当前MAC帧的起始地址,还有一个属性data_end,其记录的是MAC帧的末尾地址,又称偏移地址。通过data所指地址加上偏移地址,就可以访问此数据包的所有内容,如协议类型、源MAC地址等。
步骤S202,根据所述协议偏移地址判断所述进入内核协议栈之前的数据包的协议类型是否符合当前工业以太网的协议类型。
具体地,根据读取到的协议偏移地址判断该进入内核协议栈之间的数据包的协议类型是否符合当前工业以太网的协议类型,即判断该进入内核协议栈之间的数据包是否属于当前工业以太网的协议数据包。
可选地,若不符合当前工业以太网的协议类型,则执行步骤S203,输出第一数据包的走向定义XDP_DROP。
可选地,若符合当前工业以太网的协议类型,则执行步骤S204,获取当前时间点作为所述进入内核协议栈之前的数据包的时间戳并记录到所述内核数据库中,其中,所述时间戳为纳秒级精度时间戳。
具体地,若进入内核协议栈之间的数据包的协议类型符合当前工业以太网的协议类型,则获取当前时间点作为所述进入内核协议栈之前的数据包的时间戳,并将所述进入内核协议栈之前的数据包的时间戳记录到内核数据库中。可选地,获取当前时间点的方法可以包括:通过Linux内核API函数bpf_ktime_get_ns()获取当前时间点。
步骤S205,从所述内核数据库中查找并获取上一个数据包的时间戳和预设的抖动门限值。
具体地,从内核数据库中查找并获取预先存储的上一个数据包的时间戳和预设的抖动门限值。可选地,查找并获取上一个数据包的时间戳和预设的抖动门限值的方法可以包括:通过Linux内核API函数bpf_map_lookup_elem()从内核数据库map中查找并获取上一个数据包的时间戳和预设的抖动门限值。
步骤S206,根据所述进入内核协议栈之前的数据包的时间戳和所述上一个数据包的时间戳计算得到时间差值,将所述时间差值与所述预设的抖动门限值进行比较;
若所述时间差值小于所述预设的抖动门限值,则执行步骤S2061,输出第二数据包的走向定义XDP_REDIRECT,并控制所述内核数据库中的数据流量计数器加一,得到数据流量分析结果;
若所述时间差值大于所述预设的抖动门限值,则执行步骤S2062,控制所述内核数据库中的超时计时器加一,得到数据包超时结果。
具体地,根据该进入内核协议栈之前的数据包的时间戳和上一个数据包的时间戳进行计算,得到两者的时间差值,然后将该时间差值与获取到的预设的抖动门限值进行比较。可选地,若该时间差值小于预设的抖动门限值,即该工业以太网的数据包传输效率满足高实时性要求,则输出第二数据包的走向定义XDP_REDIRECT,将该进入内核协议栈之前的数据包传递到内核层中进行处理,并控制内核数据库中的数据流量计数器加一,得到数据流量分析结果。可选地,若该时间差值大于预设的抖动门限值,即该工业以太网的数据包传输效率较慢,则控制内核数据库中的超时计数器加一,得到数据包超时结果。此时,用户或可考虑更新抖动门限值。
本实施例方案通过在链路层阶段给工业以太网现场总线数据包添加纳秒级精度时间戳,计算与上一个工以太网数据包接收时间戳之间的时间差值,并与设定的抖动门限值进行抖动分析处理,确认当前网络是否满足工业以太网的实时性能要求,以此判断工业以太网现场总线的链路层通信质量。
进一步地,基于上述图5所示的实施例,在本实施例中,所述数据包的处理结果可以包括数据包丢弃结果,上述步骤S30,根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果可以包括:
若所述性能分析结果为所述第一数据包的走向定义XDP_DROP,则将所述进入内核协议栈之前的数据包丢弃,得到所述数据包丢弃结果。
本实施例通过将非工业以太网协议的数据包进行丢弃处理,保证了工业通信网络本身的安全性和可靠性。
进一步地,作为一种实施方式,所述数据包的处理结果还可以包括输出至应用层的数据包,上述步骤S30,根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果还可以包括:
步骤S601,若所述性能分析结果为所述第二数据包的走向定义XDP_REDIRECT,则将所述进入内核协议栈之前的数据包重定向至内核层;
步骤S602,所述内核层通过预先创建的地址族快速数据路径套接字AF_XDPsocket接收所述进入内核协议栈之前的数据包;
步骤S603,将所述进入内核协议栈之前的数据包传递到应用层,得到所述输出至应用层的数据包。
在本实施例中,若性能分析结果为第二数据包的走向定义XDP_REDIRECT,则按照第二数据包的走向定义XDP_REDIRECT的设定将进入内核协议栈之前的数据包重定向至内核层;内核层通过预先创建的地址族快速数据路径套接字,即AF_XDP socket,接收来自网卡驱动层根据第二数据包的走向定义XDP_REDIRECT进行重定向的进入内核协议栈之前的数据包;然后将该进入内核协议栈之前的数据包传递至应用层,得到输出至应用层的数据包。
本实施例通过AF_XDP socket接收来自网卡驱动层的数据包,并将数据包从内核层传递至应用层,可以跳过内核层的TC、NetFliter以及内核协议栈,大大增加了抓取数据包的时效性。
进一步地,作为一种实施方式,参考图7,图7为本申请以太网性能监控方法第四示例性实施例的流程示意图,在上述步骤S602,所述内核层通过预先创建的地址族快速数据路径套接字AF_XDP socket接收所述进入内核协议栈之前的数据包之前,还可以包括:
步骤S600,通过所述应用层创建并配置所述AF_XDP socket。
本实施例以步骤S600在步骤S601之前实施;在其他实施例中,步骤S600可以在步骤S601与步骤S602之间实施,也可以在步骤S10之前实施,还可以在步骤S10与步骤S30之间实施。
相比上述图7所示的实施例,本实施例还包括创建并配置AF_XDP socket的方案。
具体地,通过所述应用层创建并配置所述AF_XDP socket的步骤可以包括:
步骤S6001,创建所述AF_XDP socket并得到文件描述符,其中,所述文件描述符用以组成环形接收缓冲区RX ring和环形发送缓冲区FILL ring。
具体地,应用层使用socket()接口创建AF_XDP socket并得到文件描述符。其中,文件描述符可以用来组成环形接收缓冲区RX ring和环形发送缓冲区FILL ring。其中,组成RX ring的每个文件描述符xdp_desc包含两个变量:帧地址addr和数据包长度len。
步骤S6002,申请并得到数据缓冲区UMEM的内存空间。
具体地,为数据缓冲区UMEM申请并得到内存空间。UMEM是一个虚拟连续内存空间,其内部被等分成若干块。一个UMEM和一个网络设备、网络设备对应的队列ID号一一对应。新建的UMEM可以通过调用bind()系统与网络设备、网络设备的队列进行绑定。可选地,应用层可通过malloc/mmap/hugepages等函数申请内存空间作为UMEM。可通过XDP_UMEM_REG套接字选项,创建和配置(内部块尺寸,头部空间,起始地址和大小)UMEM。
步骤S6003,创建并配置所述RX ring和所述FILL ring的内存大小,将所述RXring与所述AF_XDP socket进行绑定,将所述FILL ring与所述UMEM进行绑定。
具体地,创建并配置RX ring和FILL ring的内存大小。可选地,通过setsockopts函数的XDP_RX_RING选项来向系统创建RX ring和配置其内存大小。然后,将RX ring与AF_XDP socket进行绑定,以使AF_XDP socket可以通过RX ring接收数据包。可选地,通过setsockopts函数向系统创建FILL ring和配置其内存大小。然后,将FILL ring与UMEM进行绑定,以使应用层可以使用FILL ring发出地址给内核层,让内核层用接收到的数据包对UMEM进行填充。
此外,RX ring中的文件描述符通过帧地址(xdp_desc中的addr)来对UMEM进行引用。帧地址只是相对整个UMEM区域的一个偏移量。当应用层使用FILL ring发出地址给内核层,让内核层用接收到的数据包对UMEM进行填充后,这个帧的引用就会出现在RX ring中,然后应用层通过RX ring接收到这个数据包。
步骤S6004,将所述UMEM注册到所述AF_XDP socket中。
可选地,通过setsockopts函数将配置好的UMEM注册到AF_XDP socket中。
步骤S6005,将所述FILL ring映射到用户态,以供应用层访问并获取到所述UMEM中缓存的信息。
可选地,将通过调用mmap()系统将FILL ring映射到用户态,以供应用层可以访问并获取到UMEM中缓存的信息。此外,RX ring可以通过调用mmap()系统来做到应用层和内核层这个内存区域,因此内核层往RX ring里填充数据的引用,应用层就可以从RX ring中获得数据的引用,从而将读取到内核层收到的网络数据包的具体内容。
本实施例通过上述方案,通过AF_XDP socket直接操作环形缓冲区来实现数据包的收发,而不再通过send()/recv()等函数实现数据包的接收,可大大提高性能,满足工业应用对性能的要求。
进一步地,基于上述实施例,在本实施例中,上述步骤S40,根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网可以包括:
将所述输出至应用层的数据包进行解析,得到解析后的数据包并输出至终端显示以供监控所述工业以太网;
具体地,当进入内核协议栈之前的数据包传递到应用层,应用层通过RX ring收取到数据包内容后,得到输出至应用层的数据包,将该输出至应用层的数据包进行解析得到解析后的数据包并输出至终端显示以供监控工业以太网。可选地,通过Python的dpkt库按照协议来对输出至应用层的数据包进行解析,输出原始数据包的十六进制格式内容后,通过print将该内容输出到终端显示以供监控所述工业以太网。可选地,通过Python的dpkt库的pcap模块将输出至应用层的数据包写入到pcap格式文件中,通过Wireshark等工具来对pcap格式文件进行图像化的数据包解析并输出到终端显示以供监控所述工业以太网。
读取所述内核数据库中的所述性能分析结果并输出至所述终端显示以供监控所述工业以太网。
具体地,读取内核数据库中的性能分析结果并输出至终端显示以供监控所述工业以太网,其中,所述性能分析结果可以包括但不限于协议类型、数据包的走向定义、数据流量分析结果和数据包超时结果等。
本实施例通过上述方案,具体通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获;根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库;根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网。通过将包含工业以太网数据包监控功能的XDP程序挂载到网卡驱动层接收数据包的路径上,可以对进入内核协议栈之前的数据包进行捕获,保证工业数据包的完整性与正确性;通过根据数据包分析规则对进入内核协议栈之前的数据包进行性能分析,可以完成数据包的过滤以及流量、传输耗时等状态的分析,以便监控工业以太网现场总线的链路传输质量;通过根据所述性能分析结果处理所述进入内核协议栈之前的数据包,根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网,可以实时显示工业以太网的传输状态,为用户离线分析和实时查看性能分析结果提供一个渠道。基于本申请方案,通过纯软件实时监控工业以太网现场总线传输质量,解决了现有软硬件结合方案存在的操作繁琐的问题,实现了软件自动抓包及分析,简化操作步骤。
此外,本申请实施例还提出一种以太网性能监控系统,应用于工业以太网,参考图8,图8为本申请实施例中以太网性能监控系统的组成结构示意图,所述以太网性能监控系统包括:数据包捕获模块、数据包分析模块、数据包存储模块以及监控模块;
所述数据包捕获模块,用于通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获;所述数据包捕获模块包括网卡驱动层、内核层和应用层,其中,所述网卡驱动层用于将所述XDP程序挂载在所述网卡驱动层接收数据包的路径上,通过所述XDP程序将进入内核协议栈之前的数据包进行捕获;所述内核层用于通过预先创建的地址族快速数据路径套接字AF_XDP socket接收所述进入内核协议栈之前的数据包,以及将所述进入内核协议栈之前的数据包传递到应用层;所述应用层用于创建并配置所述AF_XDP socket;
所述数据包分析模块,用于根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果;根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;
所述数据包存储模块,用于存储捕获的所述进入内核协议栈之前的数据包和所述工业以太网的性能分析结果;所述数据包存储模块包括内核数据库,用于存储所述工业以太网的性能分析结果以及所述内核层与所述应用层之间的控制参数,所述控制参数包括时间戳和抖动门限值;
所述监控模块,用于根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网。
本实施例实现以太网性能监控的原理及实施过程,请参照上述各实施例,在此不再一一赘述。
此外,本申请实施例还提出一种工控设备,所述工控设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的以太网性能监控程序,所述以太网性能监控程序被所述处理器执行时实现如上所述的以太网性能监控方法的步骤。
由于本以太网性能监控程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
此外,本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有以太网性能监控程序,所述以太网性能监控程序被处理器执行时实现如上所述的以太网性能监控方法的步骤。
由于本以太网性能监控程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
相比现有技术,本申请实施例提出的以太网性能监控方法、系统、工控设备以及存储介质,应用于工业以太网,通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获;根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库;根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网。通过将包含工业以太网数据包监控功能的XDP程序挂载到网卡驱动层接收数据包的路径上,可以对进入内核协议栈之前的数据包进行捕获,保证工业数据包的完整性与正确性;通过根据数据包分析规则对进入内核协议栈之前的数据包进行性能分析,可以完成数据包的过滤以及流量、传输耗时等状态的分析,以便监控工业以太网现场总线的链路传输质量;通过根据所述性能分析结果处理所述进入内核协议栈之前的数据包,根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网,可以实时显示工业以太网的传输状态,为用户离线分析和实时查看性能分析结果提供一个渠道。基于本申请方案,通过纯软件实时监控工业以太网现场总线传输质量,解决了现有软硬件结合方案存在的操作繁琐的问题,实现了软件自动抓包及分析,简化操作步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台工控设备执行本申请每个实施例的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (7)

1.一种以太网性能监控方法,应用于工业以太网,其特征在于,所述以太网性能监控方法包括:
通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获;
根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库;
根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;
根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网;
所述性能分析结果包括协议类型、数据包的走向定义、数据流量分析结果和数据包超时结果,所述根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果并存储至内核数据库的步骤包括:
读取所述进入内核协议栈之前的数据包的元数据中的协议偏移地址;
根据所述协议偏移地址判断所述进入内核协议栈之前的数据包的协议类型是否符合当前工业以太网的协议类型;
若符合当前工业以太网的协议类型,则输出第一数据包的走向定义XDP_DROP;
若符合当前工业以太网的协议类型,则获取当前时间点作为所述进入内核协议栈之前的数据包的时间戳并记录到所述内核数据库中;
从所述内核数据库中查找并获取上一个数据包的时间戳和预设的抖动门限值;
根据所述进入内核协议栈之前的数据包的时间戳和所述上一个数据包的时间戳计算得到时间差值,将所述时间差值与所述预设的抖动门限值进行比较;
若所述时间差值小于所述预设的抖动门限值,则输出第二数据包的走向定义XDP_REDIRECT,并控制所述内核数据库中的数据流量计数器加一,得到所述数据流量分析结果;
若所述时间差值大于所述预设的抖动门限值,则控制所述内核数据库中的超时计时器加一,得到所述数据包超时结果;
所述数据包的处理结果包括数据包丢弃结果,所述根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果的步骤包括:
若所述性能分析结果为所述第一数据包的走向定义XDP_DROP,则将所述进入内核协议栈之前的数据包丢弃,得到所述数据包丢弃结果;
所述数据包的处理结果还包括输出至应用层的数据包,所述根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果的步骤,还包括:
若所述性能分析结果为所述第二数据包的走向定义XDP_REDIRECT,则将所述进入内核协议栈之前的数据包重定向至内核层;
所述内核层通过预先创建的地址族快速数据路径套接字AF_XDP socket接收所述进入内核协议栈之前的数据包;
将所述进入内核协议栈之前的数据包传递到应用层,得到所述输出至应用层的数据包。
2.如权利要求1所述的以太网性能监控方法,其特征在于,所述通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获的步骤之前,包括:
将所述XDP程序挂载在所述网卡驱动层接收数据包的路径上。
3.如权利要求1所述的以太网性能监控方法,其特征在于,所述内核层通过预先创建的地址族快速数据路径套接字AF_XDP socket接收所述进入内核协议栈之前的数据包的步骤之前,还包括:
通过所述应用层创建并配置所述AF_XDP socket,具体包括:
创建所述AF_XDP socket并得到文件描述符,其中,所述文件描述符用以组成环形接收缓冲区RX ring和环形发送缓冲区FILL ring;
申请并得到数据缓冲区UMEM的内存空间;
创建并配置所述RX ring和所述FILL ring的内存大小,将所述RX ring与所述AF_XDPsocket进行绑定,将所述FILL ring与所述UMEM进行绑定;
将所述UMEM注册到所述AF_XDP socket中;
将所述FILL ring映射到用户态,以供应用层访问并获取到所述UMEM中缓存的信息。
4.如权利要求3所述的以太网性能监控方法,其特征在于,所述根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网的步骤包括:
将所述输出至应用层的数据包进行解析,得到解析后的数据包并输出至终端显示以供监控所述工业以太网;
读取所述内核数据库中的所述性能分析结果并输出至所述终端显示以供监控所述工业以太网。
5.一种以太网性能监控系统,其特征在于,应用于工业以太网,所述以太网性能监控系统包括:数据包捕获模块、数据包分析模块、数据包存储模块以及监控模块;
所述数据包捕获模块,用于通过挂载在网卡驱动层接收数据包的路径上的快速数据路径XDP程序,将进入内核协议栈之前的数据包进行捕获;所述数据包捕获模块包括网卡驱动层、内核层和应用层,其中,所述网卡驱动层用于将所述XDP程序挂载在所述网卡驱动层接收数据包的路径上,通过所述XDP程序将进入内核协议栈之前的数据包进行捕获;所述内核层用于通过预先创建的地址族快速数据路径套接字AF_XDP socket接收所述进入内核协议栈之前的数据包,以及将所述进入内核协议栈之前的数据包传递到应用层;所述应用层用于创建并配置所述AF_XDP socket;
所述数据包分析模块,用于根据数据包分析规则对所述进入内核协议栈之前的数据包进行性能分析,得到所述工业以太网的性能分析结果;根据所述性能分析结果处理所述进入内核协议栈之前的数据包,得到数据包的处理结果;
所述性能分析结果包括协议类型、数据包的走向定义、数据流量分析结果和数据包超时结果,所述数据包分析模块还用于读取所述进入内核协议栈之前的数据包的元数据中的协议偏移地址;根据所述协议偏移地址判断所述进入内核协议栈之前的数据包的协议类型是否符合当前工业以太网的协议类型;若符合当前工业以太网的协议类型,则输出第一数据包的走向定义XDP_DROP;若符合当前工业以太网的协议类型,则获取当前时间点作为所述进入内核协议栈之前的数据包的时间戳并记录到内核数据库中;从所述内核数据库中查找并获取上一个数据包的时间戳和预设的抖动门限值;根据所述进入内核协议栈之前的数据包的时间戳和所述上一个数据包的时间戳计算得到时间差值,将所述时间差值与所述预设的抖动门限值进行比较;若所述时间差值小于所述预设的抖动门限值,则输出第二数据包的走向定义XDP_REDIRECT,并控制所述内核数据库中的数据流量计数器加一,得到所述数据流量分析结果;若所述时间差值大于所述预设的抖动门限值,则控制所述内核数据库中的超时计时器加一,得到所述数据包超时结果;
所述数据包存储模块,用于存储捕获的所述进入内核协议栈之前的数据包和所述工业以太网的性能分析结果;所述数据包存储模块包括内核数据库,用于存储所述工业以太网的性能分析结果以及所述内核层与所述应用层之间的控制参数,所述控制参数包括时间戳和抖动门限值;
所述数据包的处理结果包括数据包丢弃结果,若所述性能分析结果为所述第一数据包的走向定义XDP_DROP,则所述数据包存储模块还用于将所述进入内核协议栈之前的数据包丢弃,得到所述数据包丢弃结果;
所述数据包的处理结果还包括输出至应用层的数据包,若所述性能分析结果为所述第二数据包的走向定义XDP_REDIRECT,则所述数据包存储模块还用于将所述进入内核协议栈之前的数据包重定向至内核层;所述内核层通过预先创建的地址族快速数据路径套接字AF_XDP socket接收所述进入内核协议栈之前的数据包;将所述进入内核协议栈之前的数据包传递到应用层,得到所述输出至应用层的数据包;
所述监控模块,用于根据所述性能分析结果和所述数据包的处理结果监控所述工业以太网。
6.一种工控设备,其特征在于,所述工控设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的以太网性能监控程序,所述以太网性能监控程序被所述处理器执行时实现如权利要求1-4中任一项所述的以太网性能监控方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有以太网性能监控程序,所述以太网性能监控程序被处理器执行时实现如权利要求1-4中任一项所述的以太网性能监控方法的步骤。
CN202211615927.7A 2022-12-14 2022-12-14 以太网性能监控方法、系统、工控设备以及存储介质 Active CN116016295B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211615927.7A CN116016295B (zh) 2022-12-14 2022-12-14 以太网性能监控方法、系统、工控设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211615927.7A CN116016295B (zh) 2022-12-14 2022-12-14 以太网性能监控方法、系统、工控设备以及存储介质

Publications (2)

Publication Number Publication Date
CN116016295A CN116016295A (zh) 2023-04-25
CN116016295B true CN116016295B (zh) 2024-04-09

Family

ID=86034570

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211615927.7A Active CN116016295B (zh) 2022-12-14 2022-12-14 以太网性能监控方法、系统、工控设备以及存储介质

Country Status (1)

Country Link
CN (1) CN116016295B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117650987A (zh) * 2023-12-01 2024-03-05 上海勃傲自动化系统有限公司 以太网工业总线分析仪

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017000593A1 (zh) * 2015-06-30 2017-01-05 中兴通讯股份有限公司 报文处理方法及装置
CN114513383A (zh) * 2020-11-16 2022-05-17 沈阳中科数控技术股份有限公司 基于原始套接字的实时以太网现场总线数据包处理方法
CN114640716A (zh) * 2022-05-11 2022-06-17 军事科学院系统工程研究院网络信息研究所 一种基于快速网络路径的云网络缓存加速系统和方法
CN115396528A (zh) * 2022-08-17 2022-11-25 上海哔哩哔哩科技有限公司 基于协议族的quic数据传输方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017000593A1 (zh) * 2015-06-30 2017-01-05 中兴通讯股份有限公司 报文处理方法及装置
CN114513383A (zh) * 2020-11-16 2022-05-17 沈阳中科数控技术股份有限公司 基于原始套接字的实时以太网现场总线数据包处理方法
CN114640716A (zh) * 2022-05-11 2022-06-17 军事科学院系统工程研究院网络信息研究所 一种基于快速网络路径的云网络缓存加速系统和方法
CN115396528A (zh) * 2022-08-17 2022-11-25 上海哔哩哔哩科技有限公司 基于协议族的quic数据传输方法及装置

Also Published As

Publication number Publication date
CN116016295A (zh) 2023-04-25

Similar Documents

Publication Publication Date Title
CN103346974A (zh) 一种业务流程的控制方法及网络设备
CN116016295B (zh) 以太网性能监控方法、系统、工控设备以及存储介质
CN112261094B (zh) 一种报文处理方法及代理服务器
CN108696523B (zh) 一种通话服务的响应方法及设备
CN111737622B (zh) 一种订阅行情信息流的方法及装置
CN111294235A (zh) 数据处理方法、装置、网关及可读存储介质
CN110398985B (zh) 一种分布式自适应无人机测控系统及方法
WO2020206849A1 (zh) 一种处理带vlan tag的dhcp数据的方法及系统
CN110830759B (zh) 智能应用部署的方法、装置和系统
CN112637081A (zh) 带宽限速的方法及装置
CN112422485B (zh) 一种传输控制协议的通信方法及装置
CN112688924A (zh) 网络协议分析系统
CN114253792A (zh) 日志跟踪方法、装置、设备和存储介质
US20070002860A1 (en) Method and system for a digital home network trace and debug tool
CN114780353B (zh) 一种文件日志监控方法、系统及计算设备
CN108289165B (zh) 一种基于手机控制相机的实现方法、装置及终端设备
CN115665057A (zh) 数据处理方法、装置、非易失性存储介质及计算机设备
WO2017193814A1 (zh) 一种业务链生成方法及系统
CN112039801B (zh) 设置ip信息的方法、系统和代理服务器
CN115033407A (zh) 一种适用于云计算的采集识别流量的系统和方法
CN112698829B (zh) 异常资源的定位方法和装置、存储介质及电子设备
CN111125493B (zh) 一种基于协议无感知转发的高速数据查询系统及方法
CN114979058A (zh) 一种can多邮箱复用处理方法及系统
CN107171824B (zh) 一种终端的wifi断线处理方法、终端及存储装置
CN113055493A (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