源特定的多播OS /驱动程序性能

时间:2012-08-16 20:38:50

标签: linux performance multicast

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

在我看来,这三个选项之间并没有太大的区别。这就是原因。无论如何,多播流量都将击中客户端主机。现在是发送者差异化部分。无论您选择何种方式,都需要进行比较:

  1. 任意大小的两个标识符(您选择),但最有可能是int s
  2. 2 ......
    1. IP地址,如果是IPv4,则为4个字节,如果选择使用不同的多播组,则为
    2. 或端口,如果您选择使用不同的端口,则为2个字节
  3. 再次
  4. 两个IP地址,但比较将由内核执行,而不是您的应用程序
  5. 最重要的是,性能方面没有太大区别,因为您要对两种原始数据类型进行单一比较。无论如何,这种比较将在几个处理器指令中实现,因此无论是在内核还是用户空间执行都没有什么大不了的。

    我会选择减少编程负担的方法。无论选择何种方法,性能都会大致相同。