【问题标题】:DDS configuration with multicast and unicast具有多播和单播的 DDS 配置
【发布时间】:2018-08-30 15:12:22
【问题描述】:

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

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

问题:

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

编辑:

配置如下:

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

【问题讨论】:

    标签: multicast data-distribution-service ros2 unicast


    【解决方案1】:

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

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

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

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

    弄清楚如何配置您的 DDS 实施,以添加需要通信的机器的单播 IP 地址。因为discovery通常只需要在一个方向上(如果A发现B,那么B确实发现了A,假设A和B都没有被配置为忽略另一个[1])。

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

    [1] 如果不是过度可配置,DDS 什么都不是。

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      但是,请注意,不同类型的网络具有自己的特定属性,您可能需要根据这些属性调整配置。例如,通过 WiFi,数据包被丢弃的可能性(尤其是数据突发)比直接用电线连接节点时要大得多。 DDS 允许调整其协议以处理该问题。

      【讨论】:

      • 我还是一头雾水。首先,如果我没有配置单播并且他们仍然相互发现,我想应该是多播发现。但是如何?不允许在一台 PC 上进行多播。这是否意味着,多播受到限制的第二台 PC(基于 ROS2)正在发现在第一台 PC 上运行的应用程序,然后一旦发现发生,那么两者都可以通信,正如 @rip 所说...
      • 还有基于 ROS2 的 PC,其中启用了多播:当我在那里运行 ROS2 节点并查看 Wireshark 时,区别总是 239.255.0.1 这是一个多播地址.但是,一旦我在第一台笔记本电脑上打开另一个应用程序,目的地就会更改为第一台笔记本电脑的 IP 地址。
      • 这取决于“多播已禁用”的含义。这是否意味着它也无法接收多播地址上的数据?如果其中一台 PC 可以通过多播发送出去,而另一台能够接收,则发现过程已经完成。 DDS 发现数据包也包含有关单播地址的信息,即使在通过多播时也是如此。不需要配置,通过查询操作系统获取。就像我说的,唯一确定的方法是嗅探网络。
      • 回应您的第二条评论:因此,即使它已“禁用多播”,您称之为“第一台笔记本电脑”的机器看起来也能够接收包含初始公告的多播数据包基于 ROS2 的 PC 上的 DDS 参与者。从那以后,第一台笔记本电脑能够学习如何通过单播与基于 ROS2 的 PC 联系,然后他们继续单播。这是默认行为,您无需配置任何内容即可实现。默认情况下,多播仅用于初始公告。
      • 多播禁用我的意思是它既不能接收也不能在多播地址上发布!这就是我的想法,但我不确定......有没有办法检查?因为您在第二条评论中提到的内容是有道理的……为此,第一台笔记本电脑应该能够接收多播数据包。
      猜你喜欢
      • 2023-03-30
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多