multicast - 具有多播和单播的 DDS 配置
问题描述
我仍在尝试了解 DDS 及其概念。我有一个配置,其中 2 台笔记本电脑运行基于 dds 的应用程序。我的环境不允许多播,所以我决定进行点对点连接(单播)。为了将两台笔记本电脑放在同一个网络中,我使用以太网电缆连接它们(不确定是否有必要)。
现在我没有更改 QoS 中的任何内容,即我没有为单播做任何设置。但现在我的应用程序正在相互通信。
问题 :
- 参与者是如何被发现的?多播?因为我没有为单播做任何设置。
- 如果我想使用单播,是否有必要将它们置于一个网络下,即用以太网电缆连接?
编辑 :
配置如下:
- 第一台笔记本电脑:Windows 操作系统:基于本机 DDS 的应用程序:发布者:不允许多播。
- 第二台笔记本电脑:Linux:基于 ROS2 的用户:多播没问题
解决方案
开箱即用,DDS 需要支持多播和单播发现。匿名连接通过多播处理。如果您知道收件人的 IP 地址,您可以手动将这些地址配置到单播发现列表中(每个供应商都有自己的方式来命名/处理此列表)。
在大多数情况下,“我们的网络上不允许多播”意味着您的 IT 部门已在定义您的网络的结构的交换机(或多个交换机)上关闭了多播数据包转发。
但是,出厂时符合标准的 DDS 配置不了解此本地策略(怎么可能?)。如果您没有根据当地政策更改配置,DDS 参与者仍将尝试通过多播进行连接,因为您尚未将其关闭。
如果使用 DDS 的机器连接到同一个集线器或非托管交换机(此处定义为您的 IT 部门不关心或配置错误的交换机),并且网络拓扑不跨越托管交换机,并且他们使用默认配置,他们找到彼此,然后他们使用多播匿名发现。
弄清楚如何配置您的 DDS 实现,以添加需要通信的机器的单播 IP 地址。因为发现通常只需要在一个方向上(如果 A 发现 B,那么 B 确实发现了 A,假设 A 和 B 都没有配置为忽略另一个 [1])。
一旦您配置了单播发现,您就可以配置为无组播。如果机器在 IP 跳跃网络(WiFi 等)上,除非 DDS 实现理解多路径,否则会很困难。与供应商交谈,看看是否是这种情况。
[1] 如果不是过度可配置,DDS 什么都不是。
推荐阅读
- php - 如何在 Codeigniter 和 mysql 中进行这样的查询?
- ubuntu - 如何在 ubuntu 中使用密码连接 sshfs
- android - 在Dialog前面显示snackbar
- ios - UITextField 和 UIButton 不可点击
- mql4 - orderSend() 时是否可以显示真实的滑点
- for-loop - 如何在 for 循环中散列整数
- powershell - 使用 CIM CmdLets 将共享权限设置为所有人 FullControl
- python - 逻辑回归 - 机器学习
- excel - 将表格导出到excel Angular 5
- linux - 从 tar 中提取特定文件并将其复制到没有层次结构的自定义文件夹