Fast-DDS 3.6.2 介绍与选型指南
eProsima Fast DDS(原 Fast RTPS)介绍与选型指南:定位沿革、四层架构、开源版功能边界、快速开始路径,附 Fast DDS/Cyclone DDS/OpenDDS/Zenoh 的社区活跃度、版本节奏与兼容矩阵量化对比。
Fast-DDS 3.6.2 介绍与选型指南
目标:面向需要在 Linux 服务器上评估与落地高性能发布/订阅通信中间件的架构师与后端工程师,系统介绍 eProsima Fast DDS 的定位、架构、功能与量化选型依据。本文为认知篇,全部数据来自官方文档站、GitHub Releases 与 shields.io 的联网实查(查询日期:2026-10-23),未混入本地性能测试数据;安装、配置与命令的动手实测内容见本专栏 B1/C1/D1 三篇。
一、信息来源与查询口径
本章说明本文全部事实性数据的来源与查询日期,保证数据可复核。
| 数据类别 | 来源 | 查询日期 |
|---|---|---|
| 版本发布记录(v3.6.2 / v3.2.5 / v2.14.7 / v2.6.12 等) | GitHub eProsima/Fast-DDS Releases Feed(releases.atom) | 2026-10-23 |
| 产品定位、架构、功能特性、商业版对比 | Fast DDS 官方文档站 fast-dds.docs.eprosima.com(latest 对应 v3.6.2) | 2026-10-23 |
| 安装形态(官方 deb 包、CLI 依赖) | 官方文档「Linux installation from binaries」页 | 2026-10-23 |
| 社区活跃度(stars/forks) | shields.io 实时徽章数据(img.shields.io/github/stars / github/forks) | 2026-10-23 |
| 对比组件版本(Cyclone DDS 11.0.1、Zenoh 1.10.1) | 各项目 GitHub Releases Feed(releases.atom) | 2026-10-23 |
💡 说明:OpenDDS 在 GitHub 仓库上未提供 releases 发布订阅源(releases.atom 返回空),其版本信息以 objectcomputing/OpenDDS 仓库主页与 OCI 官网发布为准;本文对比表中该组件仅列实查到的 stars/forks 数据,版本列标注「以官网发布为准」,不做推测性填写。
二、软件概述
Fast DDS 全称 eProsima Fast DDS,是西班牙中间件厂商 eProsima 开源的、OMG(Object Management Group)DDS(Data Distribution Service)规范的 C++ 实现,同时提供符合规范的 API 层与 DDSI-RTPS 线协议实现,用于在实时系统之间建立高效、可靠的信息分发通道(来源:官方文档站「What is Fast DDS?」,查询日期 2026-10-23)。
它采用 DCPS(Data-Centric Publish-Subscribe,以数据为中心的发布/订阅)模型:应用把数据「发布」到一个概念上的「全局数据空间」,感兴趣的「订阅者」由中间件负责匹配与投递,生产者与消费者解耦、多对多通信,服务质量由 QoS 策略逐条协商。
几个关键身份信息:
- 许可与形态:开源版采用 Apache 2.0 许可;同时提供商业订阅版 Fast DDS Pro(含 TSN、IP Mobility、RPC over DDS、低带宽传输、自适应拥塞控制等增强特性与约 24 个月的 LTS 支持)。
- 名称沿革:项目前身是 eProsima Fast RTPS(RTPS 线协议实现);2020 年 12 月 v2.0.0 发布时更名为 Fast DDS,以体现其已覆盖完整 DDS API 而不只是 RTPS 协议层。旧名 Fast RTPS 至今仍大量出现在 ROS 2 相关资料中(ROS 2 的适配层包名
rmw_fastrtps即由此而来),二者是同一产品的前后两个名称,检索资料时需注意(来源:GitHub 仓库沿革与 ROS 2 官方 index 站点,查询日期 2026-10-23)。 - 生态地位:Fast DDS 是 ROS 2(Robot Operating System 2)的默认中间件——ROS 2 的每个 LTS 版本及多数非 LTS 版本都以 Fast DDS 作为默认 RMW 实现(来源:官方文档「Key features」节,查询日期 2026-10-23)。机器人、自动驾驶、工业仿真领域的海量部署都间接建立在它之上。
- 最新稳定版:截至 2026-10-23,GitHub Releases Feed 显示开源版最新特性版本为 v3.6.2(2026-07-01 发布),同时维护 v3.2、v2.14、v2.6 多个分支:v2.14.7(2026-09-08,含 CVE-2026-22591 等 7 项以上 CVE 修复)、v2.6.12(2026-07-23)均为长期分支的维护补丁。也就是说,v3 是当前主线,v2.14/v2.6 仍在安全维护期,生产环境可按升级窗口选择分支。
💡 技术拓展:DDS 中间件的「发现机制」存在多种可选范式,直接决定部署形态——
发现范式 原理/特点 适用场景 自动发现(组播) 参与者通过 UDP 组播互相广播,零配置 局域网、小规模、允许组播的简单环境 Discovery Server(Client/Server) 由中央发现服务器撮合,参与者只连服务器 跨网段/广域网、大规模、禁组播的生产网络 静态发现(EDS XML) 用 XML 预先声明对端地址与实体,不广播 网络封闭、安全敏感、拓扑固定的嵌入式系统 P2P 点对点单播发现 列出初始对端地址逐个握手 中等规模、组播被禁但有固定入口列表 Fast DDS 四种范式全部内置支持,默认使用组播自动发现;本文后续 C1/D1 篇实测的
fastdds discovery命令即第二种范式的官方 CLI 入口。
三、核心架构
Fast DDS 自上而下分四层,官方文档给出了清晰的分层模型(来源:官方文档「Structure of the documentation」与 DDS Layer/RTPS Layer 章节,查询日期 2026-10-23):
| 层次 | 名称 | 职责 |
|---|---|---|
| 1 | DDS API 层 | 符合 OMG DDS 规范的高层 API:DomainParticipant、Topic、DataWriter、DataReader、QoS 策略。面向应用开发者,强调易用性与可移植性 |
| 2 | RTPS 层 | 符合 OMG DDSI-RTPS 规范的底层 API 与线协议实现:RTPSParticipant、RTPSWriter/RTPSReader,暴露更细粒度的协议控制,供性能极致调优者使用 |
| 3 | 传输层 | 可插拔传输架构,当前内置五种传输实现:UDPv4、UDPv6、TCPv4、TCPv6、SHM(共享内存),可按 QoS 与网络条件组合使用 |
| 4 | 工具链 | Fast DDS-Gen(Java 应用,从 IDL 数据类型定义生成 C++/Python 绑定代码)、fastdds CLI(维护与配置命令行工具)、XML Profiles 配置体系 |
数据流走向:应用调用 DDS API 的 DataWriter::write() 发布数据 → Fast CDR 库按 CDR 标准序列化 → 依据 QoS 与可达性选择 SHM/UDP/TCP 传输发送 → 对端 RTPS 层解包 → DDS 层按 Topic 与 QoS 匹配投递到 DataReader 监听回调。整个链路支持「预分配资源、避免无界资源使用、最小化数据拷贝」三类实时性设计约束——这也是官方强调其「可预测、可扩展、资源高效」的落地手段。
配套三件套同样属于产品本体:
- Fast DDS-Gen:IDL 到类型代码的生成器。DDS 是强类型中间件,数据类型先于运行期确定才能预分配内存,Gen 工具就是「类型进代码」的桥梁。
- fastdds CLI:Python 编写的命令行工具(依赖 psutil/xmlschema),承担 Discovery Server 启停、XML 校验、示例启动等运维职责。
- XML Profiles 配置体系:无需改代码即可按 profile 粒度覆盖传输、发现、QoS、日志等几乎所有默认行为(C1 篇专题实测)。
四、功能特性
以下特性清单来自官方文档「Main Features」节(查询日期 2026-10-23),每项均对应开源版能力:
- 双 API 层:DDS 高层 API + RTPS 底层 API,普通业务写高层,性能敏感场景可下沉到 RTPS 层。
- 实时行为:可通过配置提供有界时延的实时特性(预分配、无界资源规避、同步发送模式)。
- 内置 Discovery Server:默认零配置的动态发现之外,支持 Client/Server 发现范式与多种发现拓扑。
- 同步/异步发布模式:同步模式发送方等数据落传输层(低时延、小消息),异步模式经流控制器排队(大消息、削峰)。
- 尽力而为与可靠通信:在 UDP 等 Best-Effort 协议上叠加可选可靠层;也可直接用 TCP 传输获得可靠语义。
- 五种可插拔传输:UDPv4/UDPv6/TCPv4/TCPv6/SHM,其中 SHM(共享内存)传输是同机进程间通信的性能利器,官方还提供了 Docker 部署下 SHM 的专门调优文档。
- 可插拔安全:三级安全插件——远程参与者认证、实体访问控制、数据加密(基于 OpenSSL,符合 DDS Security 规范映射)。
- Statistics 模块:可配置采集交换数据相关的度量信息(官方文档明确该模块与监控后端联动)。
- 流控制器(Flow Controllers):用户可配置的发送限速/限流策略,约束特定条件下发送的数据量。
- 即插即用连接:新应用与服务自动被发现,可随时加入/离开网络而无需重配置。
- 可配置与模块化:代码配置与 XML Profiles 配置双通道;模块化允许简单设备只实现协议子集即可入网。
- 低资源消耗:预分配资源最小化动态分配、避免无界资源、最小化数据拷贝。
- 多平台:默认支持 Linux、Windows、macOS;OS 相关依赖以可插拔模块实现,便于移植到目标平台。
💡 说明:商业版 Fast DDS Pro 相对开源版追加的核心能力为 TSN(时间敏感网络确定性通信)、RPC over DDS(含流式)、IP Mobility(网络切换不断连)、低带宽传输与自适应拥塞控制,并提供直接工程支持与约 24 个月 LTS(来源:官方文档 Fast DDS Pro 对比表,查询日期 2026-10-23)。开源版无这些增值项,但发布/订阅核心能力完全一致。
五、快速开始(最小可用示例)
本节给出「装好之后 10 分钟跑通一对发布/订阅进程」的官方标准路径概览,命令与输出形态引自官方文档站 Getting Started / DDSHelloWorld 示例说明(查询日期 2026-10-23);逐条命令的本地实测回显见本专栏 B1 安装指南,此处不复述实测输出。
官方推荐的最小可用闭环由三步构成:
- 生成类型代码:编写定义 HelloWorld 数据结构的 IDL 文件
HelloWorld.idl,用 Fast DDS-Gen 生成类型支持代码:
# IDL 定义消息类型后,执行生成器(Java 应用,需 JRE 17+)
fastddsgen HelloWorld.idl
- 编译示例应用:在生成的 CMake 项目目录中执行标准 CMake 三板斧,得到
ddshelloworld可执行程序:
cmake -Bbuild -DBUILD_SHARED_LIBS=ON .
cmake --build build
- 双进程互通:分别在两个终端启动订阅端与发布端,中间件自动完成发现与匹配:
# 终端 1:启动订阅者
./ddshelloworld subscriber
# 终端 2:启动发布者
./ddshelloworld publisher
发布端会输出类似 Message: Hello world with index: 1 的回显,订阅端打印收到的消息编号与内容,两端无需任何地址配置即完成匹配——这就是 DDS「全局数据空间 + 自动发现」模型最直观的验证方式。
对于不想写代码的读者,官方还提供交互式 Shapes Demo 图形演示程序与 Docker 官方镜像(Fast DDS Image / Fast DDS Suite Image),可在浏览器中直观看到发布/订阅图形匹配过程(来源:官方文档 Docker Images 章节,查询日期 2026-10-23)。
六、适用场景与限制
6.1 典型适用场景
结合官方定位与生态实践(来源:官方文档、ROS 2 index 站点,查询日期 2026-10-23),Fast DDS 最能发挥价值的场景:
- 机器人与自动驾驶:ROS 2 默认中间件,传感器数据流、控制指令、SLAM 点云等高频多源数据分发的事实标准。
- 工业实时通信:需要毫秒级以下抖动、有界时延的进程间/机间通信,尤其同机部署时 SHM 传输可绕过协议栈。
- 分布式仿真:大规模仿真节点动态加入退出,组播/发现服务器自适应组网。
- 数据总线/遥测分发:以 Topic 为单位的多对多单向数据广播,替代手写 socket 广播与消息中间件胶水层。
6.2 已知限制
选型前应正视的边界(来源:官方文档 Fast DDS Pro 对比表与开源版功能清单,查询日期 2026-10-23):
- 开源版无 LTS 保障:官方明确开源版「无保证维护(No guaranteed maintenance)」,安全修复随社区节奏走(v2.14 分支 2026-09-08 的 CVE 批量修复即是例证);需要长周期保障需采购 Fast DDS Pro。
- TSN / RPC / IP 移动性等高级能力属商业版:开源版不含 TSN over DDS、RPC over DDS、IP Mobility、低带宽传输与自适应拥塞控制。
- Java 工具链依赖:Fast DDS-Gen 需要 JRE 17+,构建环境需要引入 Java 运行时。
- 学习曲线在 QoS 与发现拓扑:DDS 的 QoS 策略组合(可靠性、持久性、历史深度、截止期等 20 余种)与发现范式选择需要经验积累,XML Profiles 虽强大但配置项繁多。
七、同类选型对比(量化)
本节从社区活跃度、版本节奏、兼容矩阵三个可量化维度,横向对比 Fast DDS 与同类主流 DDS 实现及定位相近的新一代通信框架。所有数据实查于 2026-10-23,来源标注在各表下方。
7.1 社区活跃度
| 项目 | Stars(shields.io) | Forks(shields.io) | 托管组织 |
|---|---|---|---|
| eProsima/Fast-DDS | 2.9k | 969 | eProsima |
| eclipse-cyclonedds/cyclonedds | 1.4k | 487 | Eclipse Foundation |
| objectcomputing/OpenDDS | 1.5k | 514 | Object Computing Inc. |
| eclipse-zenoh/zenoh | 3.3k | 402 | Eclipse Foundation |
关键解读:Fast-DDS 在 DDS 三大实现中星数与 forks 均居首位(969 个 forks 意味着大量下游定制/集成);Zenoh 星数最高(3.3k),但它是「pub/sub/query 抽象 + 可选 DDS 桥」的新一代框架,不是 DDS 规范实现,二者更多是互补而非替代关系。
7.2 版本节奏
| 项目 | 最新稳定版(实查) | 发布日期 | 在维护分支 | 节奏特征 |
|---|---|---|---|---|
| Fast DDS | v3.6.2 | 2026-07-01 | v3.6 / v3.2 / v2.14 / v2.6 四线并行 | 特性线半年级演进 + 多分支安全维护(v2.14.7 于 2026-09-08 仍在发 CVE 补丁) |
| Cyclone DDS | 11.0.1 | 2026-03-20 | 11.0.x | 大版本跨度大(上一条实查记录为 2024-05 的 0.10.5,版本号已从 0.10 跳到 11),风格保守、演进慢 |
| OpenDDS | 以官网发布为准 | — | 3.x | GitHub 无 releases feed,发布信息以 OCI 官网为准 |
| Zenoh | 1.10.1 | 2026-09-07 | 1.10.x | 节奏最快(2026 年内 1.9.0 → 1.10.0 → 1.10.1),月级迭代 |
关键解读:Fast DDS 的「多分支并行 + 补丁持续」模式对生产环境友好——主线尝鲜、旧分支吃安全修复两头兼顾;Cyclone DDS 演进慢但稳定预期强;Zenoh 迭代快,跟进成本需评估。
7.3 兼容矩阵
| 维度 | Fast DDS | Cyclone DDS | OpenDDS | Zenoh |
|---|---|---|---|---|
| OMG DDS 规范实现 | ✅ DDS + DDSI-RTPS | ✅ DDS + DDSI-RTPS | ✅ DDS + DDSI-RTPS | ❌(自有协议,经 zenohd 桥接 DDS) |
| 官方语言绑定 | C++(原生)/ Python(Fast DDS Python) | C(原生)/ C++ / Python | C++(原生)/ Java | Rust(原生)/ Python / C / C++ / JavaScript 等 |
| ROS 2 默认中间件 | ✅ 所有 LTS 及多数非 LTS 默认 | ✅ 可选默认(rmw_cyclonedds) | ❌ 无官方 RMW | 经 rmw_zenoh 集成(非默认) |
| 平台支持 | Linux / Windows / macOS | Linux / Windows / macOS | Linux / Windows / VxWorks 等嵌入式 | Linux / Windows / macOS / 嵌入式 RTOS |
| 传输实现 | UDPv4/v6、TCPv4/v6、SHM | UDPv4/v6、TCPv4、SHM(实验) | UDP、TCP、组播、RTPS-over-UDP 等 | TCP、UDP、QUIC、WebSocket、serial 等 |
| 安全插件 | ✅ DDS Security(认证/访问控制/加密) | ✅ DDS Security | ✅ 安全模型 | ✅ TLS/ACL 权限 |
| 商业支持 | Fast DDS Pro(约 24 个月 LTS) | 社区 +第三方便件 | OCI 商业支持 | Zetta Scale 商业支持 |
关键解读:若目标是「严格 DDS 规范 + ROS 2 无缝」选 Fast DDS 或 Cyclone DDS;若是「遗留 C++/Java 大型系统 + 嵌入式多平台」OpenDDS 有历史包袱优势;若追求「跨广域、移动网络、非 DDS 生态统一通信」Zenoh 是更前卫的选择。四者间因都遵循 DDSI-RTPS(Zenoh 除外),应用代码理论上可经重编译在 DDS 实现间移植——这正是 DDS 规范「Application Portability」的设计初衷。
7.4 选型结论速查
| 你的处境 | 建议选型 |
|---|---|
| ROS 2 项目、需要默认路径零阻力 | Fast DDS(默认中间件,官方维护 RMW) |
| 纯 DDS 规范 + C++ 高性能低时延(尤其同机 SHM) | Fast DDS(五传输 + 预分配 + 双 API 层) |
| 需要长周期安全维护承诺 | Fast DDS Pro 或评估 Cyclone DDS |
| 系统已深度绑定 OpenDDS/TAO 生态 | 沿用 OpenDDS,无强迁移理由 |
| 广域/弱网/多语言统一数据平面 | Zenoh(或 Fast DDS + DDS Router 组合) |
💡 边界提示:Fast DDS 是「无中心 Broker、对等发现」的数据分发模型;如果业务需要的是持久化队列、消费重放、中心化 Broker 治理(类似 RocketMQ/Kafka 形态),DDS 并非对症工具,可评估 Bloomberg 开源的 C++ 消息队列,见本平台 《BlazingMQ 介绍与选型指南》。
八、参考链接
- Fast DDS 官方文档站(latest = v3.6.2):https://fast-dds.docs.eprosima.com/en/latest/
- GitHub 仓库 Releases:https://github.com/eProsima/Fast-DDS/releases
- 官方 Linux 二进制安装文档:https://fast-dds.docs.eprosima.com/en/latest/installation/binaries/binaries_linux.html
- Dependencies and compatibilities(依赖与兼容矩阵):https://fast-dds.docs.eprosima.com/en/latest/notes/versions.html
- OMG DDS 规范主页:https://www.omg.org/spec/DDS/About-DDS/
- OMG DDSI-RTPS 规范主页:https://www.omg.org/spec/DDSI-RTPS/About-DDSI-RTPS/
- ROS 2 官方 index:https://index.ros.org/doc/ros2/
- eProsima 官网下载页:https://eprosima.com/index.php/downloads-all
站内相关:《Fast-DDS 3.6.2 介绍与选型指南》、《Ubuntu 22.04 安装 Fast-DDS 3.6.2 指南》、《Fast-DDS 3.6.2 配置参数详解》、《Fast-DDS 3.6.2 常用 CLI 命令详解》