Networking 通过wifi从Hololens 2发送数据存在问题-每5分钟周期性延迟一次

Networking 通过wifi从Hololens 2发送数据存在问题-每5分钟周期性延迟一次,networking,udp,hololens,mr-spectatorview,Networking,Udp,Hololens,Mr Spectatorview,我正在尝试通过wifi从Hololens2向计算机连续发送小UDP数据包(仅包含两个字节)。在我的例子中,有必要以60fps的稳定速率传输这些数据,而不需要任何退出。这正如预期的那样工作,但我遇到了一个奇怪的问题——传入的数据每5分钟就开始严重“滞后”。这种滞后发生了几秒钟,然后又恢复到稳定和连续的流。不幸的是,这对于我的用例来说是不可接受的,我希望摆脱这个问题。这将实时显示传入udp数据的延迟(每个数据报包含在图中显示的帧编号) 我已经尝试分析这个问题很长一段时间了,但到目前为止我还没有弄清楚

我正在尝试通过wifi从Hololens2向计算机连续发送小UDP数据包(仅包含两个字节)。在我的例子中,有必要以60fps的稳定速率传输这些数据,而不需要任何退出。这正如预期的那样工作,但我遇到了一个奇怪的问题——传入的数据每5分钟就开始严重“滞后”。这种滞后发生了几秒钟,然后又恢复到稳定和连续的流。不幸的是,这对于我的用例来说是不可接受的,我希望摆脱这个问题。这将实时显示传入udp数据的延迟(每个数据报包含在图中显示的帧编号)

我已经尝试分析这个问题很长一段时间了,但到目前为止我还没有弄清楚是什么导致了它。然而,我可以从我的测试中得出以下结论:

  • 无线信号不是问题。我有一个无线接入点,直接放在Hololens 2旁边-提供出色的信号。整个设置包括直接连接到Cisco接入点(通过以太网连接)的笔记本电脑和连接到wifi的Hololens 2。此网络上没有internet访问-它仅用于本地网络。另外,没有任何网络干扰在这个问题中起作用,因为我在不同的地方尝试过,结果都是一样的。我还尝试在这个wifi上再增加一台电脑,看看能否从中获得稳定的数据流——Hololens2和这台电脑都在向我的笔记本电脑传输类似的数据。在全息透镜数据滞后的阶段,来自这台计算机的数据是稳定的,没有任何问题

  • 在Hololens 2上运行的应用程序本身的稳定速率为60fps,无任何帧丢失。我使用Unity创建的简单应用程序和本机UWP应用程序运行测试(两者在网络方面表现相同)。我在不同的套接字实现中也观察到了相同的结果,
    System.Net.Sockets
    Windows.Networking.Sockets
    执行相同的操作

  • 有趣的是,当我通过以太网直接连接到Hololens2时,这个问题不会发生。我已经用usb-c到以太网适配器成功地测试了这一点,它提供了稳定的数据传输(没有任何延迟)。因此,很明显,只有在Hololens 2上使用无线网络适配器时,才会出现滞后现象

  • 我绝对不是网络专家,但我试着检查通过Wireshark进入我笔记本电脑网络接口的数据包,但在这些滞后时期没有任何“可疑”活动发生。出于好奇,我还直接在Cisco接入点上捕获了数据包,并创建了以下图表,以可视化那里发生的事情

    • 这显示所有数据包的到达时间(y轴表示时间,单位为秒,x表示数据包id)。中部地区显然受到上述滞后的影响

    • 这仅显示属于我的udp通信的已过滤数据包-所有其他数据包以0时间显示,以便直观地识别用于不同(未知)通信的数据包。您可以清楚地看出,大多数其他请求都发生在这些有问题的区域。不幸的是,我不知道这些请求是什么,因为Cisco接入点的捕获输出对我来说相当神秘。我所能说的是,大多数请求都是从Hololens2发送到Cisco接入点的


    基于这些观察,我想说每5分钟全息透镜2都会在后台做一些导致网络问题的事情。它只影响wifi网络接口。尽管我还没有尝试过全息远程遥控或观众观看,但我相信他们肯定也有同样的滞后。请问有人知道如何解决这个问题吗?由于Hololens 2无法控制防火墙或服务,我觉得自己被困在这里,希望Hololens的开发人员能帮助我。谢谢。

    您能检查一下设置中的更新,看看是否有适用于HoloLens 2的系统更新吗?这样我们就可以避免一些已知的问题。Windows全息,2004版修复了HoloLens的Wi-Fi数据流定期中断的错误,有关更多信息,请参阅:@Hernando MSFT谢谢提供信息。是-我的系统已更新为最新版本(检查更新时没有可用的更新)。然而,在发行说明中提到的
    SetSocketMediaStreamingMode
    函数引起了我的注意,因为它听起来可能对这种情况有所帮助。我将尝试实现此函数调用,看看它是否会改变当前行为。不幸的是,在这种情况下,使用
    SetSocketMediaStreamingMode
    没有帮助-问题仍然存在。作为测试,您能否从以下链接下载完整的DatagramSocket UDP示例应用程序:,然后将其部署到HoloLens2?你看到同样的行为了吗?如果您的代码有问题,这将有助于缩小范围。当然-我刚刚尝试了这个示例,它的行为完全相同。。。我以60fps的速率从笔记本电脑发送UDP数据(每个数据报包含帧号)。DatagramSocket示例应用程序随后将这些数据回传给我,使我能够很好地可视化传入流(每5分钟延迟一次)。