IGMP 侦听和链路本地组播地址

网络工程 思科 cisco催化剂 多播 igmp
2021-07-24 21:48:49

我有一个网络,其中有许多设备在跨越多个交换机的 VLAN 上向 224.0.0.225 发送数据。每个设备(大约 12 个)以大约 500-600 kbps 的速度发送报告数据。VLAN 上的每个端口,无论接收方是否发送加入,都会被大约 6mbps 的多播流量淹没。

在所有交换机和本地 VLAN 上启用 IGMP 侦听。
pim sparse-mode 配置在mrouter/default 网关上。

如果我show ip igmp snooping groups在交换机上做一个,监听表中就没有条目了。

我知道 224.0.0.1 - 224.0.0.255 属于链路本地保留的 IP 多播范围,这意味着路由器不会转发此范围内的数据包。这些范围也用于路由协议聊天。例如)EIGRP、OSPF、HSRP...等

我有两个问题:
1)我认为答案是肯定的 - 对于 224.0.0.1 224.0.0.255...IGMPv2 是否忽略了这个范围的监听,交换机是否只是将其转发到所有端口?
2) 有没有办法强制 IGMP 监听这个多播流量,并且只将它发送到请求 IGMP 加入的端口?

我有一种感觉,这是应用程序/程序员需要设计他们的设备和应用程序以尊重可扩展的非消费者网络的情况之一。因此,他们应该使用 239.0.0.0/8 范围内的多播地址。

2个回答

我一直在互联网上挖掘......我想我已经回答了我自己的问题。
现在我需要回到应用程序/设备所有者/开发人员那里,看看我们可以做什么,或者进一步将这些设备锁定到他们自己的 VLAN 中。

请留下评论或答案以及任何进一步的建议。

RFC 4541 2.1.2

  1. 目标 IP 地址在 224.0.0.X 之外的非 IGMP 数据包应根据基于组的端口成员表进行转发,并且还必须在路由器端口上转发。

    这是数据路径的主要 IGMP 侦听功能。实现可以采取的一种方法是在软件中维护单独的成员资格和多播路由器表,然后将这些表“合并”到转发缓存中。

  2. 目标 IP (DIP) 地址在 224.0.0.X 范围内但不是 IGMP 的数据包必须在所有端口上转发。

    此建议基于以下事实:许多主机系统在发送或侦听 IP 多播数据包之前不会发送此范围内的加入 IP 多播地址。此外,由于 224.0.0.X 地址范围被定义为本地链路(不被路由),因此似乎没有必要保留该范围内每个地址的状态。此外,一些路由器在 224.0.0.X 地址范围内运行而不发出 IGMP 加入,如果交换机由于没有看到来自路由器的加入组消息而修剪它们,这些应用程序就会中断。

还有一个警告:根据平台的不同,交换机会将所有本地链路多播发送到 CPU。这包括例如 OSPF 流量。

我在 Cisco Catalyst 4500 上注意到了这一点,它将所有 224.0.0.x 流量发送到 CPU。当 CPU 忙时,它会丢弃数据包,包括您的 OSPF 数据包。调试您的 OSPF 会话为什么会掉线,玩得开心。

在平台上关闭 igmp 监听也无济于事。有时 Cisco 注意到这可能不是最好的主意并引入了命令:

access-list hardware capture mode vlan

这将桥接硬件中的多播数据包。

有关详细信息,请参阅http://www.cisco.com/en/US/docs/switches/lan/catalyst4500/12.2/52sg/configuration/guide/secure.html#wp1128851