如何用scapy计算丢包率?

问题描述 投票:0回答:3

我正在尝试计算视频运行时来自 youtube 的数据包丢失率。

我通过 Scapy 在 eth0 上一一嗅探数据包,并过滤带有 IP 标头的 TCP 数据包。

为了计算丢包率,我应该有一些已接收的数据包和一些已发送的数据包(或例外的数据包)。

我可以轻松计算收到的数据包数量,但我在从 youtube 发送数据包时遇到问题。

networking tcp scapy packet-sniffers packet-loss
3个回答
1
投票

我建议你尝试一下:

准备低、中、高流量的模拟流量。由于您将产生流量,因此您将提前知道将发送的总数据包。

  1. 首先使用tcpdump捕获所有流量。

  2. 其次使用 scapy 捕获所有流量(避免使用 python 将数据包保存到磁盘)。

您将看到以下内容:

  • 低流量 25% 数据包 scapy 丢失。
  • 中等流量67% 数据包 scapy 丢失。
  • 高流量89%! scapy 丢包。
数据来源:计算机安全 – ESORICS 2011:第 16 届欧洲计算机安全研究研讨会。

我自己尝试了一下,得到了同样的结果。 如果没有启用 libpcap,scapy 数据包丢失率为 96%。

记住 tcpdump 几乎是完美的比较案例。


0
投票
比这更复杂一点,您需要查看重传(在超时限制内未确认的数据包)。

您无法看到来自另一端的在到达您之前丢失的数据包。您可以做的就是查看 TCP 序列号,看看是否存在任何间隙,导致您接收到的数据包顺序不正确。

这可能表明数据包丢失,但不能保证。在将其算作重传之前,您可能需要对两个数据包之间允许的间隙的时间限制进行一些实验,而不仅仅是出于其他原因而无序到达。

我建议您尽可能多地阅读 TCP 协议以了解详细信息:

https://en.wikipedia.org/wiki/Transmission_Control_Protocol


0
投票
经过更多谷歌搜索后,我找到了一篇来自 Cisco 的文章,解释了如何根据带宽估算丢包率。

这是对我有帮助的链接,希望也能帮助你。

带宽、每秒数据包和其他网络性能指标

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.