0

我有一个运行 Linux 2.6.33 的嵌入式设备,它发送大量的多播数据,这通常是 LAN 上唯一的同类设备。但是,在同一网络上有两个或多个设备的极少数情况下,我需要一种客户端连接来区分设备的方法。

编辑:单个客户端只对来自单个设备的流量感兴趣。

  1. 我可以在每个数据报中嵌入一个标识符,但这意味着客户端会花费宝贵的时间检查数据包,这可能在驱动程序中更快地实现。慢客户端肯定会开始丢包。

  2. 我可以为每个设备使用单独的多播 IP 地址,或者只是区分每个设备发送到的端口。这已经实施。

  3. 我可以使用特定于源的多播。

我不知道最常见的操作系统和驱动程序实现 SSM 的效率如何,或者每个设备使用不同的多播组是否比依赖 SSM 更快。

由于这完全取决于实现,我想从现场获得有关选项 2 和 3 的建议,并且我想知道仅切换多播端口是否足以区分流量。

4

1 回答 1

1

在我看来,这三个选项之间没有太大区别。这就是为什么。无论如何,多播流量都会到达客户端主机。现在是发件人区分部分。无论您选择哪种方式,都需要比较:

  1. 两个任意大小的标识符(您选择),但很可能是ints
  2. 二...
    1. IP 地址,在 IPv4 的情况下为 4 个字节,如果您选择使用不同的多播组
    2. 或端口,如果您选择使用不同的端口,则为 2 个字节
  3. 再次两个 IP 地址,但比较将由内核执行,而不是您的应用程序

底线是性能方面没有太大区别,因为您将对两种原始数据类型进行一次比较。无论如何,这种比较将在几个处理器指令中实现,因此无论是在内核空间还是用户空间中执行都没有什么大不了的。

我会选择编程负担较小的方法。无论您选择哪种方法,性能都几乎相同。

于 2012-08-16T21:42:35.963 回答