问题描述
我正在开发一些基于python的应用程序(主要是因为可以灵活地进行更改),该应用程序将侦听以太网上的数据,将其保存到数据库(sqlite)并实时显示数据。以太网上的数据是基于 UDP 的,在它之上有一些自定义协议。
我的挑战:
-
我已经有一个 Wireshark 解析器来解析这个自定义协议。但是,我不能像 tshark 这样的工具(该应用程序是基于 MS Windows 的)使用它来限制我如何使用它来存储实时应用程序的数据(该应用程序应运行几个小时)。每次我开始嗅探时,都会创建一个临时文件。如果我想要日志轮换(以便文件大小不变),我不能使用显示过滤器。
-
使用
scapy
- 在 UDP 之上快速实现自定义协议。现在,我对将数据存储到 sqlite 进行了一些测试,发现了一些性能问题,其中似乎并非所有数据包都由 scapy 处理,即,我已经使用 Wireshark 和 scapy 进行了跟踪,并且已经看到使用 scapy 丢失了一些数据包。我查看了每秒数据包的统计数据,发现该接口上可能有 75K 数据包每秒,因为这是监控计算机,它可以查看我网络中的所有流量(我从中需要少于 0.1% 的数据)。
2.a 监控计算机可以有 2 种网络配置:中间有 ERSPAN 协议(即 IP 协议内的 IP 协议,我的数据在整个数据包的最后一部分)或没有它(因此我可以向 scapy 的 sniff
命令添加一些额外的过滤器)。不幸的是,第二个配置尚不可用。
对此有何建议?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)