具有多播和单播的DDS配置

时间:2018-08-30 15:12:23

标签: multicast data-distribution-service ros2 unicast

我仍在尝试了解DDS及其概念。  我有一个配置,其中2台笔记本电脑运行基于dds的应用程序。我的环境不允许多播,所以我决定进行对等连接(单播)。为了使两台笔记本电脑都处于同一网络中,我使用以太网电缆连接了它们(不确定是否有必要)。

现在,我没有更改QoS中的任何内容,即我没有对单播进行任何设置。但是现在我的应用程序正在相互通信。

问题:

  1. 如何发现参与者?多播?因为我没有对单播进行任何设置。
  2. 如果要使用单播,是否有必要将它们置于一个网络下,即用以太网电缆连接?

编辑:

配置如下:

  • 第一台笔记本电脑:Windows操作系统:基于本机DDS的应用程序:发布者:不允许多播。
  • 第二台笔记本电脑:Linux:基于ROS2的订户:组播没有问题

2 个答案:

答案 0 :(得分:1)

开箱即用,需要DDS支持多播和单播发现。匿名连接通过多播处理。如果知道收件人的IP地址,则可以将这些地址手动配置到单播发现列表中(每个供应商都有自己的方式来命名/处理此列表)。

在大多数情况下,“我们的网络上不允许多播”表示您的IT部门已关闭了定义网络结构的一台(或多台)交换机上的多播数据包转发。

但是,出厂时符合标准的DDS配置不了解此 local 策略(怎么可能?)。如果您尚未根据本地策略更改配置,则DDS参与者将静止尝试通过多播进行连接,因为您尚未将其关闭。

如果使用DDS的计算机连接到同一集线器或非托管交换机(此处定义为IT部门不关心或配置错误的交换机),并且网络拓扑不跨越< em>托管开关,他们使用默认配置并找到对方,然后他们使用多播匿名发现

弄清楚如何配置DDS实现,以添加需要通信的计算机的单播ip地址。因为发现通常仅在一个方向上需要(如果A发现了B,那么假设A和B都没有配置忽略另一个[1],那么B已经发现了A)。

为单播发现配置后,就可以配置为无组播。如果机器在IP跳频网络(WiFi等)上,除非DDS实现理解多路径,否则将很困难。与供应商联系,看是否是这种情况。

[1] DDS如果不是可配置的,那就算什么了。

答案 1 :(得分:1)

  

如何发现参与者?多播?因为我没有对单播进行任何设置。

由于您将DDS用作ROS2框架的一部分,并且我不熟悉如何设置两者相互交互的确切细节,因此我不可能完全确定地回答此问题。话虽如此,从您的描述看来,参与者确实确实在使用多播来发现彼此。

获得结论性答案的最佳方法是嗅探网络-假设您具有执行此操作所需的特权。例如,您可以使用Wireshark,它带有RTPS分解器,可让您过滤RTPS消息。 (RTPS是标准化DDS有线协议的名称。)签出目标地址,看看是否在多播范围内检测到任何地址。您可以在启动单个基于DDS的应用程序时执行此操作。它将立即开始通过网络宣布自己。

  

是否有必要将它们置于一个网络中,即如果我想使用单播,请用以太网电缆连接?

如果要使用单播,则需要知道所有对等节点的IP地址或主机名。只要那些对等节点可以通过UDP相互访问,您就可以开始使用。 ping通常但并非总是如此,会让您知道是否是这种情况。防火墙是造成问题的典型原因。

但是,请注意,不同类型的网络具有它们自己的特定属性,您可能必须将其调整为该属性。例如,通过WiFi,数据包丢失的可能性(尤其是数据突发)比直接用电线连接节点时大。 DDS允许调整其协议以对其进行处理。