This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3120BOOST:使用 UDP 的背靠背数据包传输非常慢

Guru**** 1555210 points
Other Parts Discussed in Thread: CC3120
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1170625/cc3120boost-back-to-back-packet-transfers-using-udp-are-really-slow

器件型号:CC3120BOOST
主题中讨论的其他器件:CC3120

尊敬的支持:

我将 CC3120 Booster Pack (BP)与 MSP432E4 LaunchPad (LP)搭配使用、并尝试以2Mbps 以上的速率移动视频。  根据 CC3120的数据表、这应该不是问题、因为它表明它可以支持16Mbps 的 UDP 吞吐量。  但是、我注意到、当我进行背靠背 UDP 传输时、CC3120将接受多达37个数据包(数据包大小似乎无关紧要、因为我尝试了512字节/数据包和1356字节/数据包) 然后、它会在一段时间内停止传输、然后重新启动传输、然后停止并继续执行此操作、直到完成传输。  

为了测试这一点、我背对背地发送了100个 UDP 数据包 、并将数据包之间的间隔间隔间隔间隔设置为0ms、20ms 和70ms。  在0msec 时、在突发37个数据包之间有2.5秒的间隔、然后是另一个2.5秒的间隔、剩余的数据包被传输的总时间为4.9秒。  对于 UDP 数据包之间的间隔为20毫秒、此间隔约为 UDP 传输块的死区时间2秒、以及完成100个数据包传输的总时间5.4秒。  对于 UDP 数据包之间的间隔为70毫秒、数据包之间没有死区时间、也没有阻止 UDP 数据包、但完整传输时间为7.1秒。   

我随附一个.pdf 的逻辑分析仪、可针对不同的情况和结果捕获这些不同的传输。  跟踪中的顶部信号是完成传输的时间、底部信号是单个数据包传输、其中传输过程中信号为高电平、传输完成后信号为低电平、然后开始下一个 UDP 传输。  

以下是用于此测试的代码:

GPIO_write (Board_GPIO_GP1、Board_GPIO_LED_ON);
for (索引= 0;索引< 100;索引++)

   GPIO_write( Board_GPIO_GP2、Board_GPIO_LED_ON );
   if (UDPClientInfoPtr!= NULL)
     BytesSent = SendUDPData( UDPClientInfoPtr,( char *) PacketPtr,BytesToSend );
   GPIO_write( Board_GPIO_GP2、Board_GPIO_LED_OFF );
//  Task_sleep(20 );

GPIO_write( Board_GPIO_GP1、Board_GPIO_LED_OFF );

下面是 SendUDPData(...) 函数调用:

int SendUDPData( struct NET_info *UDPInfoPtr,uchar *DataPtr,uint size )

  Int NumberOfBytes;

  NumberOfBytes = sendto (UDPInfoPtr->RemoteSocket、DataPtr、Size、0、(struct sockaddr *)&UDPInfoPtr->RemoteIPAddress、UDPInfoPtr->AddressSize);
  返回 NumberOfBytes;

其中进行了简单的 UDP sendto 调用以执行 UDP 传输。  问题是、在37个 UDP 数据包传输后、UDP sendto 会在将控制权移交给处理器之前长时间(几秒)阻止。  您能告诉我这里发生了什么情况、为什么 UDP 传输在37个 UDP 数据包之后被阻止、并且无法维持超过200Kbps 的大部分数据速率?

谢谢、
Tim

