我环顾四周寻找tcpdump
内幕的文档,但我还没有找到任何内容。所以我的问题是计算机上的tcpdump
是多么具有侵扰性。如何评估专用于分析流量的资源(内存或CPU)数量?
答案 0 :(得分:2)
据我所知,tcpdump根据你的要求消耗它的变量。
要查看tcpdump进程消耗的资源数量,只需观看top
Top Manual等系统监视器。
如果你的网络流量,tcpdump输出可能相当大 表达式定义的是高带宽;特别是如果你是 捕获超过默认的68字节数据包内容。捕获数据包,例如,与大文件传输或 数百或数千个客户正在积极使用Web服务器 将产生压倒性的输出量。如果写这个输出 stdout你可能无法输入你的命令 终端,如果写入文件,您可能会耗尽主机的磁盘空间。 在任何一种情况下,tcpdump也可能消耗大量的CPU 和内存资源。
避免这些问题;
- 在指定表达式时要非常小心,并尽量使它们尽可能具体。
- 在交通繁忙/负荷过程中不要捕捉。
- 如果您希望捕获整个数据包内容,请先进行测试捕获,然后再捕获默认的68Bytes并对其进行判断 是否系统将处理完整的数据包内容捕获。
- 在写入磁盘的情况下,请仔细监视文件的大小,并确保相关主机具有可能的磁盘资源 必需可用,或使用-c参数来限制数量 捕获的数据包。
- 永远不要使用能够捕获远程telnet / SSH /任何终端/ shell流量的表达式。 tcpdump输出 会为您的终端产生流量,从而进一步产生 输出,导致终端流量增加等等 无限且可能有害的反馈循环。
原产地:Tcpdump - Basics
答案 1 :(得分:1)
tcpdump是一个非常简单的工具,它基本上是打开特殊类型的套接字
socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))
并将所有内容写入磁盘。
内核会捕获并管理特殊缓冲区以存储tcpdump的数据包。如果缓冲区是满包,它就会掉线。缓冲区使用-B选项进行调节。大多数系统都有缓冲上限,~2GB或类似的东西。
从CPU的角度来看,您需要计算能力复制所有数据2或3次,这通常不是问题,如果您无法捕获1GB链接,您最可能应该归咎于磁盘速度,而不是CPU。对于10Gb链路,可能是CPU问题和内存总线带宽问题,您可能需要对此进行一些优化。