具有两个交换机的 VLAN 上的交换机间 IGMP,每个交换机有一个组播源

网络工程 交换 层2 多播 igmp
2021-07-12 01:00:54

我有一个由两台 HP 2810 交换机组成的网络。连接到每个交换机的一个端口上有一个多播视频编码器,另一个端口上有一个解码器。

有两个 VLAN - 一个控制 VLAN(在默认 VLAN 上运行)和一个视频 VLAN。理想情况下,我想在视频 VLAN 上使用 IGMP 侦听。

如果我关闭交换机上的 IGMP 监听,解码器可以对来自本地编码器或远程编码器的流进行解码。但是,如果我打开IGMP Snooping,则解码器只能加入本地交换机上的组播组。当解码器请求侦听来自远程编码器的流时,IGMP 请求似乎不会传递到另一个交换机。

我希望系统双向工作 - 例如,任一交换机上的解码器都可以收听来自本地编码器或远程编码器的流。

我需要在交换机上配置什么,如何配置?

3个回答

这是一个非常普遍的问题。侦听需要一个完整的多播路由器或网络中igmp 查询器(每个广播域一个)。两者都定期发送多播组请求以了解谁对什么感兴趣。该信息具有生命周期(通常是查询间隔的倍数,默认情况下为 125 秒),因此在没有查询器的情况下几分钟后,您的多播流就会停止。(或者交换机开始向所有端口泛洪,这与启用监听的意图相反)

命令是: vlan ## ip igmp querier

交换机之间的 IGMP 侦听存在问题,因为一台交换机上的 IGMP 消息不会发送到另一台交换机,因此具有源的交换机将不知道另一台交换机的端口应该接收多播帧。Cisco 有一份描述问题文档(以及 Cisco 特定的解决方案)。这不是特定于供应商的问题,而是特定于供应商的解决方案。据我所知,对于 HP 2810,您需要手动将交换机到交换机端口设置为Forward: Causes the switch to forward all IGMP and IP multicast transmissions through the port.

思科对问题的解释:

了解问题及其解决方案

默认情况下,Catalyst 交换机启用了 IGMP 侦听。通过 IGMP 侦听,交换机侦听(或侦听)所有端口上的 IGMP 消息。交换机构建了一个 IGMP 侦听表,该表基本上将多播组映射到请求它的所有交换机端口。

假设,在没有任何事先配置的情况下,接收器 1 和接收器 2 已经用信号表示他们打算接收映射到 L2 多播 MAC 地址 01.00.5e.6f.ef.ef 的 239.239.239.239 的多播流。交换机 1 和交换机 2 都在它们的侦听表中为这些接收器创建一个条目,以响应接收器生成的 IGMP 报告。交换机 1 在其表中输入端口千兆以太网 2/48,而交换机 2 在其表中输入端口快速以太网 1/0/47。

注意:此时组播源还没有开始流量,所有交换机都不知道交换机的mrouter端口。

当交换机 1 上的源开始流式传输组播流量时,交换机 1 已“看到”来自接收器 1 的 IGMP 报告。因此,交换机 1 将组播输出端口传送到千兆以太网 2/48。但是,由于交换机 2 作为 IGMP 侦听过程的一部分“吸收”了来自接收器 2 的 IGMP 报告,因此交换机 1 在端口千兆以太网 2/46 上看不到 IGMP 报告(多播请求)。因此,交换机 1 不会向交换机 2 发送任何多播流量。因此,接收器 2 永远不会收到任何多播流量,即使接收器 2 位于同一 VLAN 中,但仅位于与多播源不同的交换机上。

出现此问题的原因是没有路由器的任何 Catalyst 平台都不真正支持 IGMP 侦听。如果没有路由器端口,该机制就会“崩溃”。如果您想修复此解决方案,您必须让交换机以某种方式学习或知道 mrouter 端口。本文档的解决方案部分解释了该过程。但是,交换机上的 mrouter 端口如何解决这种情况呢?

基本上,当交换机了解或静态了解 mrouter 端口时,会发生两件重要的事情:

  • 交换机将来自接收器的 IGMP 报告“中继”到 mrouter 端口,这意味着 IGMP 报告会发送到多播路由器。交换机不会中继所有 IGMP 报告。相反,交换机只向路由器发送少数报告。就本次讨论而言,报告的数量并不重要。组播路由器只需要知道是否至少有一个接收者仍然对下游组播感兴趣。为了做出决定,多播路由器接收周期性的 IGMP 报告以响应其 IGMP 查询。
  • 在没有接收器“加入”的仅源组播场景中,交换机仅将组播流发送到其 mrouter 端口。

当交换机知道它们的 mrouter 端口时,交换机 2 将交换机从接收器 2 接收到的 IGMP 报告中继到其 mrouter 端口。此端口是快速以太网 1/0/33。交换机 1 在交换机端口千兆以太网 2/46 上获取此 IGMP 报告。从交换机 1 的角度来看,交换机仅收到了另一个 IGMP 报告。交换机将该端口添加到其 IGMP 侦听表中,并开始在该端口上发送多播流量。此时,两个接收方都收到了请求的多播流量,应用程序按预期工作。

但是交换机如何识别它们的路由器端口,以便 IGMP 侦听可以在这样的简单环境中正常工作?解决方案部分提供了一些答案。

惠普对问题的解释:

当交换机收到 IGMP 加入时,它接受主机请求并开始转发 IGMP 流量。这意味着未加入组且未连接到路由器或 IGMP 查询器的端口将不会接收组的多播流量。

看来您可以将交换机设置为 IGMP 查询器:

使用 Switch 作为查询器

查询器操作

IGMP 查询器的功能是轮询启用 IGMP 的 VLAN 中的其他启用 IGMP 的设备以获取组成员信息。如果 VLAN 中没有其他设备(例如组播路由器)充当查询器,则交换机会执行此功能。尽管交换机在启用 IGMP 的 VLAN 中检测到另一个查询器时会自动停止该 VLAN 中的查询器操作,但您也可以使用命令提示符禁用该 VLAN 的查询器功能。

注意正确的 IGMP 操作需要查询器。因此,如果禁用交换机上的查询器功能,请确保在同一 VLAN 上有可用的 IGMP 查询器(最好是备份查询器)。

如果交换机成为特定 VLAN(例如 DEFAULT_VLAN)的查询器,然后随后检测到从同一 VLAN 上的另一个设备传输的查询,则交换机将停止作为该 VLAN 的查询器运行。如果发生这种情况,交换机事件日志会列出一对类似于以下的消息:

I 01/15/01 09:01:13 igmp: DEFAULT_VLAN: Other Querier detected
I 01/15/01 09:01:13 igmp: DEFAULT_VLAN: This switch is no longer Querier

在上述场景中,如果其他设备停止作为默认 VLAN 上的查询器运行,则交换机会检测到此更改,并且只要它不被 VLAN 上的其他某个 IGMP 查询器抢占,就可以成为查询器。在这种情况下,交换机事件日志会列出类似于以下内容的消息,以指示交换机已成为 VLAN 上的查询器:

I 01/15/01 09:21:55 igmp: DEFAULT_VLAN: Querier Election in process
I 01/15/01 09:22:00 igmp: DEFAULT_VLAN: This switch has been elected as Querier

我使用了两个交换机 HP v1910 连接的 throw 端口 gigaethernet 1/0/1 我需要执行以下命令:

_cmdline-mode on   (from console)
key: 512900
System-view
Interface gigabitEthernet 1/0/1 
Igmp-snooping static-router-port vlan X

它对我有用。