Friday, September 28, 2007

linux PACKET_MMAP

从2.4起,Linux支持MMAP的数据包采集,检查内核选项
CONFIG_PACKET_MMAP=y

同时需要使用支持PACKET_RING的libpcap版本,这里
下载后编译时使用如下命令
./configure --enable-shared=yes
将生成的动态连接库libpcap.so等拷贝到/usr/lib下就可以
使用了。因为使用动态连接库,因此应用程序无须重新编译。

运行时需要设置环境变量PCAP_FRAMES=30000,这样
open_pcap_live()才会使用PACKET_RING, 如果没有这个
变量则使用普通的AF_PACKET抓包。

性能:
千兆下抓包,大概100Mbps的TCP文件传输,现在使用PACKET_RING不丢包,
CPU占用率20%左右。之前要丢10%的包,