linux – 在繁忙的界面上进行tcpdumping时有很多丢包

linux – 在繁忙的界面上进行tcpdumping时有很多丢包,第1张

概述我的挑战 我需要对大量数据进行tcpdumping – 实际上是从混杂模式中剩下的2个接口中可以看到大量流量. 把它们加起来 >从2个接口以混杂模式记录所有流量 >这些接口未分配IP地址 > pcap文件必须每~1G旋转一次 >存储10 TB文件时,开始截断最旧的文件 我目前在做什么 现在我像这样使用tcpdump: ifconfig ethX promiscifconfig ethX prom 我的挑战

我需要对大量数据进行tcpdumPing – 实际上是从混杂模式中剩下的2个接口中可以看到大量流量.

把它们加起来

>从2个接口以混杂模式记录所有流量
>这些接口未分配IP地址
> pcap文件必须每~1G旋转一次
>存储10 TB文件时,开始截断最旧的文件

我目前在做什么

现在我像这样使用tcpdump:

ifconfig ethX promiscifconfig ethX promisctcpdump -n -C 1000 -z /data/compress.sh -i any -w /data/livedump/capture.pcap $FILTER

$FILTER包含src / dst过滤器,以便我可以使用-i any.原因是,我有两个接口,我想在一个线程而不是两个线程中运行转储.

compress.sh负责将tar分配给另一个cpu核心,压缩数据,为其提供合理的文件名并将其移动到存档位置.

我不能指定两个接口,因此我选择使用过滤器并从任何接口转储.

现在,我不做任何看家,但我计划监控磁盘,当我剩下100G时,我将开始擦除最旧的文件 – 这应该没问题.

现在;我的问题

我看到丢包了.这是来自已经运行了几个小时的转储,并收集了大约250个pcap文件:

430083369 packets captured430115470 packets received by filter32057 packets dropped by kernel  <-- This is my concern

如何避免丢弃这么多数据包?

这些东西我已经尝试或看过了

更改了/ proc / sys / net / core / rmem_max和/ proc / sys / net / core / rmem_default的值确实有帮助 – 实际上它只处理掉了一半丢弃的数据包.

我也看了gulp – gulp的问题是,它在一个进程中不支持多个接口,如果接口没有IP地址,它会生气.不幸的是,在我的案例中,这是一个交易破坏者.

接下来的问题是,当交通流经管道时,我无法进行自动轮换.获取一个巨大的10 TB文件并不是非常有效,我没有一台10TB RAM的机器,我可以运行wireshark,所以这就是了.

你有什么建议吗?也许甚至可以更好地完成我的流量转储.

解决方法 tcpdump将传入数据存储在环形缓冲区中.如果缓冲区在tcpdump处理其内容之前溢出,则丢失数据包.

The default ring buffer size is probably 2048(2MiB).

要增加缓冲区大小,请添加-B选项:

tcpdump -B 4096 ...

您还应该尝试使用更快的磁盘存储.

总结

以上是内存溢出为你收集整理的linux – 在繁忙的界面上进行tcpdumping时有很多丢包全部内容,希望文章能够帮你解决linux – 在繁忙的界面上进行tcpdumping时有很多丢包所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1044120.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存