UDP上丢弃的帧

dropped frames over UDP

本文关键字:UDP      更新时间:2023-10-16

这是我的第一个"问题",我希望我做对了:)

我正在尝试网络编程,特别是我想通过无线网络使用UDP将数据从一台机器广播到其他>10台设备。数据以大约300字节的数据包形式出现,每秒大约30帧,即每33ms一帧。我的实现基于qt示例:http://qt-project.org/doc/qt-4.8/network-broadcastreceiver.html

我只用一个客户端测试应用程序,遇到了不少丢帧的情况,不知道为什么。如果我使用以太网电缆,一切都很好。我希望这里有人能帮我找到原因。

我可以发现丢弃的帧,因为数据包包含时间戳:在我收到一个数据报后,我可以检查其时间戳与上一个收到的数据报之间的差异,如果大于50ms,则意味着我在途中丢失了一个数据包。这种情况经常发生,尽管我有一个专用的wi-fi网络(没有连接到互联网,只有3台机器连接到我刚买的路由器)。大多数时候,我会丢弃一到两个数据包,这不是问题,但有时时间戳之间的差异表明,一些>30个数据包丢失了,这对我试图实现的目标不利。

当我从一台机器ping到另一台机器时,我会得到以下值:

50 packets transmitted, 50 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.244/91.405/508.959/119.074 ms 

对于一个只有3个客户端的专用网络中的新路由器来说,这很糟糕,不是吗?该路由器被宣传为一款非常快速的Wi-Fi路由器,其性能是802.11n路由器的三倍。

将其与我在办公时间从一个旧路由器上得到的值进行比较,这个路由器坐在同一个房间里,有大约10台机器连接:

39 packets transmitted, 39 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.458/47.297/142.201/37.186 ms 

也许路由器有故障?

我无法解释的一件事是,如果我在运行UDP客户端/服务器应用程序时ping,统计数据会有所改善:

55 packets transmitted, 55 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.164/6.174/197.962/26.181 ms 

我想知道是否有人有关于测试内容的提示,以及如何通过wi-fi在这些机器之间实现"可靠"UDP连接的提示。我所说的可靠是指我可以连续丢弃2个数据包,但不能更多。

谢谢。

编辑

看起来路由器(?)是以突发的方式发送数据包的。我正在测量在客户端上接收两个数据报之间的时间,对于大约10个数据包的序列,这个值大约为3毫秒,然后对于下一个数据包,这个值约为300毫秒。我认为我在客户端的问题更多地与帧之间的间隔不一致有关,而不是与丢弃的帧有关。我可能只需要有一个队列和一个延迟>300ms的wrt到服务器。

解决任何与网络相关的问题的第一个也是最简单的方法是在wireshark上捕获它们。还要检查数据包是否真的是从广播机发出的。

此外,根据您的描述,如果数据包通过以太网电缆而不是UDP传输良好,那么UDP端口也可能有问题。

相关文章:
  • 没有找到相关文章