基本上,我想要一个被动的工具来监视到/从我的机器进行的TCP连接上的数据包丢失吗?

基本上,我想要一个位于后台并监视TCP ack / nak / re-transmissions生成的工具关于哪个对等IP地址“似乎”正在遭受严重损失的报告。

我在SF中发现的大多数此类问题都建议使用iperf之类的工具。但是,我需要监视与机器上的真实应用程序之间的连接。

这些数据是否只是位于Linux TCP堆栈中?

#1 楼

从总体上看,您的问题的严重程度netstat -s将跟踪您的重传总数。

# netstat -s | grep retransmitted
     368644 segments retransmitted


您还可以为segments进行grep获取更详细的视图:

# netstat -s | grep segments
         149840 segments received
         150373 segments sent out
         161 segments retransmitted
         13 bad segments received


潜水,您可能要启动Wireshark。

在Wireshark中,将过滤器设置为tcp.analysis.retransmission,以查看按流进行的重发。 。

探索了其他死胡同:


netfilter / conntrack工具似乎不保持重传。 / proc / net / tcp中的
第9栏看起来很有希望,但不幸的是它似乎没有被使用。


评论


您可以使用#watch'netstat -s | grep已转发”

–无
2011-10-13 11:53

这只会显示出站问题。 “ netstat -s | grep段”对我来说似乎更合理。

–akostadinov
2012年4月17日19:39



如果您要管理大小合理的网络,那么我建议您在wireshk上使用Pastmon进行连续监视-pastmon.sourceforge.net/Wikka-1.1.6.5/wikka.php?wakka=HomePage

–symcbean
2012年11月2日,11:12

由于某种原因,它为我拼写了(Ubuntu Server 14)。

– sudo
17年4月13日在15:50

重传与已发送或已接收的好传输速率是多少?

– abourget
17年5月31日在18:31

#2 楼

这些统计信息位于/ proc / net / netstat中,并且collectl会以交互方式或通过写入磁盘为您监视它们,以供以后播放: d想看到并排的网络流量,只需将n-s包括在一起:

[root@poker ~]# collectl -st
waiting for 1 second sample...
#<------------TCP------------->
#PureAcks HPAcks   Loss FTrans
        3      0      0      0
        1      0      0      0


#3 楼

您可以使用ss工具获取详细的TCP统计信息:

$ /sbin/ss -ti


在Debian下,请使用apt-get install iproute获取二进制文件。

评论


请注意,提出问题的人正在寻找他们可以观察其输出的工具。尽管到目前为止提到的某些命令不能以这种方式运行,但是所有被支持的答案至少都包括一种这样做的方法。

–安德鲁(Andrew B)
13年4月6日在20:06

@AndrewB:您可以观看ss -ti。

– John Zwinck
15年1月22日在5:53

#4 楼

看起来北卡罗来纳大学(UNC)的一些人构建了一个实用工具来对此进行精确调查:

方法学
TCP是获取主题的传统协议的经典示例
修改。不幸的是,对像TCP的丢失检测/恢复机制这样的基本要素的评估并不全面。我们的目标是对TCP损耗及其对TCP性能的影响进行完整,现实的评估。
我依靠对真实世界中TCP连接的被动分析来获得所需的详细程度和真实性。

http://www.cs.unc.edu/~jasleen/Research-passivetcp.htm#Tool

工具
该工具的目的是与以前的工具(例如tcpanaly,tcpflows,LEAST,
和Mystery)相比,可提供更完整,准确的结果,用于识别和表征乱序片段。
我们的方法将在数据包跟踪中出现不连续(OOS)的每个段分类为以下
类别之一:超时
触发的网络重排序或TCP重传,重复ACK,部分ACK,选择性ACK或隐式
恢复。此外,还会评估每次重传是否需要


我不会说这是生产质量。以前,我已经构建了快速的perl脚本来将ip / port / ack元组存储在内存中,然后通过扫描pcap输出报告重复数据,这看起来可以提供更全面的分析。

#5 楼

您可能需要看看dropwatch实用程序。

评论


它仅作为rpm包提供:/

–瑞奇·罗宾逊(Ricky Robinson)
16-10-21在9:00

#6 楼

显然,好的旧sar可以收集重传信息(以及其他tcp统计信息),以及各种其他系统统计信息,如果您调查cpu,内存,磁盘I / O等问题,这些信息也可能会很有趣。

您可能需要安装一个软件包:sysstat并使用-S SNMP开关启用这种特殊类型的统计信息,在RHEL / OracleLinux上,此配置在/etc/cron.d/sysstat中,其中/ usr / lib64 / sa / sa1默认情况下每5分钟调用一次,但也可以对其进行调整。

要分析此数据,请使用:


sar(命令行,基于文本)
sadf根据http://sebastien.godard.pagesperso-orange.fr/matrix.html

ksar创建SVG(可以绘制精美的图形并在Java上运行-有几种不同的如果我没记错的话,可以在sf.net和github上进行选择的克隆)

http://www.sargraph.com(基于PHP,我没有任何经验,请介意) ,应用程序,而不是编程语言ge😉)


#7 楼

看起来/proc/net/snmpnetstat -s的值的来源。因此,这是一个快速的gawk脚本,用于找到要重传的段的百分比:
显示0.0229%的重传,比我们在其他节点上看到的最大0.002%高10倍以上。一个真的很差的实例占所有出站数据包的2.32%,是重新传输的分段。

评论


看起来nstat是另一个用于监视那些计数器的命令loicpefferkorn.net/2016/03/…nstat --nooutput; sleep 60; nstat -p TcpRetransSegs TcpExtTCPLostRetransmit TcpExtTCPSynRetrans

–格雷格·布雷(Greg Bray)
20年8月13日在1:10