libpcap在Ubuntu 14.40和CentOS 6.5之间的性能和行为差异

时间:2014-10-20 23:03:48

标签: linux ubuntu-14.04 libpcap centos6.5

我已经在Ubuntu上运行了一个基于tcpdump的脚本已经有一段时间了,最​​近我被要求在CentOS 6.5上运行它并且我注意到一些非常有趣的差异

我在两个设置上运行tcpdump 4.6.2,libpcap 1.6.2,两者实际上都运行在同一硬件上(双启动)

我在OS'上运行相同的命令。

sudo /usr/sbin/tcpdump -s 0 -nei eth9 -w /mnt/tmpfs/eth9_rx.pcap -B 2000000

来自" free -k",我看到在Ubuntu上分配了2G

在:

free -k
         total       used       free     shared    buffers     cached

内存:65928188 1337008 64591180 1164 26556 68596 - / + buffers / cache:1241856 64686332 交换:67063804 0 67063804

在:  免费-k              缓存的总使用的免费共享缓冲区 内存:65928188 3341680 62586508 1160 26572 68592 - / + buffers / cache:3246516 62681672 交换:67063804 0 67063804

expr 3341680 - 1337184

2004496

一个CentOS,我看到从同一个命令分配的内存量(4G)的两倍

在:

free -k
         total       used       free     shared    buffers     cached

记忆:16225932 394000 15831932 0 15308 85384 - / + buffers / cache:293308 15932624 交换:8183804 0 8183804

在: 免费-k              缓存的总使用的免费共享缓冲区 内存:16225932 4401652 11824280 0 14896 84884 - / + buffers / cache:4301872 11924060 交换:8183804 0 8183804

expr 4401652 - 394000

4007652

从命令中,我正在侦听接口并转储到RAMdisk中。

在Ubuntu上,我可以以线速捕获大包数据包(10G,1024字节帧)

但在CentOS上,我只能以60%的线速率(10G,1024字节帧)捕获数据包

此外,两个操作系统都运行相同版本的NIC驱动程序和驱动程序配置。

我的目标是在CentOS上实现与Ubuntu相同的性能。

我用Google搜索,似乎有不同内核的libpcap表现不同的魔力。我很好奇是否有任何内核方面的选项我必须在CentOS端调整才能在Ubuntu上实现相同的性能。

1 个答案:

答案 0 :(得分:0)

已经回答了这个问题。来自tcpdump / libpcap的Guy Harris表示,差异是由于CentOS6.5运行2.6.X内核。以下是他的回答:

” 3.2为PF_PACKET套接字引入了TPACKET_V3版本的“T(urbo)PACKET”内存映射数据包捕获机制;较新版本的libpcap(1.5及更高版本)支持TPACKET_V3,并在内核支持时使用它。 TPACKET_V3可以更有效地使用捕获缓冲区;在至少一次测试中,它丢弃了更少的数据包。它也可能会减少开销,因此要求2GB缓冲区会减少内核内存。“