IGMP 组播路由器超限

网络工程 转变 多播 igmp
2021-07-25 06:10:41

系统:

我有一个带 IGMP 侦听的 L2 托管 1Gbps 交换机(我正在测试的交换机是 TP-Link TL-SG3216)。我有几个相同的设备(这些是我们正在开发的嵌入式设备)连接到交换机,并且这个系统没有连接到任何其他网络。

虽然所有设备都会向所有其他设备发送一些数据,但大部分时间它们都是成对使用的(这些成对会随着时间而变化)。配对时,它们会在一个方向上使用接近全带宽的连接。我现在遇到的情况是,设备必须一次将 1Gbps 数据流发送到两个或三个设备:我需要多播。

如果我要广播这个数据,其他端口会变得拥挤,并会有效地阻止其他对的有效通信?

我所知道的在这样的交换机上实现多播(而不是广播)的唯一方法是通过 IGMP 侦听(如果此声明不正确,请更正我)。

IGMP 侦听要求设备充当 IGMP 方面的组播路由器。我已向设备添加了 IGMPv2 功能:交换机上具有最低 MAC 地址的设备将成为多播路由器。

该系统的工作原理是:设备可以随心所欲地加入和离开组,并且组播数据由交换机正确定向。到现在为止还挺好。

问题:

在 IGMP 中,多播路由器是每个多播组的成员,并接收发送到任何多播地址的所有数据。一旦在该网络中建立了多个组播组,那么来自多个设备的完整 1Gbps 数据流将被发送到组播路由器,完全超出交换机的链路,从而导致大量数据包丢失。充当多播路由器的设备还必须执行其常规(非路由器)职责。

有没有办法让多播路由器不是多播组的成员,或者至少不是每个数据包都发送?其他人告诉我这是不可能的。

是否有不同的解决方案可以在此交换机上实现多播?


编辑:

看来解决方案是使用不同的交换机:一个内置多播查询器的交换机。这避免了多播路由器带宽不足的问题。

带组播查询器的交换机会不会遇到和原系统组播路由器一样的问题?具体来说,所有多播帧(不仅仅是 IGMP 报告)都被发送到多播路由器(在这种情况下是交换机查询器),并且随着高流量,查询器将被淹没。

2个回答

引用'cpt_fink':

您需要充当多播查询器的东西,而不是多播路由器。我不知道这在 TP-Link 设备上是否可行。– cpt_fink 2015 年 2 月 18 日 5:19

可能的解决方法是:添加任何便宜的网络设备(便宜的路由器、Linux PC 中的旧网卡等)并发送 IGMP v2 或 v3 查询以进行切换。交换机将检测到查询器可用,并将所有多播流量发送到廉价设备。设备的 eth hw 将过滤并拒绝多播数据包。在我的网络中,我捕获了 IGMP v3 查询,并使用 tcpdump 发送数据包。

当找不到 IGMP 查询器时,交换机可能会将多播数据包广播到所有端口。成功 Zajo Bajo

除非您想静态配置您的交换机端口,否则您需要一个多播路由器,并且该路由器将始终接收多播流量。理论上你可以使用交换机上的 L3 接口作为多播路由器,但你的交换机是 L2,所以恐怕你不走运。

最后,请考虑交换机的背板带宽,有些交换机对一组(通常为 8 个)端口使用相同的 ASIC,有效地共享它们之间的有限带宽。我的意思是交换机的总带宽可能远不是 1Gbps x # 端口。因此,即使您可以解决多播路由器问题,您仍然可能会遇到另一个带宽问题。