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.

[参考译文] TMS320C6678:以太网:ALE 传入数据包过滤

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/661549/tms320c6678-ethernet-ale-incoming-packet-filtering

器件型号:TMS320C6678

您好!

我正在尝试使用 ALE 来过滤不定向到以太网 MAC 地址的传入数据包(我同时使用外部以太网端口)。 当我仅连接一个端口时、似乎可以正常工作、但当我连接两个端口时、数据包会从一个端口转发到另一个端口。

由于两个端口都连接到同一台交换机并位于同一子网中、C6678会生成"无限循环"、因为进入端口1的数据包被转发到端口2、然后由交换机返回到端口1。

A 按如下方式配置 ALE:

uint32_t ALE_Ctrl=
(1<<4)|//no learn
(3<0);//3=Forward、2=learn、1=block、0=disable

hCpsw->ALE_PORT_CONTRAL_REG_0]=ALE_CTRL;
hCpsw->ale_port_control_REG[1]=ale_ctrl;
hCpsw->ale_port_control_REG[2]=ale_ctrl;


CSL_CPSW_3Gf_ale_mcastaddr_entry mc;
memset (MC.macAddress、0x0FF、 6);
MC.mcastFwdState=3;
MC.portMask=1;
MC.SuperEnable=0;
CSL_CPSW_3GF_setAleMcastAddrEntry (0、 &mc);

CSL_CPSW_3Gf_ALE_UNCASTADDR_Entry ucastAddrCfg;
ucastAddrCfg.ucastType = ALE_UCASTTYPE_UCAST_NOAGE;//添加永久单播地址 entryALE_UCASTTYPE_UCAST_NOAGE。
ucastAddrCfg.secureEnable = 错误;
ucastAddrCfg.blockEnable = 错误;
ucastAddrCfg.portNumber = 0;//为此端口添加 ALE 条目

memcpy (ucastAddrCfg.macAddress、&bsp_c66_eth_drv_mac_adessessessessessessessm[1]。slics[0]、6);//设置 MAC 地址1
CSL_CPSW_3GF_setAleUnicastAddrEntry (1、&ucastAddrCfg);

ucastAddrCfg.portNumber = 0;//为此端口添加 ALE 条目
memcpy (ucastAddrCfg.macAddress、&bsp_c66_eth_drv_mac_adessessessessessessessessessessm[2].slics[0]、6);//设置 MAC 地址2
CSL_CPSW_3GF_setAleUnicastAddrEntry (2、&ucastAddrCfg);

有什么建议吗?

谢谢

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

    团队将收到通知。 他们将直接在此处发布反馈。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否发布您正在使用的 SDK 版本?

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

    我正在使用旧的 pdk_C6678_1_0_0_12 (我使用 pdk_C6678_1_1_2_6进行了对比检查、发现没有差异)。


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

    就像余数一样、我尝试使用 ALE 来过滤所有传入的 MAC 地址、但:
    -广播
    -以太网端口1和2的 MAC 地址
    我不希望 C6678充当桥接器、也就是说它不必将传入的数据包从端口路由到另一个端口(包括广播)、因为我的端口都通过同一个外部以太网交换机连接到同一子网络。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    很抱歉、我们仍在处理此问题、并尝试在1-2天内更新您的信息。

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

    我们在这里进行了一些讨论。 C6678的 CPSW 是一款3端口开关(两个 EMAC 和一个主机端口)、如果您将两个 EMAC 端口与终端设备连接、它应该可以工作。 交换机是第2层交换机,它只关心 MAC 地址,而不考虑子网。 "由于两个端口都连接到同一台交换机"=>您是说两个端口都连接到外部交换机吗?

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

    是的、两个 EMAC 都连接到同一个外部开关(也连接到 PC)。

    根据我的理解、在 ALE IN BYPASS 上、所有传入的数据包都从 EMAC 传输到主机端口、然后传输到数据包 DMA、并直接传输到我的 RX 队列。

    使用 ALE 使能、I 设置:
    广播地址,端口掩码=1表示它只能进入主机端口(不能同时路由到其它 EMAC 端口)
    2. EMAC 的单播地址1.
    3. EMAC 的单播地址2.

    我正确地接收到 RX 队列中的广播和数据包、其中 MAC 地址与 EMAC 1或 EMAC 2 ALE 条目匹配。 显然、这些数据包不会在非接收端口上复制(例如、如果数据包到达 EMAC 1、则不会复制到 EMAC 2)。

    当接收到不匹配的 MAC 地址时、它在非接收端口上复制的数据包、例如、假设在 EMAC 1上接收到的数据包将复制到 EMAC 2。 这是意外和不必要的行为。

    在最坏的情况下、网络上不存在的 MAC 地址会产生无限循环。 示例:
    - DSP 生成一个带有无效 MAC 的数据包,并从 EMAC 1发出
    -外部交换机在其端口1上接收数据包,并将其复制到所有其它端口
    -外部交换机端口2连接到 DSP EMAC 2
    - DSP 在 EMAC 2上接收数据包,由于数据包不匹配,它会在 EMAC 1上自动复制数据包
    - extern 交换机在其端口1上接收,并且... 循环、因为交换机从不知道该 MAC 地址与哪个端口相关联
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    在设置中、两个开关(C6678 CPSW、一个外部开关)通过两根电缆连接、这在网络中是不允许的。

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我同意我的配置并不常见(我仅在特殊测试设置中使用它)、无论如何、在我的操作配置中、我不能让 C6678将数据包从一个 Emacs 复制到另一个 Emacs。 测试配置是显而易见的、但我假设即使我使用两个外部开关(在这种情况下、没有环路)、也会附加这个参数。

    在我的 ALE 设置中、广播消息不会重复、只会传输到主机端口。 它仅附加 MAC 地址与 ALE 中设置的任何 MAC 地址不匹配的数据包。

    在哪里可以防止这种情况? 有一种方法可以设置 ALE 以简单地丢弃与 MAC 地址不匹配的数据包?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    有新消息吗?

    有一种方法可以将 ALE 设置为简单地丢弃与我的 MAC 地址和广播地址不匹配的数据包?

    有一种方法可以将 ALE 设置为从不将数据包从一个 Emacs 转发到另一个 Emacs、但仅在传入的 MAC 地址与我的 MAC (EMAC1和 EMAC2)和广播地址匹配时才转发到主机端口?

    即使回答为"否"、也会感谢您的回复、因此我可以停止尝试找到良好的设置。

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

    如果有任何解决方案、您可以查看2.3.6 GbE 地址查找引擎(ALE)子模块架构用户指南。

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、但我必须承认、我觉得文档有点难以理解。 该读数的结果是我发布的设置、它不起作用。 这就是我在这里寻求帮助的原因... 希望通过示例(或至少建议)向我展示使用 CSL 的正确设置。