我有一个端口 1 - 5 个多播通道。在端口 2 上,我有一台计算机。两者都在未标记的 VLAN 10 中,并且在端口 3 上标记了更大的网络。
我已经启用了 IGMP:config、vlan 10、ip igmp、ip igmp querier
一切似乎都开始了,唯一的问题是当它获得查询器工作时,它仍然通过 TCPdump 将所有 5 个通道推送到我的 PC。
知道为什么 igmp 不能正常工作吗?
我有一个端口 1 - 5 个多播通道。在端口 2 上,我有一台计算机。两者都在未标记的 VLAN 10 中,并且在端口 3 上标记了更大的网络。
我已经启用了 IGMP:config、vlan 10、ip igmp、ip igmp querier
一切似乎都开始了,唯一的问题是当它获得查询器工作时,它仍然通过 TCPdump 将所有 5 个通道推送到我的 PC。
知道为什么 igmp 不能正常工作吗?
由于 PC 没有发送任何 IGMP 加入,您无法真正从 IGMP 侦听中受益。
IGMP 侦听依赖于侦听(侦听)传递的 IGMP 数据包。这些数据包包含有关 PC 想要加入哪些组播组的信息。然后,交换机能够决定将组的多播流量发送到哪些端口以及阻止哪些端口。
现在考虑 IGMP 未运行的组。源和接收器需要在同一个 VLAN 上。如果在这种情况下启用了 IGMP 侦听,并且没有要侦听的 IGMP 流量,则交换机的 IGMP 侦听表中将没有该组的任何端口,因此流量将被黑洞化。为了避免这种情况,如果交换机没有收到该组的任何 IGMP 数据包,它就不会跟踪该组,而是泛洪流量。
因此,在您的情况下,由于没有 IGMP 数据包,因此无法获知该组,因此流量被淹没。
您可以尝试在 L3 交换机上为 VLAN 10 配置 IGMP,但如果 PC 现在不发送加入,它在收到查询时可能不会发送它们。
注意:一些供应商为仅源 VLAN 实现了一项功能,在 VLAN 上没有接收器的情况下,可以通过侦听多播源来了解组。IGMP 还向表中添加了可以听到 IGMP 查询器的端口,因此现在交换机可以有效地将流量从源转发到路由器,而不会发生泛洪和接收任何 IGMP 数据包。
编辑:
这是 RFC 4541 中讨论此问题的部分:
未注册的数据包被定义为一个 IPv4 多播数据包,其目标地址与早期 IGMP 成员报告中宣布的任何组都不匹配。
如果交换机收到未注册的数据包,它必须在 IGMP 路由器所连接的所有端口上转发该数据包。交换机可能默认在所有端口上转发未注册的数据包。不向所有端口转发未注册数据包的交换机必须包含一个配置选项,以强制在指定端口上泛洪未注册数据包。
因此,如果您尝试上述建议(在 L3 核心交换机的 VLAN 10 上配置“ip igmp”),您的核心将发送 IGMP 查询,然后交换机可以了解 IGMP 路由器的位置。然后它可以恢复为仅将未注册组的任何流量发送到核心。
需要运行show ip igmp
检查IGMP Snooping是否配置正确,是否正常工作。
我们只使用vlan <vid> ip igmp
. 我不确定它的ip igmp querier
实际作用,手册没有提供太多细节 - 我认为它打开了默认情况下打开的查询器功能。
vlan <vid> ip igmp querier help
显示
Description: Specify querier/non-querier capability for the VLAN. IGMP
queries are not sent when the mode is disabled. When
enabled, the device cannot become Querier for the subnet
unless the VLAN has an IP Address (use the 'show ip' command
to determine this). Each subnet must have at least one IGMP
Querier-capable device in order for IGMP to function
properly. The querier interval setting modifies the time (in
seconds) between IGMP queries.
因此,请确保在 VLAN 上配置了一个 IP 地址,或者有另一个交换机/设备用作查询器。