您的位置:首页 > 理论基础 > 计算机网络

解决tcpdump "drop by kernel" 问题

2015-05-16 00:02 225 查看
今天使用tcpdump捕包时发现数据不全,进一步跟踪发现,tcpdump出现丢包 (网卡上drop计数没有增加,网卡没有丢包),退出tcpdump时显示一下信息:
579204 packets captured
579346 packets received by filter
142 packets dropped by kernel
原因:Tcpdump 通过网络接口捕获原始数据包,数据包必须解析和执行过滤条件,执行过滤条件需
要耗费一些
时间,
因此传入
数据包必须排队(数据缓存)进行处理,当数据包过多时(处理速度跟不
上缓存速度),缓存区
就会被撑爆
(缓存区大小默认是2M),
此时就会丢弃新近的数据包,直到缓存
区有空间保存新到数据。
解决方案:增大缓存区的大小。
1)tcpdump命令可以使用 -B 参数来修改,单位是KiB。
2)libpap库中提供函数pcap_set_buffer_size() 。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