我有一台运行Linux 2.6.33的嵌入式设备,它发送大量的组播数据,这通常是LAN上唯一的同类设备。但是,在极少数情况下,同一网络上有两个或更多设备,我需要一种方法来建立客户端连接以区分设备。
编辑:单个客户只对单个设备的流量感兴趣。
我可以在每个数据报中嵌入一个标识符,但这意味着客户端会使用宝贵的时间来检查数据包,这可能会在驱动程序中更快地实现。慢客户端肯定会开始丢包。
我可以为每个设备使用单独的多播IP地址,或者只是区分每个设备发送到的端口。这已经实施。
我可以使用特定于源的多播。
我不知道最常见的操作系统和驱动程序如何有效地实现SSM,或者每个设备使用不同的多播组是否比依赖SSM更快。
由于这完全依赖于实现,我希望从字段中获得有关选项2和3的建议,并且我想知道仅仅切换多播端口是否足以区分流量。
答案 0 :(得分:1)
在我看来,这三个选项之间并没有太大的区别。这就是原因。无论如何,多播流量都将击中客户端主机。现在是发送者差异化部分。无论您选择何种方式,都需要进行比较:
int
s 最重要的是,性能方面没有太大区别,因为您要对两种原始数据类型进行单一比较。无论如何,这种比较将在几个处理器指令中实现,因此无论是在内核还是用户空间执行都没有什么大不了的。
我会选择减少编程负担的方法。无论选择何种方法,性能都会大致相同。