DDS Fast-RTPS 支持跨网络通信吗?

Posted

技术标签:

【中文标题】DDS Fast-RTPS 支持跨网络通信吗?【英文标题】:DDS Fast-RTPS support communication across networks? 【发布时间】:2019-10-21 03:54:36 【问题描述】:

我是 DDS/Fast-RTPS 的新手。 根据我的理解,发现是基于 LAN 的。它未能发现不在同一 LAN 中的节点。对吗?

我想知道我们是否可以使用 fast-rtps 跨网络通信? 附言。让我们忽略 NAT/防火墙问题。假设我们有一个 IP/TCP 完全可达的网络环境。

【问题讨论】:

【参考方案1】:

DDS 使用多播 UDP。如果您的交换机和其他网络基础设施设置为吞咽多播数据包,或者 TTL 设置得太低,则 DDS 的默认发现实现将无法完成/可见。

您可以提高基础架构上的 TTL,也可以告诉 DDS 库以特定地址为目标(请参阅您的提供商库的文档)。

【讨论】:

感谢您的回复。我不太明白。例如,node1 位于 140.1.1.1,node2 位于 180.2.2.2,我们假设没有任何防火墙/NAT 问题。您的意思是我应该在 node2 中指定(添加初始对等方)140.1.1.1 并在 node1 中指定 180.2.2.2? 设置初始对等体告诉参与者他们应该尝试直接到达该地址,而不是依赖多播。请记住,它仍然是 UDP,因此拓扑中的任何交换机或集线器都有权丢弃数据包。实际上,您只需要在一侧设置一个初始对等点(当它到达另一个节点时,另一个节点会知道它的存在)。但是在两者上设置初始对等点,指向另一个,会缩短发现时间。 我明白了。谢谢!

以上是关于DDS Fast-RTPS 支持跨网络通信吗?的主要内容,如果未能解决你的问题,请参考以下文章

DDS 通信是不是可以在不同网络中的两台计算机之间进行?

连接到 DDS 中的主机:是不是有网络?

DDS

可以在跨操作系统网络共享上使用 git 吗?

C++实现,支持跨平台(Windows,Android,IOS),支持跨语言(C++,C#,Java)的网络库

OPC和DDS的区别?