IGMP和组播转发

网络工程 路由 多播 igmp
2021-07-31 14:01:36

所以我的问题是,单独使用 IGMP(没有 IGMP 侦听、PIM...等)会使路由器转发多播流量吗?

我正在研究一个有问题的交换机,但我也不了解网络,所以我不确定问题是我的理解还是这个路由器。

我现在正在测试 IGMP,设置非常简单:
A <-> 路由器 <-> B

A 和 B 是 PC 或 NB 什么的,它们都运行 iperf,A 作为发送方,B 作为接收方,它们加入/发送某个多播组。(224.0.55.55)

路由器运行默认的单个 vlan 1,所有接口都在其上。

在路由器及其vlan 1上启用IGMP后,我可以从wireshark观察到路由器查询和B报告成员资格,在路由器上使用show命令也确认成员资格。

但是,当 A 泵多播流量时,我看不到路由器将流量转发到 B。

从我从谷歌的调查来看,大多数 IGMP 使用都绑定到其他协议,几乎没有任何关于 IGMP 的测试用例,或者查询/报告过程只是所有 IGMP 的作用?本身只是维持会员资格?

顺便说一句,IGMP 侦听工作正常,但需要运行 VLC 来主动报告其成员身份,之后我可以看到路由器转发多播流量。

2个回答

除非您明确启用了多播路由,否则路由器不会转发多播。这需要像 PIM 这样的东西。IGMP 是一种链路本地协议。

多播是广播的一种形式,您通常无法跨路由器发送广播。为了能够路由多播,您需要一些控制来防止它被发送到不需要的地方。IGMP 告诉多播路由器(启用多播路由的路由器)将特定多播组的流量发送到发出 IGMP 多播请求的 LAN。IGMP 介于主机和组播路由器之间。

PIM 是一种组播路由协议。有密集模式 (DM) 和稀疏模式 (SM) PIM。即使 PIM-DM 开始时将多播流量泛滥到各处,PIM-DM 也会停止向尚未请求的接口发送多播流量。PIM-SM 甚至不会请求多播流量,直到主机从多播路由器请求它。

IGMP 侦听只是进一步改进,不将多播流量发送到不需要的地方。它不是协议,而是让交换机侦听主机和多播路由器之间的 IGMP 流量以确定需要多播组流量的特定交换机接口的功能,而不是将多播流量发送到交换机未明确请求流量的接口。在没有 IGMP 侦听的情况下,组播流量和广播流量一样,被发送到每个其他的交换机接口,无论接口上的主机是否愿意,这非常浪费网络资源。


顺便问一下,你正在使用的组播组224.0.55.55,被注册为特定目的(的范围内224.0.54.0,以224.0.57.255被注册为阿恩Hvidsten为获取- BCN),你不应该将其用于不同的目的; 你冒着搞乱合法用途的风险。我们有组织本地 IPv4 多播范围,239.0.0.0/8用于本地定义的多播。

据我了解,根据我设置多站点 Cisco VoIP 系统的经验,该系统使用多播进行音乐保持以及信息广播寻呼,多播需要 PIM 才能遍历路由器/将组从一个以太网段扩展到另一个。

对于您问题的第二部分,我相信 IGMP 只是在负责管理组成员身份的各个主机上运行的协议,无论是否涉及告诉上游设备(例如 pim 稀疏模式下的交换机)它想要流,或者让主机 IP 堆栈知道如果它是非托管交换机/密集模式的交换机,这些数据包应该或不应该被丢弃。