为什么多播会导致 WAN 无法访问?

为什么多播会导致 WAN 无法访问?

我犹豫着要不要问这个问题,因为我可能无法执行诊断步骤来找出问题所在,但是:

我需要重新镜像学校的一个实验室,可能在学校上课时间。我使用多播流,因为服务器将一个文件共享 30 次几乎没有意义。我将速度调低,这样就有余量,而网络的其余部分应该不会受到影响。

我发现这样做似乎会切断我们与 WAN 的连接。其他站点无法访问,互联网也是如此。在多播恢复运行时,从其他地方看不到学校。(多播本身工作正常)。

当这种情况在另一个站点发生时,我与负责网络的同事进行了交谈,他无法找出我们所做的事情中会导致问题的原因。

详细信息:我正在 Mac OS X Server 上使用 DeployStudio 执行 ASR 多播恢复。我们的大多数交换机都是 Cisco 设备。我们确实有许多无线接入点(它们似乎通过无线方式传递多播流;不是最佳的,但也不一定是个问题。)我将流设置为 2 Mb/s(我认为是兆位,而不是字节);系统可以很好地恢复到 8 Mb/s,有时甚至 12 Mb/s(所以我知道还有余量)。

我倾向于在与生产使用网络物理分离的网络进行多播流传输,或者在夏天工作人员较少的时候进行多播流传输,但在这里我没有那么奢侈的条件。

什么可以解释这个问题?

答案1

问题可能是您的交换机无法正确处理多播组,然后将多播作为广播发送(因此您的 WAN 链路或至少 WAN 路由器)会充斥无用的数据)。
因此,您必须至少有一台交换机充当 IGMP 查询器,可以使用命令在 Cisco 2960 和 3750 上启用此功能ip igmp snooping querier。如果您的网络只有 2950,那么您肯定会遇到问题。
您可以在 PC 上运行 wireshark,同时在其他计算机上重新安装映像,从而轻松查看您的交换机是否正在广播多播。(如果一切正常,您应该看不到多播数据)

还请告诉我们使用了哪些多播 IP,有些是保留的,不应使用,有些可以路由,有些不可路由(请参阅http://iana.org/assignments/multicast-addresses/multicast-addresses.xml

答案2

可能会淹没处理网关访问的路由器?

有没有办法从路由器获取 SNMP 信息或从中获取日志信息、CPU 状态等?

答案3

WAN 连接有多大?根据所使用的多播地址,多播流量可能会使 WAN 接口饱和,例如多播地址 224.0.0.1 表示“此子网上的所有主机”,这意味着 WAN 接口必须监听然后丢弃多播流量。

如果 WAN 接口必须监听然后丢弃多播流量,并且多播流量的流动速率为 8 到 12 Mbps,而 WAN 链路小于 8 到 12 mbps,那么我可以看到这会导致问题。

答案4

我的猜测是,这本身不是一个 WAN 问题,而是你的路由器的 LAN 侧接口被交换机发送的多播帧淹没了。

正如另一条评论中提到的,您需要启用 IGMP 侦听,以使您的交换机能够正确限制多播帧。您可能还需要启用 IGMP 侦听查询器,除非您的每个 VLAN 上都有一个多播 (PIM) 路由器。在 Cisco 交换机上,您可以通过在全局配置模式下输入以下两个命令来启用 IGMP 侦听和侦听查询器:

ip igmp snooping
ip igmp snooping querier

您应该确保在网络中的每个交换机上都启用了 igmp 侦听。侦听查询器只需要在一台交换机上启用,假设该交换机在您的每个 VLAN 中都有一个 IP。我的理解是,在每个交换机上启用侦听查询器不会有什么坏处。请注意,要使侦听查询器正常工作,您的交换机将需要在每个 VLAN 中都有一个 IP,或者至少是每个具有您担心限制的多播流量的 VLAN 中的一个 IP。

如果你好奇为什么需要 IGMP 监听:

您可能知道,交换机通常通过查询其 CAM 表来传输流量。通过检查交换机收到的每个帧的源 MAC 地址来填充 CAM 表。交换机看到的每个源 MAC 地址以及相关帧进入交换机的交换机端口都会添加到 CAM 表中。通过这种方式,交换机可以“了解”每个端口连接的 MAC 地址。

交换机使用 CAM 表来确定将传入帧传送到何处。如果目的地如果在 CAM 表中找到 MAC 地址,则交换机知道将帧传送到哪个端口,并且帧仅传送到该端口。如果在 CAM 表中未找到目标 MAC 地址,则帧将泛洪到交换机上的每个端口。

对于多播流量,帧的源 MAC 地址将是多播发送者的 MAC 地址,但帧的目标 MAC 地址将是多播组的 MAC 地址,而不是任何特定个人 PC 的 MAC 地址。此多播 MAC 地址应该绝不通常是任何帧的源地址,因此在正常运行中,交换机永远不知道将多播帧发送到哪里。它别无选择,只能将帧从每个端口泛洪出去。当这种情况发生在非常大的多播流中时,这些泛洪的帧有时会压垮网络上的其他系统。

IGMP 实际上是一种第 3 层协议,旨在允许 IP 主机通知 IP 路由器它们想要加入多播组。从技术上讲,IGMP 与交换机和第 2 层操作无关,但包括 Cisco 在内的许多交换机供应商已为其交换机添加了功能,允许交换机监听(或窥探)IP 主机和启用多播的 IP 路由器之间的 IGMP 流量。

不幸的是,IGMP 侦听仅在相关子网上有多播路由器时才有效。如果没有启用多播的路由器,则没有 IGMP 对话可供“侦听”。这就是 IGMP 侦听查询器的作用所在。它发出通常由 PIM 多播路由器发送的 IGMP 成员资格查询,从而启动交换机“侦听”的交换。

这将是好的如果大多数交换机上都默认启用了 IGMP 侦听,但我认为没有启用的原因是,虽然 IGMP 是 IETF 标准,但 IGMP 侦听没有实际的标准。

相关内容