igmp 表查找未命中是否应泛滥到所有端口?

网络工程 转变 交换 MAC地址 多播 igmp
2021-07-30 14:52:54

使用 igmp 侦听,在接收到多播数据包时,它会查找表并决定转发数据包的端口。我想知道的是,如果表中没有该多播地址的条目,应该采取什么措施?

我最初的反应是应该丢弃数据包,因为这就是 igmp 的全部意义所在。但是在igmp表已满的情况下会发生什么?这将导致某些地址不在表中,此时我希望数据包被淹没到所有端口。那是对的吗?如果表已满,是否应该只丢弃不匹配的数据包?

1个回答

RFC 4541,互联网组管理协议 (IGMP) 和多播侦听器发现 (MLD) 侦听交换机的注意事项,第 2.1.2 节。数据转发规则将决定直接放在交换机供应商和网络管理上:

  1. 未注册的数据包被定义为一个 IPv4 多播数据包,其目标地址与早期 IGMP 成员报告中宣布的任何组都不匹配。

如果交换机收到未注册的数据包,它必须在 IGMP 路由器所连接的所有端口上转发该数据包。 交换机可能默认在所有端口上转发未注册的数据包。不向所有端口转发未注册数据包的交换机必须包含一个配置选项,以强制在指定端口上泛洪未注册数据包。

在 IGMPv3 主机与尚不支持 IGMPv3 的侦听交换机混合的环境中,交换机无法泛洪未注册的流可能会阻止 v3 主机接收其流量。或者,在侦听交换机支持所有存在的 IGMP 版本的环境中,洪泛未注册的流可能会导致 IGMP 主机被多播流量淹没,甚至无法接收查询并且无法为其自己发布新的成员资格报告组。

鼓励侦听交换机至少识别和处理 IGMPv3 加入报告,即使此处理仅限于 IGMPv2 加入的行为,即在不考虑任何额外的“包含源”或“排除源”过滤的情况下完成。当无法识别 IGMPv3 加入时,侦听交换机可能会错误地删除组的未注册数据流(如上所述);或者,如果该组之前已作为 IGMPv2 加入(因为数据流被视为已注册),则它可能无法添加到任何新的 IGMPv3 主机的转发。