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.

[参考译文] PROCESSOR-SDK-AM64X:适用于 AM64x v08.06.00.42的 Processor SDK RT-Linux:在具有 iperf3的 CPSW HSR 上丢弃了数据包

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1208666/processor-sdk-am64x-processor-sdk-rt-linux-for-am64x-v08-06-00-42-dropped-packets-on-sw-hsr-on-cpsw-with-iperf3

器件型号:PROCESSOR-SDK-AM64X

您好!

 

我接下来的设置:

  • 是 AM64x-SK
  • 适用于 AM64x v08.06.00.42的处理器 SDK RT-Linux:
  • 内核是- Linux am64xx-evm5.10.168-rt83-gc1a1291911 #1 SMP preempt_RT Mon Feb 27 14:03:20 UTC 2023 Aarch64 Aarch64 GNU/Linux
  • 映像来自 RT SDK 版本 AM64x v08.06.00.42 SDK、所有都是默认版本、但由于电路板是 GP 板、tiboot3.bin 用于 GP 板 -映像名称是 tisdk-default-image-am64xx-evm.wic.xz
  • 通过以太网电缆连接了两条 AM64x-SK

 

eth0 --- eth0

eth1 --- eth1.

 

我对 CPSW 交换机上 Linux 内核的软件 HSR 的 iperf 结果有一些疑问。

 

无 HSR 的测试:

客户端板设置和命令:

 

# ip addr add 192.168.2.20/24 dev eth0

# iperf3 -c 192.168.2.30 -i 10 -b 50m -t 50000 --BIDIR

[ ID][ROLE]间隔          传输    比特率        RETR Cwnd

 [5][TX-C]  0.00-10.00 sec 59.6 MB 50.0 Mbits/sec   0   314 KBytes.       

[7][RX-C]   0.00-10.00 秒 59.8 MB 50.2 Mbits/秒                  

               

 

服务器主板设置和命令:

# ip addr add 192.168.2.30/24 dev eth0

# iperf3 -s

[ ID][ROLE]间隔          传输    比特率        RETR Cwnd

[5][RX-S]   9.00-10.00 sec 6.00 MBytes 50.3 Mbits/秒                  

 [8][TX-S]  9.00-10.00 sec 6.00 MBytes 50.3 Mbits/sec   0134 KBytes.     

 

在服务器和客户端的测试中,50M 上没有 RETR 封装

 

使用 HSR 进行测试:

用于设置的命令:

两个电路板:

IP 链路设置 eth0 down

IP 链路设置 eth1 down

在服务器上:

IP 链路集 DEV ETH0地址70:FF:76:1C:0E:8F

IP 链路集 DEV ETH1地址70:FF:76:1C:0E:8F

在客户端:

IP 链路集 DEV ETH1地址70:FF:76:1C:0E:8E

IP 链路集 DEV ETH0地址70:FF:76:1C:0E:8E

两个电路板:

IP 链路设置 eth0 up

IP 链路设置 eth1 up

ip link add name hsr0 type hsr slave1 eth0 slave2 eth1 supervision 45 version 1.

在服务器上:

ip addr 添加192.168.2.30/24 dev hsr0

在客户端:

ip addr add 192.168.2.20/24 dev hsr0

两个电路板:

IP 链路设置 hsr0 up

 

 

25M 上的结果

客户端

# iperf3 -c 192.168.2.30 -i 10 -b 10M -t 50000 --BIDIR

[ ID][ROLE]间隔          传输    比特率        RETR Cwnd

[5][TX-C]  2000-30.00 sec 29.9 MB 25.1 Mbits/秒2694.3    KB       

[7][RX-C]  2000-30.00 sec 29.8 MB 25.0 Mbits/秒                  

服务器

# iperf3 -s

[ ID][ROLE]间隔          传输    比特率        RETR Cwnd

[8][TX-S]  21.00-22.00 sec 3.00 MB 25.2 Mbits/sec   2981.7 KBytes.         

[5][RX-S]  22.00-23.00 秒3.00 MB 25.2 Mbits/sec                  

[8][TX-S]  22.00-23.00 秒3.00 MB 25.2 Mbits/sec   1  76.0 KBs.       

[5][RX-S]  23.00-24.00 秒 3.00 MB 25.2 Mbits/秒                  

 [8][TX-S] 23.00-24.00 秒 3.00 MB 25.2 Mbits/sec  2676.0 KBytes.    

 

您可以看到、有 RETR 封装... 我将在附件中发送 所有端口的 ethtool 统计信息。

从器件 ETH0 STAT:

e2e.ti.com/.../slave_2D00_eth0_2D00_hsr_2D00_statistics.txt

从器件 ETH1 STAT:

e2e.ti.com/.../slave_2D00_eth1_2D00_hsr_2D00_statistics.txt

主器件 ETH0 STAT:

e2e.ti.com/.../master_2D00_eth0_2D00_hsr_2D00_statistics.txt

主 ETH1 STAT

e2e.ti.com/.../master_2D00_eth1_2D00_hsr_2D00_statistics.txt

我很想知道接下来会发生什么

    ALE_DROP:84.

    Rx_Bottom_fifo_Drop:410

    ALE_SECURE_DROP:257

您能否帮助我理解为什么 HSR 上甚至在25M 上都存在丢弃的数据包... 我做了相同的测试在10M 太,仍然我有丢包...

 

