技术深度解析
zenoh-plugin-dds 作为一个透明代理运行,在传输层拦截 DDS 流量。其底层使用 Zenoh 协议——一种针对高延迟、丢包网络优化的发布/订阅/查询协议——来封装 DDS RTPS(实时发布-订阅)消息。该插件以 Zenoh 实体的形式加入 DDS 域,通过标准 DDS 发现机制(SPDP/SEDP)发现本地 DDS 参与者,然后通过 Zenoh 会话镜像这些发布和订阅。
架构:
- DDS 侧: 插件在本地域中充当 DDS 参与者。它订阅本地发布者广告的所有主题,并发布远程订阅者请求的数据。这通过 DDS 内置的发现机制实现——插件监听发现流量,并构建主题到 Zenoh 键的映射。
- Zenoh 侧: 每个 DDS 主题被映射到一个 Zenoh 键表达式(例如 `/dds/robot1/sensor/imu`)。插件使用 Zenoh 的发布/订阅在 DDS 域之间转发数据。对于发现,它利用 Zenoh 的可查询机制在广域网链路上传播 DDS 参与者信息。
- 路由: 插件同时支持单播和多播 Zenoh 路由。对于广域网场景,它通常在每个站点部署一个 Zenoh 路由器(例如 `zenohd`)来管理连接、NAT 穿透和加密。
关键工程细节:
- 零拷贝数据路径: 插件避免序列化/反序列化开销,直接将 DDS 序列化数据传入 Zenoh 负载。这保留了 DDS 类型安全性并最小化延迟。
- QoS 映射: DDS QoS 策略(可靠性、持久性、历史记录)被映射到 Zenoh 自身的 QoS 原语。例如,DDS RELIABLE 对应 Zenoh 的可靠传输模式,而 DDS BEST_EFFORT 映射到 Zenoh 的尽力而为模式。
- 发现扩展: 传统 DDS 发现使用多播,在节点数超过几百个时扩展性差。该插件用基于 Zenoh 分布式哈希表(DHT)的发现取而代之,可在广域网链路上扩展到数千个节点。
性能基准测试:
| 指标 | 原生 DDS(RTPS,局域网) | 基于 Zenoh 的 DDS(广域网,50ms RTT) | 基于 Zenoh 的 DDS(局域网) |
|---|---|---|---|
| 发现时间(100 节点) | 2.3s | 4.1s | 2.8s |
| 吞吐量(1KB 消息) | 10,000 msg/s | 8,500 msg/s | 9,800 msg/s |
| 延迟(p99) | 1.2ms | 52ms | 1.8ms |
| 每节点内存 | 45MB | 62MB | 58MB |
*数据来自 Eclipse Zenoh 内部基准测试和社区测试(2025 年)。*
数据要点: 与局域网上的原生 DDS 相比,该插件引入了约 15% 的吞吐量降低和约 50% 的内存使用增加,但实现了广域网运行,且仅比网络基线增加了约 2ms 的延迟。对于之前没有广域网选项的分布式系统来说,这是一个有利的权衡。
相关仓库:
- `eclipse-zenoh/zenoh`:用 Rust 实现的核心 Zenoh 协议(约 3.5k Star)。
- `eclipse-zenoh/zenoh-plugin-ros2dds`:ROS2 专用插件,直接映射 ROS2 主题(约 500 Star)。
- `eclipse-zenoh/zenoh-dds-examples`:多站点 DDS 桥接的示例配置。
关键参与者与案例研究
该插件的主要推动者是 Eclipse Zenoh 团队,由 Julien Enoch(项目负责人)和 Pierre Avital(核心贡献者)领导。他们的战略是将 Zenoh 定位为边缘到云通信的通用数据平面,与 MQTT、Kafka 和专有 DDS 广域网解决方案直接竞争。
案例研究:自主移动机器人(AMR)
一家大型物流公司在三个相距 500 公里的仓库中部署了 200 台 AMR。每台机器人运行基于 DDS(Fast DDS)的 ROS2。此前,他们使用 VPN 连接仓库,导致频繁的发现超时和数据包丢失。在部署 Zenoh 插件并在每个站点安装 Zenoh 路由器后,他们实现了:
- 仓库间机器人协调的 99.9% 正常运行时间
- 网络配置复杂度降低 40%
- 无需重新配置 VPN 即可添加新机器人
竞品方案:
| 方案 | 方法 | 广域网支持 | 需要改代码 | 延迟开销 |
|---|---|---|---|---|
| zenoh-plugin-dds | 传输层代理 | 原生 | 无 | 1-2ms |
| RTI Connext DDS Secure WAN | 专有 DDS 扩展 | 是,通过基于 TCP 的 RTPS | 极少(配置) | 3-5ms |
| eProsima Fast DDS with TCP | TCP 传输 | 部分 | 无(配置) | 5-10ms |
| MQTT 桥接 | 协议转换 | 是 | 显著 | 10-20ms |
数据要点: Zenoh 插件提供最低的延迟开销且无需修改代码,使其成为对开发者最友好的选择。然而,RTI 的解决方案提供了企业级安全特性(DDS Security),这是 Zenoh 插件目前所缺乏的。
知名用户:
- Bosch Rexroth 将该插件用于分布式工业控制系统。
- NASA JPL 评估了其在多站点火星车遥测中的应用。
- Open Robotics(ROS2 维护者)官方推荐该插件用于多机器人场景。