浏览tcpdump here的手册页 如果缓冲区已满,内核似乎可以丢弃数据包。 我想知道是否
1)该大小是可配置的和/或 2)我在哪里可以看到我的发行版的大小?
从手册页(以便参考):
数据包``由内核删除''(这是由于缺少缓冲区空间而丢弃的数据包数量,由运行tcpdump的操作系统中的数据包捕获机制,如果操作系统报告该信息应用程序;如果没有,则报告为0)。
答案 0 :(得分:10)
您可以检查以下几个方面来缓解内核删除的数据包:
/proc/sys/net/core/netdev_max_backlog
和/proc/sys/net/core/netdev_budget
。默认值可能很低;尝试将每个设置为2000。tcpdump
进程足够长的时间以填充recv缓冲区
-nn
关闭DNS查找和端口命名taskset
nice
设置流程的优先级即使使用这些设置,也可能只是因为您无法跟上您尝试捕获的流量速度。查看您的NIC和机器的详细信息,确保您的期望是可能的。
答案 1 :(得分:1)
1)它是可配置的,但不精确,因为它会根据您的请求确定合适的大小。
2)将setsockopt / getsockopt
与SO_RCVBUF / SO_SNDBUF
我不熟悉linux,但似乎这个链接很好地解释了它。 http://linux.die.net/man/7/socket