2199453_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2199453_zh-CN

2199453_zh-CN

使用 SJA1110 进行 IGMP 侦听

你好

我有一台 S32G,配备运行 bsp43 的 SJA1110,正在尝试启用 IGMP 侦听以动态路由多播流。 我发现了一些与 IGMP 有关的特殊问题,但不知道如何解决。 我已经确认,禁用 IGMP 侦听会导致组播数据包涌入交换机,因此 IGMP 侦听选项正在发挥作用...... 但不是预期的行为。

  1. 组播流量总是转发到枚举的最低活动端口
    1. 端口 4 传出的数据流,如果端口 3 上的节点通过 IGMP 请求流量,就会导致流量通过端口 1 传出(如果该链路处于活动状态),就像端口 1 请求流量一样。 如果端口 1 链路未激活,流量将被转发到端口 2(如果该链路激活)。
    2. 我可以用 mdb 手动路由流量,但我希望 IGMP 侦听能自动管理流量。
  2. 启用多播查询器不会导致成员资格查询从交换机端口传出。
    1. DSA 网桥接口上有 IGMP 查询,但在连接到交换机的其他链路上看不到 IGMP 查询
    2. 我怀疑我可能需要安装一个 tc 规则来捕获来自网桥端口的 IGMP 查询并将其重定向到交换机端口?

我不清楚这是 Linux 配置的问题还是交换机硬件的限制。

谢谢您的建议。

Re: IGMP Snooping with SJA1110

恩智浦没有回复我的支持单,本帖也没有回复,因此我将在此记录我的发现。

在 BSP43 上。 当端口由网桥连接时,SJA1105 DSA 驱动程序似乎不支持 SJA1110 的 IGMP 侦听。 在驱动程序设置期间,sja1110 端口设置为独立组网 (SA) 模式,其中 dsa `tag_8021q` 在交换机的每个端口上安装不同的 vlan 查询规则。vlan-lookup 规则使用`tag_8021q`以太类型`0xDADB`和包含端口 ID 等元数据的 vlan标记入口数据包。 这就为主机处理器创建了一种机制,使其能够知道数据包是从哪个端口接收的,并在特定端口上输出数据包。 当端口在网桥中链接时,"tag_8021q "会用与网桥相关联的单一规则取代每个端口的 vlan-lookup规则。 主机处理器现在无法分辨数据包来自哪个端口,也就无法将数据包输出到特定端口。 我认为使用 `vlan-filtering` 也会破坏此处所述的机制(sja1110 显然属于第二种类型,因为它调用了 `dsa_tag_8021q_bridge_join`)。

主机处理器创建的 IGMP 查询器数据包仍然标记为每个端口的 vlan,但 vlan-lookup 只包含网桥的规则,因此 IGMP 查询器数据包会被发送到空白处。 它们被扔进了垃圾桶。 它们不会输出交换机。 可以通过修改 这一行来 改变这种行为


    if (!dp->bridge) {
        tx_vid = dsa_tag_8021q_standalone_vid(dp);
    } else {
        tx_vid = dsa_tag_8021q_bridge_vid(dp->bridge->num);
    }


现在,IGMP 查询器信息将从交换机输出,但仅此还不能启用 IGMP 侦听,因为主机处理器不知道 IGMP 加入/离开是在哪个端口上接收的,因为 "tag_8021q "仍然是全桥范围的,而不是端口特定的。 交换机必须捕获数据包并应用本地 sja1110 标记(ethertype 0xdadc),才能启用 IGMP 侦听。 交换机可通过两个 `mac_fltres` 捕捉数据包并添加标记,但驱动程序已将其用于 PTP 和 STP。 用户空间实用程序 `tc` 可以配置为捕获数据包,但这是通过虚拟链接实现的,虚拟链接不会将标记添加到捕获的数据包中。 最后两个选项是使用 l2- 查找或深度数据包检查。 l2-lookup 可用于通过设置陷阱位来捕获目标 mac 地址 01:00:5E:00:00:16,从而启用 IGMPv3。 这也会匹配任何以 *.0.0.22 结尾的组播 IP 组,因此不是一个好的解决方案。 使用网桥时,深度数据包检测似乎是启用 IGMP 侦听的唯一方法。 无论使用何种捕获机制,该提交都是必要的,否则 sja1110 标记将被 `tag_8021q` 覆盖,而 `tag_8021q` 也只代表桥接器。

Re: IGMP Snooping with SJA1110

请注意,上面建议的解决方案将为网桥上的每个 DSA 端口发送 IGMP 查询... 重新安装 vlan-lookup 规则从正确的端口输出数据包也是一种解决方案,但我认为端口 0 会与网桥安装的 vlan-lookup 发生冲突,因此也不是一个好的解决方案。 发送过多的 IGMP 查询除了会增加流量外,似乎没有任何副作用。

Tags (1)
No ratings
Version history
Last update:
‎02-05-2026 03:23 AM
Updated by: