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.

[参考译文] TDA4VM:有关将 ALE 配置为禁用指向特殊端口的特殊 ARP 匿名广播消息的问题。

Guru**** 2539740 points
Other Parts Discussed in Thread: TDA4VM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1219434/tda4vm-issue-about-configuring-ale-to-disable-special-arp-anouncement-broadcast-message-to-special-port

器件型号:TDA4VM

您好、TI 专家。

我的项目在 QNX+RTOS 环境下使用 sdk8.2、以太网连接如下:

我在如何使用 ALE 功能方面遇到问题、因为我知道、SDK 中的 R5F 2_0 /RTOS 上存在用于 PTP 的 MAC/IP 地址、以此类推。 在启动时、会有一条 ARP 通知广播消息从 R5F 2_0传出到 LAN。 但不允许此 IP 地址出现在 TDA4之外。 在我的项目中、不允许向 port3转移。

我认为 ALE 或许是最好的解决方案。 通过配置 ALE 规则来禁用这个特殊消息传递到 PORT3到外部、但允许它传递到端口1进行调试。 同时不影响其它 ARP 广播消息传递到 PORT3。

我仍然不深入地了解 ALE ,虽然我已经看到了以下的文档。 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1011237/faq-tda4vm-how-to-configure-cpsw-5g-9g-ale

1、我看到在 SDK 中、有些只写入 ENTER、有些写入 ENTER 和策略器。 您能告诉我、什么是 ENTER? 什么是警察? 这两部分有什么关系?

2、对于此问题、我看到 SDK 中已有一个用于 ARP 广播的 ENTER&PORIER、即 ARP 广播包将被转发至所有端口。 此外还有关于主机端口的 R5F 内核 MAC 地址的输入。

>>>>ALE entries:

[MCU2_0]    186.152860 s:      7: Address: ffffffffffff, Member:1ff Su=0 FWDSTLVL=0 IGNMBITS=0
... ..
[MCU2_0]    186.154004 s:     12: Address: 70ff761d92c2, Port: 000 Se=1 Bl=0 TOUCH=0 AGE=0 TRUNK=0		#this is R5F MAC
[MCU2_0]    186.154166 s:     13: EtherType: 0806
...


>>>>ALE policer:
[MCU2_0]    186.161416 s:     0: POLICER_DST_MAC,ALE Index: 7
[MCU2_0]    186.161467 s:     0: POLICER_ETHERTYPE,ALE Index: 13
[MCU2_0]    186.161519 s:     0: POLICER_THREAD,THREAD ID:3
[MCU2_0]    186.161580 s:     0: POLICER_STATS: Hit: 1, RedHit: 0, YellowHit: 0
...

我不知道如何改变或添加 ALE。 当我写入输入项时、上述 SDK 输入项将始终包含此项。 那么、我只添加一个策略器吗? 但目标 MAC 地址已存在。 请帮帮我。 给我一个例子或一些建议?

