Tcpdump
tcpdump 简介
回放报文
抓包丢包现象处理
造成这种丢包的原因是由于 libcap 抓到包后,tcpdump 上层没有及时的取出,导致 libcap 缓冲区溢出,从而覆盖了未处理包。也就是说 tcpdump 使用 libcap 将在 linux 内核协议栈中的数据包文件提取出来,放到 libcap 的缓存区内,tcpdump 处理 ibcap 缓存区内数据,而但 tcpdump 处理速度跟不上时,libcap 缓冲区内容就会被覆盖,从而产生丢包现象
-
最小化抓取过滤范围,即通过指定网卡,端口,包流向,包大小减少包数量
-
添加
-n
参数,禁止反向域名解析 -
添加
--buffer-size=409600
参数,加大 OS capture buffer size -
指定
-s
参数, 最好小于 1000 -
将数据包输出到 cap 文件
-
用 sysctl 修改
SO_REVBUF
参数,增加 libcap 缓冲区长度/proc/sys/net/core/rmem_default
和/proc/sys/net/core/rmem_max
sysctl -w net.core.rmem_default=16777216
sysctl -w net.core.wmem_default=16777216
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
UDP buffer size
不足