gpt4 book ai didi

linux - libpcap 还是 PF_PACKET?

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

我知道这个问题已经被讨论过很多次了:我应该使用 libpcap 还是 PF_PACKET(数据链路套接字)来捕获数据包?

根据我的研究,几乎所有地方都建议使用 libpcap 而不是 PF_PACKET,主要是因为它的可移植性。

但是,对于我现在的项目(用于生产系统),可移植性根本不是问题,我只关心性能(速度,丢包率)。我的程序在 CentOS 5.10(内核 2.6.18)上运行据我所知,libpcap 在每个数据包上放置了一个时间戳。这会导致很大的性能损失吗?是否还有其他因素导致 libpcap 不适用于高速网络?

最佳答案

As far as I know, libpcap put a timestamp on each packet.

不,libpcap 从它使用的操作系统数据包捕获机制获取数据包的时间戳 - 在 Linux 上是...

...PF_PACKET 套接字。

Linux 内核为传入的数据包打上时间戳。 PF_PACKET 套接字有多种读取方式:

  • 常规套接字接收,为此您可以使用显式 ioctl 获取时间戳(因此您可以避免将其提取到用户空间,但您无法避免内核时间戳数据包第一名;libpcap,在使用常规套接字接收时,总是询问时间戳);
  • 内存映射访问,总是提供时间戳。

只要可用,Libpcap 就会使用内存映射访问;如果您关心捕获性能,您可能也想这样做。然而,它并不容易使用。

关于linux - libpcap 还是 PF_PACKET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26364888/

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