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.

[参考译文] TDA4-VM 交换机 UDP 封装丢失

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

https://e2e.ti.com/support/switches-multiplexers-group/switches-multiplexers/f/switches-multiplexers-forum/1169821/tda4-vm-switch-udp-package-loss

主题中讨论的其他器件:TDA4VM

我们使用 TDA4 VM、SDK7.3、QNX。

当两个交换机端口 同时向 Linux PC 发送 UDP 时、来自 ECU2的 UDP 封装会严重丢失。

我们测试了两个选项。

选项1:

ECU1将 UDP 封装发送到 Linux PC,10thread,25Hz,50KB 每个封装。

ECU2发送 UDP 封装 Linux PC,10thread,25Hz,50KB 每封装。

当 ECU1和 ECU2分别发送时、,UDP 封装不会丢失。 当 ECU1和 ECU2同时发送时、ECU2 UDP 封装会严重丢失 。μ s

我们使用 tcpdump 在 ECU2和 Linux PC 上捕获 eth 软件包、我们发现 ECU2发送的数据包相对完整、并且 Linux PC 接收到的数据包持续丢失。 如下图所示。

选项2:

ECU1发送:iperf3 -c 172.16.1.53 -t 60 -i 1 -b 1G -P 5 -u -p 12000

ECU2发送:iperf3 -c 172.16.1.53 -t 60 -i 1 -b 1G -P 5 -u -p 20000

Linux PC:iperf3 -s -p 12000; iperf3 -s -p 20000

