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.

[参考译文] TM4C129XNCZAD:MAC 层多播地址过滤

Guru**** 2399305 points
Other Parts Discussed in Thread: TM4C129XNCZAD

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1036819/tm4c129xnczad-mac-layer-multicast-address-filtering

器件型号:TM4C129XNCZAD

您好!

我们在繁重的多播环境中工作正常时遇到问题。 TM4C129XNCZAD 性能显著下降、我们开始看到大量 TCP 重新传输。  在 Wireshark 跟踪中、我们看到不同器件的每秒大约1000次多播。  我们对使用 TI-RTOS 的应用程序使用2个多播地址。

除了我们正在使用的2个多播地址之外、是否有办法过滤掉所有内容?

Tivaware 文档似乎表示哈希用于 MAC 地址过滤、而不是多播 IP 地址过滤、但我们仍需要澄清。

 

EMACHashFilterSet

EMACFrameFilterSet

 

EMAC_FRMFILTER_Hash-multicast 表示已接收多播帧的目标地址过滤已使用哈希表启用。 如果不存在,则使用完美的目标地址过滤。 如果与 EMAC_FRMFILTER_hash-and_Perfect 结合使用、则此标志指示应将哈希滤波器用于传入的多播数据包以及完美滤波器。

 

哈希表过滤允许同时过滤多个不同的 MAC 地址,但代价是会产生一些误报结果(当 MAC 地址不是所需地址之一时,采用通过过滤器的数据包的形式)。 计算数据包源或目的 MAC 地址的 CRC、并将底部6位用作64位哈希滤波器表的位索引。 如果哈希表中的位被置位、则认为过滤器已通过。 如果该位清零、则滤波器失败、数据包被拒绝(假设配置的是正常滤波而不是反向滤波)。

 

谢谢!

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

    您好!

    [引用 userid="417032" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1036819/tm4c129xnczad-mac-layer-multicast-address-filtering ] Tivaware 文档似乎表示哈希用于 MAC 地址过滤、而不是多播 IP 地址过滤、但我们仍需要澄清。

     抱歉、我没有多播过滤的经验。 但是、我认为您应该尝试以下方法:

      EMACFrameFilterSet (EMAC0_BASE、 EMAC_FRMFILTER_HASH_AND_Perfect);

     在 TivaWare 驱动程序用户指南中、显示如下。 我的解释是、如果您未指定  EMAC_FRMFILTER_Hash-multicast  标志、则仅使用完美的滤波。 只需指定要使用 EMACAddrFilterSet()过滤的另外两个地址。  

      EMAC_FRMFILTER_hash-and_Perfect 配置 MAC 以过滤帧
    基于任何完美的过滤器集和哈希过滤器(如果已使用启用)
    EMAC_FRMFILTER_hash-unicast 或 EMAC_FRMFILTER_hash-multicast。 在中
    这种情况下、只有当两个滤波器都失败时、数据包才会被拒绝。 如果此选项不存在、则只有一个选项
    滤波器类型的说明、由 EMAC_FRMFILTER_HASH_unicast 和控制
    分别针对单播帧和多播帧的 EMAC_FRMFILTER_Hash-multicast。

    EMAC_FRMFILTER_Hash-multicast 可实现接收的目标地址过滤
    使用哈希表的多播帧。 如果不存在,则完美的目标地址过滤
    使用的。 如果与 EMAC_FRMFILTER_hash-and_Perfect 结合使用、则此标志
    表示哈希过滤器应与一起用于传入的多播数据包
    完美的滤波器。

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

    如果您只使用少数多播地址、则最佳过滤效果、TM4C129使用分层器2 MAC 过滤、请参阅以下链接中的信息:  

    https://networklessons.com/multicast/multicast-ip-address-to-mac-address-mapping

    uint8_t multicast_MAC_ADDR_1[]={0x01、0x00、0x5e、填写多播 DST MAC 地址};
    组播_MAC_ADDR_2 ={0x01、0x00、0x5e、填写组播 DST MAC 地址};

    //完美的过滤示例
    EMACAddrFilterSet (EMAC0_BASE、1、EMAC_FILTER_ADDR_ENABLE);
    EMACAddrSet (EMAC0_BASE、1、组播 MAC_ADDR_1);

    EMACAddrFilterSet (EMAC0_BASE、2、EMAC_FILTER_ADDR_ENABLE);
    EMACAddrSet (EMAC0_BASE、2、组播 MAC_ADDR_2);
    EMACFrameFilterSet (EMAC0_BASE、(EMAC_FRMFILTER_HASH_AND_Perfect));

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

    您好、Tim、

     谢谢! 我想您可以使用上述代码。 是这样吗? 如果有人有相同的问题、我将在这篇文章上添加一个书签供将来参考。