Fast-DDS 3.6.2 介绍与选型指南

eProsima Fast DDS(原 Fast RTPS)介绍与选型指南:定位沿革、四层架构、开源版功能边界、快速开始路径,附 Fast DDS/Cyclone DDS/OpenDDS/Zenoh 的社区活跃度、版本节奏与兼容矩阵量化对比。

Fast-DDS中间件DDS2026/10/23

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):

层次名称职责
1DDS API 层符合 OMG DDS 规范的高层 API:DomainParticipant、Topic、DataWriter、DataReader、QoS 策略。面向应用开发者,强调易用性与可移植性
2RTPS 层符合 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 安装指南,此处不复述实测输出。

官方推荐的最小可用闭环由三步构成:

  1. 生成类型代码:编写定义 HelloWorld 数据结构的 IDL 文件 HelloWorld.idl,用 Fast DDS-Gen 生成类型支持代码:
# IDL 定义消息类型后,执行生成器(Java 应用,需 JRE 17+)
fastddsgen HelloWorld.idl
  1. 编译示例应用:在生成的 CMake 项目目录中执行标准 CMake 三板斧,得到 ddshelloworld 可执行程序:
cmake -Bbuild -DBUILD_SHARED_LIBS=ON .
cmake --build build
  1. 双进程互通:分别在两个终端启动订阅端与发布端,中间件自动完成发现与匹配:
# 终端 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-DDS2.9k969eProsima
eclipse-cyclonedds/cyclonedds1.4k487Eclipse Foundation
objectcomputing/OpenDDS1.5k514Object Computing Inc.
eclipse-zenoh/zenoh3.3k402Eclipse Foundation

关键解读:Fast-DDS 在 DDS 三大实现中星数与 forks 均居首位(969 个 forks 意味着大量下游定制/集成);Zenoh 星数最高(3.3k),但它是「pub/sub/query 抽象 + 可选 DDS 桥」的新一代框架,不是 DDS 规范实现,二者更多是互补而非替代关系。

7.2 版本节奏

项目最新稳定版(实查)发布日期在维护分支节奏特征
Fast DDSv3.6.22026-07-01v3.6 / v3.2 / v2.14 / v2.6 四线并行特性线半年级演进 + 多分支安全维护(v2.14.7 于 2026-09-08 仍在发 CVE 补丁)
Cyclone DDS11.0.12026-03-2011.0.x大版本跨度大(上一条实查记录为 2024-05 的 0.10.5,版本号已从 0.10 跳到 11),风格保守、演进慢
OpenDDS以官网发布为准—3.xGitHub 无 releases feed,发布信息以 OCI 官网为准
Zenoh1.10.12026-09-071.10.x节奏最快(2026 年内 1.9.0 → 1.10.0 → 1.10.1),月级迭代

关键解读:Fast DDS 的「多分支并行 + 补丁持续」模式对生产环境友好——主线尝鲜、旧分支吃安全修复两头兼顾;Cyclone DDS 演进慢但稳定预期强;Zenoh 迭代快,跟进成本需评估。

7.3 兼容矩阵

维度Fast DDSCyclone DDSOpenDDSZenoh
OMG DDS 规范实现✅ DDS + DDSI-RTPS✅ DDS + DDSI-RTPS✅ DDS + DDSI-RTPS❌(自有协议,经 zenohd 桥接 DDS)
官方语言绑定C++(原生)/ Python(Fast DDS Python)C(原生)/ C++ / PythonC++(原生)/ JavaRust(原生)/ Python / C / C++ / JavaScript 等
ROS 2 默认中间件✅ 所有 LTS 及多数非 LTS 默认✅ 可选默认(rmw_cyclonedds)❌ 无官方 RMW经 rmw_zenoh 集成(非默认)
平台支持Linux / Windows / macOSLinux / Windows / macOSLinux / Windows / VxWorks 等嵌入式Linux / Windows / macOS / 嵌入式 RTOS
传输实现UDPv4/v6、TCPv4/v6、SHMUDPv4/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 3.6.2 介绍与选型指南》、《Ubuntu 22.04 安装 Fast-DDS 3.6.2 指南》、《Fast-DDS 3.6.2 配置参数详解》、《Fast-DDS 3.6.2 常用 CLI 命令详解》