当 ECU1和 ECU2分别发送时、,UDP 封装不会丢失。 当 ECU1和 ECU2同时发送时、ECU2 UDP 封装会严重丢失 。μ s、如下图所示。

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

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

    尊敬的 Wenq强:

      请尝试使用 TCP 发送数据包、看看情况是否会更好。

    BR

    Sikai

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

    您好,我们使用 TCP 来发送数据包、看起来更好、但也会丢失数据包。

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

    尊敬的 Wenq强:

       您能否参阅这两个案例、看看它们是否与您的问题类似?:

       

        TDA4VM:通过两个 SOC 之间的 SGMII、CPSW9G UDP 带宽不符合预期-处理器论坛-处理器- TI E2E 支持论坛

        TDA4VM:TDA4的 RGMII 100M 影响 SGMII 1000m (端口2)的速率-处理器论坛-处理器- TI E2E 支持论坛

    BR

    Sikai

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

    尊敬的 Wenq强:

      请参阅此案例以获取转储脚本:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1066615/tda4vm-package-dropping-on-mac_port_1-which-was-connected-to-an-external-phy-100-1000base-t1 

    BR

    Sikai

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

    尊敬的专家:

       以下是客户发现的一些现象:

       1.如果先运行 ECU1、然后运行 ECU2、则 ECU2将重新生成数据包丢弃情况。

       2.如果先运行 ECU2、然后再运行 ECU1、则 ECU2很有可能重现此情况。

       3.如果先长时间运行 ECU2、然后运行 ECU1、则不会重现此情况。

    BR

    Sikai

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

    尊敬的 Wenq强:

       1.端口5的硬件限制为1G,因此如果您同时运行两个1G ipert,其中一半将被丢弃。 您能否降低 iperf 带宽以查看是否会提高?

       2.我们将提供 QNX (SDK 7.3)脚本以转储主机端口、端口2和端口5的状态、以查看数据包的丢弃位置。

       3.我们需要您提供由 Linux PC 上 Wireshark 捕获的数据(1.25Mbps)。 PCAP 文件更好。

       4.您能解释一下发送1.25Mbps 数据包的过程和整个测试环境吗? 喜欢代码和屏幕截图吗?

       如果我错过任何内容、请告诉我。

    BR

    Sikai

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


    我使用 iperf3进行了测试:

    ECU1: iperf3 -c 192.168.3.110 -t 10 -b 100MB -P 5 -u
    ECU2:  iperf3 -s

    这些结果是从 ECU1和 ECU2读取的 TOPO 和 INFORation

    Test topoe2e.ti.com/.../ecu1.op.txte2e.ti.com/.../ecu2.op.txte2e.ti.com/.../ecu1.remote.loge2e.ti.com/.../ecu2.remote.log

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

    尊敬的中新:

      我已经测试了两个运行 UDP iperf 的 TDA4VM、正如我们前面所说的、它将在80M 带宽下显示20-40%的数据包丢失。 我使用100M 带宽、它不会显示数据包丢失。

        

      但是、我在 LIUNX 侧进行测试、您能帮助检查:

      1.这是由 QNX (您使用的是哪个 SDK 和 QNX 版本)引起的吗?

      2.如果没有,您是否在 ETHFW 中进行了任何修改?

    尊敬的 Tanmay:

       正如我们昨天所说的、您能否帮助解释我们可以为客户提供哪些 QNX 脚本? 谢谢。

    BR

    Sikai

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

    尊敬的 Wenq强:

      请在您的环境中找到以下 gels 并使用 CCS 执行转储:

       

    /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels

    /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels/cpsw_ale_print_table.gel

    /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels/cpsw_phyaccess_ray.c

    /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels/cpsw_print_intr_config.gel

    /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels/cpsw_SGMII_diag.gel

    /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels/cpsw_mdio_config.gel

    /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels/cpsw_enetctrl_cfg.gel

    /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels/cpsw_print_reg.gel

    /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels/cpsw_startup.gel

    /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels/cpsw_dma_print_cppihpddesc.gel

    /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels/cpsw_mac.gel

    /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels/cpsw_phyaccess_raw.h

    /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels/cpsw_stats_print_regs.gel

    让我检查您应该使用哪个脚本来查看数据包丢弃。

    BR

    Sikai

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

    尊敬的 Wenq强 和 Zhongxin:

       请检查此 GEL:

       /pdk_jacinto_07_03_00_29/packages/ti/drv/enet/tools/debug_gels/cpsw_stats_print_regs.gel

    BR

    Sikai

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

    尊敬的 Tanmay:

       从他们以前的日志中,他们转储了一些统计数据寄存器,您能帮助查看他们在哪里放置了数据包吗?   

       e2e.ti.com/.../7484.ecu2.remote.loge2e.ti.com/.../0385.ecu1.remote.log  

    尊敬的中新:

       由于我无法在 EVM Linux 端重现数据包丢失、请帮助与 QNX 端进行检查。

       您还能帮助转储更多的寄存器:

       1.如果您使用的是 Mac、则不必转储、否则、我认为我们可以检查:

       

      2.您能不能帮助转储完整的统计数据寄存器,让我们看看是否可以看到任何下降信息:

       

        

      3.如果您使用 PHY 连接 RGMII 端口、您是否可以在 PHY 端转储寄存器以查看是否有日志?

    BR

    Sikai

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

    尊敬的中新:

       如前所述、即使在两个 TDA4VM 之间发送 UDP iperf、也会出现数据包丢失、这在我们的 EVM 上是看不到的。以下是一些尝试、希望您可以尝试:

       1.禁用 TC397的通信、查看是否仍然存在丢包。

       2.禁用 TC397和 PORT5、这意味着使用 UART 而非以太网进行监控。 然后检查丢包是否仍然存在。

    BR

    Sikai

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

    尊敬的 Sikai:

    我使用以下拓扑测试了两种情况:

    案例1:  

      主机 PC:iperf3 -s

      ECU2: iperf3 -c 172.16.1.53 -t 10 -b 100MB -P 5 -u

    测试结果:无数据包丢失;iperf3输出日志:

    e2e.ti.com/.../iperf3_5F00_case1.log

    案例2:

      主机 PC:iperf3 -c 172.16.1.40 -t 10 -b 100MB -P 5 -u

      ECU2: iperf3 -s

      结果是:20%的数据包丢失、iperf3输出日志:

    e2e.ti.com/.../iperf3_5F00_case2.log

    CPSW 端口 STAT 信息日志:

    e2e.ti.com/.../cpsw9g_5F00_port_5F00_stat.log

    在 QNX shell 上、使用 cmd:netstat -s -r -p udp

     

    从 netstat 输出信息中可以看到 大量的数据包丢失统计数据:“12926 due to full socket buffers”。

    那么,如何配置 QNX UDP TX/RX 缓冲区大小?

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

    我尝试使用 sysctl 命令修复 UDP TX/Rx 缓冲区大小、 与之前的 iperf3测试没有明显的不同

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

    尊敬的 Sudheer:

       如客户所述、他们仅使用一个端口测试一个 TDA4VM。 但是、当 TDA4VM 作为服务器运行时、它仍然显示20%的数据包丢失。 因此 RGMII TX 良好、而 RX 可能存在一些问题。

       从日志中,数据包会由于套接字缓冲而丢失。 您知道我们可以在哪里更改缓冲区大小吗? 或者这可能是由其他原因引起的?  

    BR

    Sikai