基于 DDS 的通信是否需要多播?

Is multicasting necessary for DDS based communication?

我有一个配置,其中 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 用于此类配置的任何限制/进一步问题吗?

Is it still possible to communicate via DDS ?

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

If yes, through UNICAST i.e. peer to peer connection ?

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

Is using DDS communication beneficial in this case if i already have the option of basic UDP socket programming ?

与 UDP 相比,无法使用多播不会消除 DDS 的任何优势。使用 DDS 时,transport/discovery 配置通常对应用程序不可见,所有 Publish/Subscribe 概念保持不变。

如果您询问使用 DDS 与 UDP 的优势,我认为这本身就值得提出一个新问题。答案将非常广泛:-)

Could you think of any restrictions/ further problems in using DDS for such a configuration ?

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

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