如何被动监控tcp数据包丢失?(Linux)


61

如何被动监视与机器之间的TCP连接上的数据包丢失?

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

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

这些数据只是放在Linux TCP堆栈中吗?

Answers:


49

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

# netstat -s | grep retransmitted
     368644 segments retransmitted

您可以通过aso grep segments获得更详细的视图:

# 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工具似乎不保留重传
  • 跟踪netstat -s显示它只是打印/proc/net/netstat
  • / proc / net / tcp中的第9列看起来很有希望,但是不幸的是它似乎没有被使用。

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

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

1
如果您要管理大小合理的网络,那么我建议您在有线通讯录上推荐Pastmon进行连续监控-pastmon.sourceforge.net/Wikka-1.1.6.5/wikka.php?wakka=HomePage
symcbean 2012年

4
由于某种原因,它是retransmited为我拼写的(Ubuntu Server 14)。
sudo

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

12

这些统计信息位于/ proc / net / netstat中,collectl它们将以交互方式或为磁盘监视供您稍后监视:

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

当然,如果你想看看,然后并排侧与网络流量,只包括n-s

[root@poker ~]# collectl -stn
waiting for 1 second sample...
#<----------Network----------><------------TCP------------->
#  KBIn  PktIn  KBOut  PktOut PureAcks HPAcks   Loss FTrans
      0      1      0       1        1      0      0      0
      0      1      0       1        1      0      0      0

7

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

$ /sbin/ss -ti

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


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

2
@AndrewB:可以的watch ss -ti
John Zwinck 2015年

3

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

方法

TCP是可以进行修改的传统协议的经典示例。不幸的是,对像TCP的丢失检测/恢复机制这样基本的东西的评估并不全面。我们的目标是对TCP损失及其对TCP性能的影响进行完整,真实的评估。

我依靠对真实世界中TCP连接的被动分析来实现我的分析所需的详细程度和真实性。

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

工具

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

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



0

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

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

对于此数据的分析,请使用:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.