非常感谢

此致

米兰

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

    需要检查的一个项目是在 PREPUNSET_RT 中设置以太网优先级

    #in RT linux to make the networking related kernel services run at higher priority, increases throughput in no packet loss case
    ps aux | grep ksoftirq
    #get the per CPU ksoftirq PIDs, 10 and 21 in this case
    chrt -f -p 10 10 
    chrt -f -p 10 21 

    编辑过、我在这里关于 MAC 地址的第二条评论是无关的。

     Pekka

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

    需要检查的一个项目是在 PREPUNSET_RT 中设置以太网优先级

    #in RT linux to make the networking related kernel services run at higher priority, increases throughput in no packet loss case
    ps aux | grep ksoftirq
    #get the per CPU ksoftirq PIDs, 10 and 21 in this case
    chrt -f -p 10 10 
    chrt -f -p 10 21 

    编辑过、我在这里关于 MAC 地址的第二条评论是无关的。

    您是否检查掉出量以及它是否与 iperf3 TCP 测试或该测试的带宽有关、或者是否后台服务掉出。

     Pekka

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

    在执行5分钟 iperf3测试的从器件侧、我在 ALE_SECURE_DROP 上下降、但在 ALE_DROP 上不下降

    这是我拥有的统计数据

    root@am64xx-evm:~# ethtool -S eth0 | grep drop
    ALE_SECURE_DROP:247.

    root@am64xx-evm:~# ethtool -S eth1 | grep drop
    ALE_SECURE_DROP:271.

    [ ID][ROLE]间隔传输比特率 RETR
    [5][TX-C] 0.00-300.00秒715 MB 20.0 Mbits/sec 243. 发送方
    [5][TX-C] 0.00-300.03 sec 715 MB 20.0 Mbits/sec 接收器
    [7][RX-C] 0.00-300.00秒715 MB 20.0兆位/秒 159. 发送方
    [7][RX-C] 0.00-300.03 sec 715 MB 20.0 Mbits/sec 接收器

    我也会检查您的命令

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

    在 preempt_rt 中设置以太网优先级时、chrt 没有改变任何事情

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

    我认为提高优先级本可以有所帮助。 是否仍有 优先级为 tweak 的 rx_Bottom_fifo_drop?

    Unknown 说:
    ale_secure_drop:247

    在 TRM https://www.ti.com/lit/pdf/spruim2中 、它描述为:

    2.1.4.6.18.1.19.3 ALE 安全压降(偏移= 3A0A0A0h)

    在端口上接收到的由于安全违例(源地址由不同的接收端口拥有)而丢弃(零 PORT_MASK)的帧总数。
    •是与单播、广播或多播地址匹配或由于混杂模式而匹配的任何数据或 MAC 控制帧、以及
    •任意长度(包括小于64字节但大于 RX_MAXLEN 字节)
    •没有 CRC 错误、对齐错误或代码错误
    •源地址是表中设置了安全位的条目、是不同接收端口的端口号。

    因此可能与 MAC 地址有关,我怀疑它是一个循环数据包,源 MAC 是目的 MAC。 您是否能够获得流量跟踪(如中间的 profishark)? 或者、如果您通过电缆断开并运行测试、您是否仍然看到跌落?  

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

    尊敬的 Pekka:

    我仍在对此主题进行调查... 当前状态

    • 当我拔下一些电缆时、没有丢弃的封装
    • 我现在不确定这是不是仅来自 ALE 安全压降。 我注意到、即使没有任何用于测试 ALE_SECURE_DROP 的 trafic 也在增加。 此外、当我长时间开始测试时、我发现与  ALE_SECURE_DROP 显示的结果相比、丢弃的数据包更多... 经过更多调查、我了解 12.2.4.6.18.1.16端口掩码压降的统计信息(偏移= 3A088h)

    似乎 Portmask Drop 比 ALE Secure DROP 更负责 DROP。。。 但我不能推卸这两个责任

    我将需要做测试与 profishark 在中间。  

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

    您好、Pekka

    通过执行 chrt 和设置优先级、我得到了更好的结果、肯定会想到  Rx_Bottom_fifo_drop ...

    现在、平均每秒丢失1个数据包、只有在 HSR 设置中同时连接两根电缆时才会出现这种情况... 如果我们移除一根电缆、就不会丢失封装

    我从  profishark 开始,现在我注意到下一个

    • 有 mac 特定-ctrl-proto-01暂停帧 MAC CTRL

    我对序列号另做了一点注释、但这看起来没问题、因为它是双向测试

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

    通过添加 ipef3窗口大小,结果会更好。 我想我们可以关闭这个 TT

    -w、--window n[KMGT]
    设置套接字缓冲区大小/窗口大小。 该值的目标地址
    服务器和在那一侧使用;在两侧,这个选项
    设置发送和接收套接字缓冲区大小。 减少
    选项可用于(间接)设置最大 TCP 窗口
    尺寸。 请注意、在 Linux 系统上、有效最大窗口为
    大小大约是此选项指定值的两倍
    (此行为不是 iperf3中的错误、而是的"功能"
    Linux 内核中运行、如 TCP (7)和 SOCKET (7)所述。 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    太好了、感谢您的分析、我同意这是有道理的。

     Pekka