.pcap文件中的丢包检测

时间:2018-02-13 11:23:00

标签: wireshark pcap packet-loss

我有几个传输流视频封装在PCAP文件中。众所周知,它们有丢包。我需要知道一种方法来检测所有这些损失。 使用的协议是:以太网,IP,UDP,RTP,最后是TS(传输流)。 你知道是否有任何旗帜或领域来检测损失?我知道有一些像序列号这样的字段可以让我知道这些信息。尽管如此,我看不到任何序列号的任何跳跃。

我正在使用WireShark,您知道它是否存在更合适的工具来分析数据包丢失? 这里有我正在使用的PCAP文件:https://drive.google.com/file/d/1vdyBYlUl0P9LXNshf_jISPkCP6_Mxlev/view?usp=sharing

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用Wireshark的“Analyze - > Expert Information? (您也可以通过单击状态栏左下角的小红圈来查看它,但圆圈的颜色会根据捕获文件中存在的最高错误级别而有所不同。)

修改:扩展了我的原始答案,下面有更多信息......

您还可以在“电话 - > RTP - > RTP Streams”下查看RTP统计信息,其中列出了23个丢失的数据包。 “电话 - > RTP - >流分析”还提供了潜在有用的信息。

查看数据的另一种可能有用的方法是使用I / O图。例如,“Statistics - > I / O Graph”。禁用任何正在绘制的内容并添加一个新内容,如下所示:

Enabled  Graph Name  Display Filter  Color  Style  Y Axis       Y Field  SMA Period
X        RTP Seq     rtp.seq         X      Line   MIN(Y Field) rtp.seq  None

您应该看到一条相当直的对角线,从左下角开始,到右上角结束。现在将Interval更改为10ms,您将看到一些序列号间隙 - 对我来说,很容易观察到3个间隙,这可能是发生丢包的好指标。例如,在12:16:38左右,有一个间隙,可以看到缺少RTP序列#11634,它应该在帧10271和10272之间。

但是如果您想更容易地看到所有序列号间隙的位置,那么您可能希望将Wireshark数据导出到电子表格程序中,例如Excel。例如:

  • 右键单击任何数据包的RTP序列号字段,然后选择“作为列应用”
  • 将文件导出为CSV:文件 - >导出数据包解析 - >作为CSV ...
  • 使用您的speadsheet程序打开.csv文件
  • 添加一列,其内容是前一行中的RTP序列号与当前行中的RTP序列号之间的差值。例如,如果RTP序列号在列G中,则该单元格将包含=G2-G1-1。如果您首先选择整个列并在添加公式时使用“Ctrl-Enter”而不是“Enter”,则公式将快速应用于所有行。 (您可能必须清除最后一个有效行之外的一些无关数据。)
  • 通过用标题替换未定义的值来修复新列的第一行,例如“RTP Seq#diff”。
  • 除0以外的任何值表示RTP序列号中的间隙。
  • 为了更容易找到所有间隙,选择整个表并在此新列上筛选除0以外的所有值。您应该得到一个相对较小的表,如下所示:

No. AbsTime Time DeltaT Proto Length RTP Seq # RTP Seq # Diff 3405 16:33.7 2.199559 0.001005 MPEG TS 1370 4748 3 6505 16:35.7 4.203210 0.000139 MPEG TS 1370 7851 1 6631 16:35.8 4.287576 0.001001 MPEG TS 1370 7978 1 8781 16:37.2 5.728671 0.000102 MPEG TS 1370 10129 1 8855 16:37.3 5.781427 0.000254 MPEG TS 1370 10204 1 9476 16:37.7 6.213582 0.000816 MPEG TS 1370 10826 1 9728 16:37.9 6.389564 0.000634 MPEG TS 1370 11079 10 9981 16:38.1 6.572582 0.000978 MPEG TS 1370 11342 1 10271 16:38.3 6.774569 0.000796 MPEG TS 1370 11633 1 10311 16:38.3 6.803568 0.000995 MPEG TS 1370 11674 1 10979 16:38.8 7.268695 0.000068 MPEG TS 1370 12343 1 12361 16:39.7 8.186596 0.000177 MPEG TS 1370 13726 1

这应该告诉您所有间隙的位置以及丢失的数据包数量,这只是最后一列的总和,或23,与Wireshark在RTP分析中报告的丢失数据包完全匹配。

注意:对于不熟悉解码非标准端口流量的人,为了让Wireshark将UDP有效负载解码为RPT,必须使用“Decode As”上面提到@nnovich-OK的功能。要执行此操作,请选择UDP数据包并右键单击“解码为”,或选择“分析 - >解码为... - > + - >”然后将UDP端口4000设置为RTP by在 Current 列下选择RTP。

答案 1 :(得分:0)

这对我有帮助

  1. 首先使用WireShark停止捕获(捕获所有需要/想要的数据之后),
  2. 然后转到统计信息->捕获文件属性

这里有一个用于总体丢弃数据包的统计信息-总比没有好。 同样可以使用 dumpcap 命令

来完成