系统:
我有一个带 IGMP 侦听的 L2 托管 1Gbps 交换机(我正在测试的交换机是 TP-Link TL-SG3216)。我有几个相同的设备(这些是我们正在开发的嵌入式设备)连接到交换机,并且这个系统没有连接到任何其他网络。
虽然所有设备都会向所有其他设备发送一些数据,但大部分时间它们都是成对使用的(这些成对会随着时间而变化)。配对时,它们会在一个方向上使用接近全带宽的连接。我现在遇到的情况是,设备必须一次将 1Gbps 数据流发送到两个或三个设备:我需要多播。
如果我要广播这个数据,其他端口会变得拥挤,并会有效地阻止其他对的有效通信?
我所知道的在这样的交换机上实现多播(而不是广播)的唯一方法是通过 IGMP 侦听(如果此声明不正确,请更正我)。
IGMP 侦听要求设备充当 IGMP 方面的组播路由器。我已向设备添加了 IGMPv2 功能:交换机上具有最低 MAC 地址的设备将成为多播路由器。
该系统的工作原理是:设备可以随心所欲地加入和离开组,并且组播数据由交换机正确定向。到现在为止还挺好。
问题:
在 IGMP 中,多播路由器是每个多播组的成员,并接收发送到任何多播地址的所有数据。一旦在该网络中建立了多个组播组,那么来自多个设备的完整 1Gbps 数据流将被发送到组播路由器,完全超出交换机的链路,从而导致大量数据包丢失。充当多播路由器的设备还必须执行其常规(非路由器)职责。
有没有办法让多播路由器不是多播组的成员,或者至少不是每个数据包都发送?其他人告诉我这是不可能的。
是否有不同的解决方案可以在此交换机上实现多播?
编辑:
看来解决方案是使用不同的交换机:一个内置多播查询器的交换机。这避免了多播路由器带宽不足的问题。
带组播查询器的交换机会不会遇到和原系统组播路由器一样的问题?具体来说,所有多播帧(不仅仅是 IGMP 报告)都被发送到多播路由器(在这种情况下是交换机查询器),并且随着高流量,查询器将被淹没。