谢谢。

 

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

    您好!

    Unknown 说:
    1、我看到在 SDK 中、有的只是输入、有的是写入输入、有的是策略器。 您能告诉我、什么是 ENTER? 什么是警察? 这两个部分的关系是什么?

    条目表示它可以是 ALE (地址查找引擎)或策略器规则。
     TDA4VM 中的 CPSW9G 支持1024ALE 条目(存储 MAC 地址/ VLAN 信息/以太网类型/ OUI 类型/ IP 地址等)、并且还根据数据包字段匹配定义端口转发规则。
    此外、支持96个策略器规则将数据包从端口路由到服务器(以太网固件)或客户端内核(MCU2_1、A72..)。

     以太网固件添加的广播 MAC 地址的默认 ALE 条目、ALE 条目中的端口掩码为 CPSW9G 的所有端口。 这意味着如果找到任何以广播地址作为目的 MAC 地址的数据包,它将被转发到除接收端口以外的所有端口。

    如果您需要、可以删除 ALE 条目并添加自定义 ALE 条目、请参阅以下常见问题解答。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1210631/faq-tda4vm-how-to-forward-broadcast-frames-to-hlos-qnx-running-on-a72-by-default
    (按照步骤1来抑制来自以太网固件的 ALE 进入)

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1011237/faq-tda4vm-how-to-configure-cpsw-5g-9g-ale
    以添加 ALE 条目和策略器规则。

    此致、
    苏德黑尔

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

    非常感谢您的答复。

    我有以下问题。

    1、有一个 MCU2-0进入函数:EnetAppUtils_addHostPortEntry (),我认为这个函数是为了匹配 dstMAC(MCU2-0 MAC)并转发到 hostport(MAC2-0 )。

     [MCU2_0]: 12:地址:70ff761d92c2、端口:000 se=1 bl=0 touch=0 ag=0 trunk=0 

    在该函数中,它配置setUcastInArgs.info.secure = truesecure我在头文件中看到的含义如下所示。

    这意味着、如果 MCU2-0 MAC 地址作为源地址、则如果接收端口不等于入口端口:hostPort (MCU2-0)、则该地址将被丢弃。

    但我可以从端口1和端口3转发 ARP 通知消息,其中源地址为 MUC2-0 MAC 地址。 为什么该消息没有被删除?

    这是因为 ARP 消息也属于函数 EthFwCallbacks_setupArpRoute()中的另一个策略器吗? 优先级? 转储信息如下:

     [MCU2_0]   374.040675 s:   7:地址:FFFFFFFF、成员:1ff Su=0 FWDSTLVL=0 IGNMBITS=0 
     [MCU2_0]   374.041743 s:  12:地址:70ff761d92c2、端口:000 se=1 bl=0 touch=0 ag=0 trunk=0
     [MCU2_0]   374.041910 s:  13:以太网类型:0806
     ...
     [MCU2_0]   374.046623 s  :0:policer_dst_MAC、ale Index:7.
     [MCU2_0]   374.046677 s  :0:policer_EtherType、ale 索引:13.
     [MCU2_0]   374.046729 s:  0:policer_thread、thread ID:3
     [MCU2_0]   374.046792 s  :0:policer_stats:hit:1、RedHit:0、YellowHit:0

    2、我想在当前 ALE 中添加一条规则:如果 src-MAC 地址与 MCU2-0 MAC 和 DST-MAC 匹配广播匹配、则应在 PORT3处丢弃(其他端口应正常转发)。
    我发现上述两个 MAC 地址已经在 TI SDK 中使用,我需要在我的项目中保留原始规则:
      (1)。 如果 DST-MAC 地址与 MCU2-0 MAC 匹配、则转发到 hostport (MCU2-0内核)。 在进入函数时实现: EnetAppUtils_addHostPortEntry ()。
      (2)。 如果 DST-MAC 地址与广播匹配、且以太网类型与 ARP 匹配、则转发至所有端口。 在条目 functon 实现: EthFw_setAleBcastEntry()和策略器函数: EthFwCallbacks_setupArpRoute()。

    这种对地雷的要求是否可以实现?  我发现、如果我根据需要添加新的 MCU2-0条目。 它将涵盖上述第(1)条的原有规则。 你能给我一些建议吗?

    谢谢。

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

    您好!

    但是我可以重新生成 ARP 通知消息,其中源地址是端口1和端口3的 MUC2-0 MAC 地址。 为什么此消息没有被删除?

    MCU2-0或任何其他内核传输将是主机端口的 Rx。
    在上述情况下、源 MAC 地址与主机端口映射并设置了安全。 因为主机端口仅接收在 ALE 中添加了源地址的数据包、所以这种情况是有效的。

    如果从外部网络向任何外部端口发送相同的数据包、则该数据包将被丢弃、因为数据包 Rx 端口不是主机端口。

    [MCU2_0]   374.040675 s:   7:地址:FFFFFFFF、成员:1ff Su=0 FWDSTLVL=0 IGNMBITS=0 [/报价]

    在上面的 ALE 条目中添加了"广播"、使得端口屏蔽为0x1ff (屏蔽所有端口位字段)、这意味着如果广播被标识、则将其转发至所有端口。

    2,我想在当前 ALE 中添加一条规则:如果 src-MAC 地址匹配 MCU2-0 MAC 和 DST-MAC 匹配广播,则应在 PORT3上丢弃(其他端口应正常转发)。

    您可以取消屏蔽上述(0x1f7)中的 Port-3位、因此广播数据包不会转发到 Port-3。

    此致、
    苏德黑尔

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

    尊敬的  Sudheer:

    您可以取消屏蔽上述(0x1f7)中的 Port-3位,因此广播数据包不会转发到 Port-3。

    是的,请遵循您的设置,我已经测试 并验证广播包不会转发到端口3。  

    而且、这将阻止除 MCU2-0之外的所有来自 A72的广播数据包通过主机端口。  
    在我的项目中、大多数网络应用都在 A72内核上运行。  需要通过端口3与外界通信。  
    所以、我只需要 将来自 MCU2-0的广播数据包不会转发到端口3。 不包括 A72内核。
    有什么解决办法吗?

    此致、
    北京

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

    尊敬的  Sudheer:

    我已经进行了以下测试:
    我按照 MACDST 和以太网类型添加了 MACSRC 匹配。 并将 src MAC 地址设置为 A72内核。
    结果仍然可以从端口3获得 MCU2-0 ARP 通知消息。


    转储相关条目和策略器:

    MCU2_0]     17.794137 s:      7: Address: ffffffffffff, Member:01b Su=0 FWDSTLVL=0 IGNMBITS=0
    [MCU2_0]     17.795340 s:     13: EtherType: 0806
    [MCU2_0]     17.795528 s:     14: Address: 02df53000002, Port: 000 Se=1 Bl=0 TOUCH=0 AGE=0 TRUNK=0
    ...
    [MCU2_0]     17.799926 s:     0: POLICER_DST_MAC,ALE Index: 7
    [MCU2_0]     17.800009 s:     0: POLICER_SRC_MAC,ALE Index: 14
    [MCU2_0]     17.800062 s:     0: POLICER_ETHERTYPE,ALE Index: 13
    [MCU2_0]     17.800113 s:     0: POLICER_THREAD,THREAD ID:3
    [MCU2_0]     17.800175 s:     0: POLICER_STATS: Hit: 0, RedHit: 0, YellowHit: 0

     通过 Wireshark 从端口3获取 MCU2-0 ARP 公告消息:

    我认为它应该起作用、但实际上不起作用。 我不知道为什么。 您能帮助找出原因吗?

    此致、
    北京

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

    您好!

    但这也会阻止除 MCU2-0外的所有来自 A72的广播数据包通过主机端口。

    是的、ALE 规则使其不会向端口3转发广播数据包、因为我们从条目中删除了端口3掩码。

    因此,我只需要 不将来自 MCU2-0的广播数据包转发到端口3。 不包括 A72内核。
    有什么解决办法吗?
    [/报价]

    它不会基于 ALE 特定的客户端/应用程序核心来阻止数据包转发。 ALE 规则仅适用于以太网交换机的端口。

    此致、
    苏德黑尔

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

    尊敬的  Sudheer:

    不会阻止基于 ALE 特定于客户端/应用程序核心的数据包转发。 ALE 规则仅适用于以太网交换机的端口。

    "对不起,我也没想到会被你撞见的。"
    我能在 Linux 中把它解释为 iptables 吗? 它检查一些条件并执行操作。
    在我的示例中、条件是从端口0到端口3的数据包、SRC MAC 为 MCU2-0、dst MAC 为广播。
    当满足这些条件时、操作将下降。
    这种情况不能通过 ALE 实现?

    此致、
    北京

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

    您好!

    很抱歉,我仍然对 ALE 不太了解。

    如果是组播/广播包 ALE,则决定必须转发哪些和所有端口这些包。 它基于 ALE 输入中的端口掩码。
    如果设置端口为"所有端口"、如果根据 ALE 条目确定了匹配的多播/广播地址的任何数据包、则 ALE 将在所有端口中转发该数据包。

    在 ALE 转发上述组播/广播数据包时,所有端口都显示数据包。 如果主机端口基于策略器规则、则会将其转发给特定客户端(如 A72/Ethfw)。

    在本例中,条件是从端口0到端口3的数据包,SRC MAC 为 Mcu2-0,dst MAC 为广播

    此处、SRC MAC 和 DST MAC 策略器规则仅适用于数据包位于主机端口(用于任何应用程序占用数据包的内部端口)的情况、以及如何继续。
    它将不适用于外部端口。

    此案例不能通过 ALE 实现吗?

     ALE 不支持您的用例、因为当 ALE 确定广播数据包时、它将根据端口掩码向所有端口转发。 如果设置了端口3掩码、则它将转发到端口3、因此数据包将在连接到端口3的外部器件上可见。

    此致、
    苏德黑尔