e2e.ti.com/.../UDPTransfers.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果空气非常拥挤、或者 ap 很远(或存在干扰)、传输可能会延迟、NWP 缓冲器将会填满并导致新的传输阻塞。

    如果您可以获得监听器日志、我们可能会提供帮助。 在射频室中实现了16 Mbs (无任何干扰)。 在露天环境中、吞吐量应该较低、但200Kbps 表明环境有很大问题。

    您使用的是 launchpad 还是定制解决方案?

    安装了哪些 SP 和 SDK?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Kobi:

    感谢您的回答。  我在我家的地下室测试此测试、WAP (NETGEAR)距 CC3120 BP 仅3英尺。  我的 DSL 路由器距离我家的主楼层约15英尺、NETGEAR 奥秘 Mesh 设备距离约8英尺、就是这种情况。  在我家里进行测试时没有任何活动、因此没有 WiFi 流式传输或互联网浏览。  我来运行该测试。  我曾尝试单独使用奥秘 Mesh 设备和 NETGEAR WAP、在这两种情况下、我都得到相同的结果-主机在传输37个 UDP 数据包后被阻止、只能维持大约200 Kbps。

    我正在使用此 CC1320 BP:

    https://tisamples.ti.com/order/tisamples/en/p/product/?p=CC3120BOOST

    MSP432E4 LP:

    https://www.ti.com/tool/MSP-EXP432E401Y?keyMatch=MSP432E401Y%20LAUNCHPAD

    并在 LP 和 BP 之间直接连接。  下面是显示 LP 和 BP 之间连接的设置图片:

    这仅在我执行 UDP 传输到子网中的 IP 地址时适用。  如果我更改不在子网中的 UDP 地址、则此问题就会消失-我能够保持超过9Mbps 的数据传输速率。  您能否解释为什么只有在我使用子网中的 IP 地址时才会发生这种情况、但在其他情况下不会发生这种情况?

    谢谢、
    Tim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Kobi:

    我将 SDK v4.20 LP 与 MSP432E4和 WiFi 插件 v4.20搭配使用、用于 CC3120 BP。

    Tim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果问题仅出现在 LAN 中,则可能与接收器有关。  

    总之、LAN 中的连接应该较慢:当您通过 WLAN 网络向 AP 发送数据包时、AP 会将其转发 到目标(因此 每个数据包将传输两次)。 如果在 AP 和目标之间重新传输-吞吐量将下降。 一个监听器日志(您需要 Wireshark SW + Wi-Fi 软件狗。 在某些笔记本电脑中、Wireshark 可以与板载 Wi-Fi 配合使用)将帮助我们了解问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Kobi:

    连接到 LAN?  由于我不使用 TCP、而是传输 UDP 数据包、WAP 如何导致 CC3120在移动 UDP 数据包时从传输中后退?  这对您来说有道理吗?   我不清楚为什么当 UDP 地址在子网内时会发生这种对 UDP 数据包传输的备份、而不会发生其他情况。

    您是否知道这些 TI 笔记本电脑是否允许我使用 Wireshark 监听这些 UDP 数据包、或者我是否需要 WiFi 软件狗?  如果是、您可以推荐使用 WiFi 加密狗吗?

    谢谢、
    Tim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不确定 TI 笔记本电脑。

    我认为 、即使笔记本电脑具有支持的 Wi-Fi 适配器   、Wireshark 也更有可能与 Linux 驱动程序配合使用、而不是与窗口一起使用。

    正如我说过的、AP 可能是阻止器件发送和清空内部缓冲区的瓶颈(即使 UDP 帧也需要来自 AP 的 L2 ACK、802.11 MAC 不区分 TCP 和 UDP 帧)。 但我们将需要监听器提供更多数据。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们使用的是 wlanpi (wlan-pi.gitHub.io/.../)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Kobi:

    那么、如果发送器向接收器发送 UDP 数据包、接收器是否存在数据吞吐量或对数据吞吐量没有任何影响?  我没有意识到发送器和 WAP 之间在 UDP 数据包传输期间有 ACK 在运行。  这是否也适用于接收器?  因此、如果接收器未连接到 WAP、这是否会影响发送器的 UDP 数据吞吐量?

    谢谢、
    Tim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    中的 ACK 位于802.11层。 不在传输(UDP)层中。  源站和 AP 之间以及 AP 到目标站之间都是如此。

    如前所述、本地网络内的性能应该会有所下降(由于 AP 在同一信道上重复进行封装)、但没有什么可以说明 您看到的性能下降程度。  希望嗅探器日志能帮助我们找到根本原因。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Kobi:

    因为 UDP 是一种无连接协议、而且我正在进行发送虚拟数据包的简单测试、所以我假设我不需要将接收器连接到 WAP。  因此、发送器只是将 UDP 数据包背靠背发送到不在那里的接收器。  将接收器连接到 WAP 后、问题就消失了、我能够以1356字节有效载荷的13+ Mbps 速率无限期地保持背靠背 UDP 数据包传输。  这是否合理?

    谢谢、
    Tim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正如我告诉您的、问题似乎不在 UDP 级别、而是在物理/MAC 层。

    让我们检查监听器日志以尝试了解问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Kobi:

    我假设通过将 UDP 接收器连接到 WAP 来解决此问题。  使用 WAP 执行此测试时、我需要与 UDP 数据包的接收器建立有效连接、否则 WAP 将向 UDP 发送器发送一条消息、以阻止数据包的发送、直到发生某些超时。  不是这样吗?

    谢谢、
    Tim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想、如果发送器 找不到接收器(地址)、AP 可能会阻止发送器、因此无法转发消息。