gpt4 book ai didi

linux - pcap 的替代品 (Linux)

转载 作者:IT王子 更新时间:2023-10-29 01:10:33 24 4
gpt4 key购买 nike

在 Linux 路由器上,我编写了一个 C 程序,它使用 pcap 获取 IP header 和数据包的长度。这样我就可以收集统计数据并根据 IP 测量带宽。挺整洁的。 :-)

现在流量和用户数量都在增长,旧程序开始挣扎。也就是说,路由器很难处理大量的数据包。在“黄金时段”总共每秒超过 50000 个数据包。

程序本身已经过优化。我不想炫耀,但我相信它已经尽善尽美了。它读取 IP header 和数据包长度。然后它将 IP 转换为索引(只是一个简单的减法),并将数据包的长度存储(累加)在一个数组中。它时不时地(实际上是一个 SIGALRM)将数组存储在 MySQL 数据库中。

我的问题是:有没有其他方法可以接入以太网设备以获得比 pcap “更便宜”的比特流?

我当然可以修改以太网驱动程序以包括单个 IP 统计信息收集,但这似乎有点矫枉过正。

基本上我的程序是繁忙的 eth0 上的“tcpdump”,它最终会杀死我的路由器。

最佳答案

你有没有考虑过PF_RING ?它仍然是类似 pcap 的世界,但在类固醇上 - 感谢 zero-copy机制:

enter image description here

如您所见,有一个内核模块提供了将低级数据包复制到 PF_RING 缓冲区的功能,还有一个允许访问此缓冲区的用户区部分。

Who needs PF_RING?

Basically everyone who has to handle many packets per second. The term ‘many’ changes according to the hardware you use for traffic analysis. It can range from 80k pkt/sec on a 1,2GHz ARM to 14M pkt/sec and above on a low-end 2,5GHz Xeon. PF_RING not only enables you to capture packets faster, it also captures packets more efficiently preserving CPU cycles....

关于linux - pcap 的替代品 (Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10164963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com