我有一个应用程序libpcap
用作获取数据包的机制,我需要为应用程序的不同部分过滤掉不同的协议。我需要考虑优化,因为流将具有很高的流量(100-400 Mbps)。
我真正想做的是设置实时捕获(无过滤器),然后在捕获后有选择地过滤数据包。这似乎是不可能的(据我所知,bpf 是内置在捕获机制中的)。
如果这确实不可能,还有其他两种方法(我已经想到),我不确定什么会被认为更有效或“更好”:
- 使用自己的过滤器进行多次捕获
- 制作一个转储到 fifo 的捕获(无过滤器),并从这些 fifo 读取其他捕获(使用它们自己的过滤器)