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

时间:2018-08-30 08:37:33

标签: udp multicast data-distribution-service ros2 unicast

我有一个配置,其中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进行这种配置时有任何限制/进一步的问题吗?

1 个答案:

答案 0 :(得分:1)

  

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

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

  

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

是的,使用无组播设置,所有通信都是通过UDP单播,对等,无连接完成的。

  

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

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

如果您要问使用DDS相对于UDP的优势,我认为这值得一个新的问题。答案会非常广泛:-)

  

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

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

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