我理解这个问题已被多次讨论过:我应该使用libpcap还是PF_PACKET(数据链接套接字)来捕获数据包?
根据我的研究,libpcap在几乎所有地方都建议使用PF_PACKET,主要是因为它的可移植性。
但是,对于我目前的项目(在生产系统中使用),可移植性根本不是问题,我关心的只是性能(速度,丢包率)。我的程序在CentOS 5.10(内核2.6.18)上运行 据我所知,libpcap为每个数据包设置了一个时间戳。这会导致大的性能损失吗? 还有其他因素导致libpcap在高速网络中不适用吗?
答案 0 :(得分:2)
据我所知,libpcap为每个数据包设置了一个时间戳。
不,libpcap从它使用的操作系统数据包捕获机制获取数据包的时间戳 - 在Linux上是...
...... PF_PACKET套接字。
Linux内核时间戳记传入的数据包。 PF_PACKET套接字有多种读取方式:
Libpcap在可用时使用内存映射访问;如果你关心捕获性能,你可能也想这样做。但是,这并不容易使用。