具有多播和单播的DDS配置

问题描述 投票:1回答:2

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

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

题 :

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

编辑:

配置如下:

  • 第一台笔记本电脑:Windows操作系统:基于本机DDS的应用程序:发布者:不允许多播。
  • 第二台笔记本电脑:Linux:基于ROS2的用户:组播没问题
multicast data-distribution-service ros2 unicast
2个回答
1
投票

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

由于您使用DDS作为ROS2框架的一部分,我不可能完全确定地回答这个问题,而且我不熟悉两者如何设置以进行交互的确切细节。话虽如此,从你的描述来看,似乎参与者确实使用多播来发现彼此。

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

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

如果要使用单播,则需要知道所有对等节点的IP地址或主机名。只要这些对等节点可以通过UDP到达对方,就可以了。通常,但并非总是如此,ping会告诉您这是否是这种情况。防火墙是导致问题的典型原因。

但是,请注意,不同类型的网络具有自己的特定属性,您可能需要调整配置。例如,通过WiFi,丢弃数据包的可能性(特别是数据突发)远远大于直接用线路连接节点时的可能性。 DDS允许调整其协议来处理它。


1
投票

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

“在我们的网络中不允许多播”,在大多数情况下,意味着您的IT部门已经在定义网络结构的交换机(或交换机)处关闭了多播数据包转发。

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

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

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

配置单播发现后,可以配置no-multicast。如果机器在IP跳跃网络(WiFi等)上,除非DDS实现了解多路径,否则将很难。与供应商交谈,看看是否是这种情况。

[1]如果没有过度配置,DDS就没什么了不起的。

© www.soinside.com 2019 - 2024. All rights reserved.