如何用scapy计算丢包率?

时间:2017-08-27 13:43:36

标签: networking tcp scapy packet-sniffers packet-loss

我正在尝试在视频运行时从youtube计算丢包率。

我通过Scapy在 eth0 上逐个嗅探数据包,并使用 IP 标头过滤 TCP 数据包。

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

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

3 个答案:

答案 0 :(得分:1)

我建议你试试这个:

准备低,中,高流量的模拟流量。您将生成预先知道将要发送的总数据包的流量。

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

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

您将看到以下内容:

  • 低流量 25%数据包损失与scapy。
  • 中等流量 67%数据包因scapy而丢失。
  • 高流量 89%!数据包与scape一起丢失。

数据来源:计算机安全 - ESORICS 2011:第16届欧洲研究计算机安全研讨会。

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

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

答案 1 :(得分:0)

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

你无法看到来自对方的数据包在到达你之前丢失了。您可以做的是查看TCP序列号,看看是否存在无序接收数据包的间隙。

这可能是数据包丢失的指示,但不能保证。你可能不得不做一些试验,以确定两个数据包之间允许的间隔时间限制,然后再将其作为重新传输计数,而不仅仅是因为其他原因而无法到达。

我建议尽可能多地阅读TCP协议,以了解详细信息:https://en.wikipedia.org/wiki/Transmission_Control_Protocol

答案 2 :(得分:0)

经过更多谷歌搜索后,我发现思科的一篇文章解释了如何根据带宽估算丢包率。

这是链接,这对我有所帮助,我希望它也可以帮到你。

Bandwidth, Packets Per Second, and Other Network Performance Metrics

感谢。