基于DDS的通信需要多播吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于DDS的通信需要多播吗?相关的知识,希望对你有一定的参考价值。

我有一个配置,其中3个应用程序在3个不同的虚拟机上运行,​​它们必须通过DDS,即RTPS协议进行通信。配置如下:

  1. 基于ROS2的ADAS功能
  2. 模拟工具
  3. 基于Python / Tensorflow的机器学习功能

所有3个都需要在不同的VM上。

我们不可能允许MS AZURE VM和我们的网络进行多播。以下是一些问题:

  1. 是否仍然可以通过DDS进行通信?
  2. 如果是,通过UNICAST,即点对点连接?
  3. 如果我已经可以选择基本的UDP套接字编程,那么在这种情况下使用DDS通信是否有益?
  4. 你能想到使用DDS进行这种配置的任何限制/进一步的问题吗?
答案

是否仍然可以通过DDS进行通信?

是的。开箱即用,DDS参与者仅在启动时使用多播来发现其他DDS参与者。可以通过多种方式配置此发现机制。有关如何实现这一点的解释,请参阅此社区知识库文章:Configure RTI Connext DDS to not use Multicast

如果是,通过UNICAST,即点对点连接?

是的,通过无多播设置,所有通信都通过UDP单播,点对点,无连接完成。

如果我已经可以选择基本的UDP套接字编程,那么在这种情况下使用DDS通信是否有益?

在将其与UDP进行比较时,无法使用多播不会消除任何DDS优势。使用DDS时,传输/发现配置通常对应用程序不可见,并且所有发布/订阅概念保持不变。

如果您在询问使用DDS与UDP的优势,我认为这可以保证一个新的问题。答案将非常广泛:-)

你能想到使用DDS进行这种配置的任何限制/进一步的问题吗?

使用此配置,您的配置设置将取决于您运行的网络。这意味着迁移到其他网络可能需要重新配置,例如提供不同的主机名或IP地址。这很不方便,但并不难。

由于您的环境限制了多播的使用,如果您没有提及或发现更多限制,我不会感到惊讶。例如,您对防火墙或网络带宽限制有何了解?同样,DDS可以配置为处理这些事情,但您需要首先了解它们。

以上是关于基于DDS的通信需要多播吗?的主要内容,如果未能解决你的问题,请参考以下文章

rx(rxjs)是来自事件运算符多播吗?

DDS 通信是不是可以在不同网络中的两台计算机之间进行?

使用java的三台服务器之间的UDP单播通信

DDS通信协议与安全实践

基于FPGA和DDS技术的波形产生

tomcat-集群