首页 文章

.pcap文件中的丢包检测

提问于
浏览
1

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

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

1 回答

  • 1

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

    Edit :扩展了原来的答案,下面有更多信息......

    您还可以在"Telephony -> RTP -> RTP Streams"下查看RTP统计信息,其中列出了23个丢失的数据包 . "Telephony -> RTP -> Stream Analysis"还提供了可能有用的信息 .

    查看数据的另一种可能有用的方法是使用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附近,存在间隙并且可以看出缺失了RTS序列#11634,其应该在帧10271和10272之间 .

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

    • 右键单击任何数据包的RTP序列号字段,然后选择,"Apply as Column"

    • 将文件导出为CSV:文件 - >导出数据包解析 - >作为CSV ...

    • 使用speadsheet程序打开.csv文件

    • 添加一列,其内容是前一行中的RTP序列号与当前行中的RTP序列号之间的差值 . 例如,如果RTP序列号在G列中,则该单元格将包含 =G2-G1-1 . 如果您首先选择整个列并在添加公式时使用"Ctrl-Enter"而不是"Enter",则公式将快速应用于所有行 . (您可能必须清除最后一个有效行之外的一些无关数据 . )

    • 通过用 Headers 替换未定义的值来修复新列的第一行,例如"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分析中报告的丢失数据包完全匹配 .

    Note :对于不熟悉解码非标准端口流量的人,为了让Wireshark将UDP有效负载解码为RPT,必须使用"Decode As"功能,如上面提到的@nnovich-OK . 要执行此操作,请选择UDP数据包并右键单击"Decode As",或选择"Analyze -> Decode As... -> + -> ",然后通过选择当前列下的RTP将UDP端口4000解码为RTP .

相关问题