我正在尝试将数据包捕获文件存储到数据库中,而且我遇到了性能问题。
以下是我的一些目标(按优先顺序排列) 1)将单个数据包帧存储在数据库中,并且至少能够使用它们的时间戳来搜索它们 2)收到数据包捕获(比如说,每秒至少几百个数据包的速率) 3)过滤和搜索数据包的模式(大小,持续时间,tcp或udp等)
起初,我认为我最好使用像InfluxDB这样的时间序列数据库,但我意识到我需要搜索除时间之外的字段,这使得效率降低。然后,我尝试使用tshark将所有字段解析为数据包转储xml文件(pdml),然后将它们存储到NoSQL数据库(elasticsearch)中,但事实证明这非常慢。
这是我的问题: 1)用于存储数据包捕获数据的有效数据库选项有哪些?我最好使用SQL或NoSQL数据库吗?
2)如何将单个数据包保存到数据库?我无法从命令行找到从tshark,bro,snort或其他数据包分析器获取单个数据包的方法吗?
3)是否还有其他选项可以将数据包解析为有用的数据库格式?我想用tshark提取更少的字段;我想我不需要所有这些。
任何帮助,想法或想法都会很棒。感谢。