使用与传输设备一样多的多播组

网络工程 多播 UDP
2021-07-12 06:45:46

我们有一组大约 40 个嵌入式设备,每个都配备了一个 wifi 模块。所有设备都连接到同一个无线网络。所有设备都将数据包发送到同一台“主”计算机。每个设备以 10KB/s、50 pps 的速度发送。数据使用 UDP 发送,主要是因为我们的应用程序可以容忍无序或丢失的数据包。

在我们当前的配置中,每个设备发送到不同的多播地址,计算机加入与设备数量一样多的多播组。同一组播地址不会被多个设备共享。现在的问题是linux有20个系统可以加入的组播组的限制,所以我们不能把这样的配置扩展到40个设备。

因此我有两个问题:

  1. 将 Linux 上可以加入的多播组的数量从 20 个增加到 100 个是否有任何缺点?
  2. 为每个设备使用不同的多播地址有什么好处吗?我可以将所有设备的数据发送到同一个多播地址吗?
2个回答

为每个设备使用不同的多播地址有什么好处吗?

否,除非您的应用程序需要不同的目标多播地址。

我可以将所有设备的数据发送到同一个多播地址吗?

是的,当然,除非您的应用程序中的某些行为反对它。

是的,您可以增加多播成员的最大数量。

查看:

/proc/sys/net/ipv4/igmp_max_memberships

默认情况下,它设置为 20,但您可以将值更改为 40(或更多)。

正确的方法是通过 sysctl 设置。

对于第二部分,如果所有设备都在同一个多播组中,所有设备都会收到来自所有其他设备的所有其他数据包(如广播),这可能会导致更多的电力使用和/或嵌入式处理器的处理电力使用设备。