没有合适的资源?快使用搜索试试~ 我知道了~
RTPS规范-v2.2-中文版-pfu.pdf
需积分: 5 3 下载量 185 浏览量
2024-05-17
08:45:29
上传
评论
收藏 3.04MB PDF 举报
温馨提示
试读
177页
RTPS规范-v2.2-中文版-pfu.pdf
资源推荐
资源详情
资源评论
实时发布订阅协议(RTPS)
DDS 互操作有线协议规范
1. 概述
1.1 引言
最近采用的数据分发服务(DDS)规范定义了应用程序级接口和 DDS 的行为,该服务
支持实时系统中以数据为中心的发布订阅(DCPS)。 DDS 规范使用模型驱动架构(MDA)
方法来精确描述以数据为中心的通信模型:
•应用程序如何为其希望发送和接收的数据建模;
•应用程序如何与 DCPS 中间件交互并指定其希望发送和接收的数据以及服务质量
(QoS)要求;
•如何发送和接收数据(相对于 QoS 要求),
•应用程序如何访问数据;
•应用程序从中间件状态中获得的反馈类型。
DDS 最大程度地采用基于类型的接口(即考虑实际的数据类型进行设计的接口)。基于
类型的接口主要有以下优点:
简单易用:程序开发人员可以直接处理自然象征数据的类型设计;
安全可用:在编译阶段即可进行验证;
高效好用:依赖于提前了解的精确数据类型来设计执行代码可以预分配资源使用。
DDS 规范还包括特定于平台的 IDL 映射,因此使用 DDS 的应用程序只需重新编译即可
在 DDS 实现之间切换。通过这种方式 DDS 解决了“应用程序可移植性”问题。
DDS 规范没有提出中间件通过 TCP/UDP/IP 等传输方式交换消息的协议,因此除非提
供特定于供应商的“网桥”,否则 DDS 的不同实现将不会实现彼此之间的互操作。这种情况
类似于其他消息传递的 API 标准(如 JMS)。
随着 DDS 在大型分布式系统中的日益普及,需要定义标准的“有线协议”,允许来自多
个供应商的 DDS 实现进行互操作。所需的“DDS 有线协议”应该能够利用 DDS 可配置的
QoS 设置来优化其对底层传输能力的使用。特别是所需的有线协议必须能够利用多播,尽力
而为和许多 DDS QoS 的无连接的特性。
1.2 DDS 有线协议的要求
在网络通信中,与许多其他工程领域一样,事实上“一种尺寸并不适合所有情况”。工
程设计是关于做出正确的权衡取舍,这些权衡必须平衡相互冲突的需求,如通用性,易用性,
功能丰富性,性能,内存大小和使用,可扩展性,确定性和健壮性。这些权衡取决于信息流
的类型(例如,周期性与突发性,基于状态与基于事件,一对多与请求应答,尽力而为与可
靠,小数据值与大文件等),以及应用程序和执行平台施加的约束。因此,出现了许多成功
的协议,例如 HTTP,SOAP,FTP,DHCP,DCE,RTP,DCOM 和 CORBA。这些协议中
的每一个都填补了一项空白,为特定目的或应用领域提供了良好的功能。
DDS 的基本通信模型是单向数据交换的一种,其中发布数据的应用程序将相关数据更
新“推送”到订阅者的本地高速缓存。此信息流由 DataWriter 和 DataReader 之间隐式建立
的 QoS 合约进行管理。DataWriter 在声明其发布数据的意图时指定其 QoS 合约,DataReade
r 在声明其订阅数据的意图时指定它的 QoS 合约。通信模式通常包括多对多样式配置。部署
DDS 技术的应用程序主要关注的是以最小的开销和有效的方式分发信息。另一个重要的需
求是以强大的容错方式扩展到数百或数千个订阅者。
DDS 规范规定了必须要有内置发现服务,允许发布者动态发现订阅者,反之亦然,并
且无需联系任何名称服务器即可连续执行此任务。
DDS 规范还规定 DDS 实现不应引入任何单点故障。因此协议不能依赖于集中式名称服
务器或集中式信息代理。
部署 DDS 的应用程序的大规模,松耦合,动态特性以及适应新兴传输方式的需求要求
数据定义和协议具有一定的灵活性,以便每个都可以发展进化,同时保持与已部署系统的向
下兼容性。
1.3 RTPS 有线协议
实时发布订阅(RTPS)协议源于工业自动化,实际上已被 IEC 批准为实时工业以太网
套件 IEC-PAS-62030 的一部分。它是一种经过现场验证的技术,目前已在全球数千个工业设
备中部署。
RTPS 专门用于支持数据分发系统的独特要求。作为 DDS 所针对的应用领域之一,工
业自动化社区定义了与 DDS 匹配的标准发布订阅线协议的需求。在底层的行为架构和 RTP
S 的特征方面,DDS 和 RTPS 有线协议之间存在紧密的协同作用。
RTPS 协议旨在能够在多播和无连接的尽力传输方式(例如 UDP/IP)上运行。 RTPS 协
议的主要特点包括:
•性能和服务质量属性,通过标准 IP 网络为实时应用程序提供尽力而为和可靠的发
布订阅通信。
•容错,允许创建没有单点故障的通信网络。
•可延展性,允许使用新服务来扩展和增强协议,同时不破坏向下兼容性和互操作
性。
•即插即用连接,以便自动发现新的应用程序和服务,应用程序可以随时加入和离
开网络,无需重新配置。
•可配置性,平衡数据传输的可靠性和及时性需求。
•模块化,允许简单设备实现协议的子集并加入网络。
•可扩展性,使系统可以扩展到非常大的网络。
•类型安全,以防止应用程序编程错误影响远程节点的运营。
上述特性使 RTPS 成为 DDS 有线协议的绝佳搭档。鉴于其发布订阅机制的根源,RTPS
专门用于满足 DDS 应用程序域提出的需求类型,这并不是巧合。
此规范定义了消息格式,解释和使用场景,它们是使用 RTPS 协议的应用程序交换传输
所有消息的基础。
1.4 RTPS 平台无关模型(PIM)
根据平台无关模型(PIM)和一组 PSM 描述 RTPS 协议。
RTPS PIM 包含四个模块:结构,消息,行为和发现。结构(Structure)模块定义通信端
点。 消息(Messages)模块定义这些端点可以交换的消息集合。行为(Behavior)模块定义
了合法交互集(消息交换)以及它们如何影响通信端点的状态。换句话说,Structure 模块定
义了协议“参与者”, Messages 模块定义了“语法符号”,而 Behavior 模块定义了不同会话
的合法语法和语义。发现(Discovery)模块定义如何自动发现和配置实体。
协议模块
Protocol
DDS模块
行为模块
Behavior
结构模块
Structure
消息模块
Messages
发现模块
Discovery
图 1-1 RTPS 模块
在 PIM 中,消息是根据其语义内容定义的。可以将此 PIM 映射到各种平台特定模型
(PSM)中,例如普通 UDP 或 CORBA 事件。
1.4.1 结构模块
鉴于其发布订阅的根源,RTPS 自然地映射到多个 DDS 概念中。本规范会使用许多 DDS
规范已经使用的相同核心实体。如图 1.2 所示,所有 RTPS 实体都与 RTPS 域相关联,RTPS
域表示包含一组参与者(Participants)的单独通信平面。 参与者包含本地端点(Endpoints)。
有两种类型的端点:读取者(Readers)和写入者(Writers)。读取者和写入者是通过发送
RTPS 消息来传达信息的参与者。写入者告知数据的存在并将数据域(Domain)上的本地可
用数据发送给读取者,读取者可以请求和确认数据。
数据域
Domain
实体
Entity
参与者
Participant
端点
Endpoint
写入者
Writer
消息
Message
无状态写入者
StatelessWriter
有状态写入者
StatefulWriter
读取者
Reader
有状态读取者
StatefulReader
无状态读取者
StatelessReader
1
*
0..*
图 1-2 RTPS 结构模块
RTPS 协议中的活动者与 DDS 实体一一对应,这是通信产生的原因。如图 1.3 所示。
实体 Entity
(DDS)
域参与者 DomainParticipant
(DDS)
域实体 DomainEntity
发布者 Publisher
(DDS)
订阅者 Subscriber
(DDS)
数据写入者 DataWriter
(DDS)
数据读取者 DataReader
(DDS)
实体
Entity
(协议.结构)
参与者 Participant
(协议.结构)
端点
Endpoint
(协议.结构)
写入者
Writer
(协议.结构)
读取者 Reader
(协议.结构)
1
0..*
0..*
1
0..*
1
0..*
1
0..*
1
0..*
+related_rtps_writer
+related_rtps_reader
related_rtps_participant
1
1 1
1 1
1
图 1-3 RTPS 与 DDS 对应关系
结构模块在 2.2 中描述。
1.4.2 消息模块
消息模块定义 RTPS 写入者和读取者之间的原子信息交换的内容。消息(Message)由
一个报文头(Header)后跟一些子消息(Submessage)组成,如图 2.4 所示。每个消息都是
由一系列元素构建的。选择此结构是为了允许扩展子消息的内容和每个子消息的组成,同时
保持向下兼容性。
消息
Message
报文头
Header
1
1..*
1
子消息
Submessage
1
子消息报文头
SubmessageHeader
子消息元素
SubmessageElement
1 1
1 *
图 1-4 RTPS 消息模块
消息模块将在 2.3 中详细讨论。
1.4.3 行为模块
行为模块描述了可以在 RTPS 写入者和读取者之间交换的消息序列,以及时间和每条消
息引起的写入者和读取者状态的变化。
互操作性所需的行为是根据实现必须遵循的最小规则集来描述的,以便实现互操作。实
际实现可能表现出超出这些最低要求的不同行为,具体取决于他们希望如何权衡扩展性,内
存要求和带宽使用。
为了说明这个概念,行为模块定义了两个参考实现。一个参考实现基于有状态写入者
( StatefulWriters ) 和 有 状 态 读 取 者 ( StatefulReaders ), 另 一 个 基 于 无 状 态 写 入 者
(StatelessWriters)和无状态读取者(StatelessReaders),如图 2.2 所示。两种参考实现都
满足互操作的最低要求,因此可以互操作,但由于它们存储在匹配的远程实体上的信息不同,
因此表现出略微不同的行为。 RTPS 协议的实际实现的行为可以是参考实现的完全匹配或
组合。
行为模块在 2.4 中描述。
1.4.4 发现模块
发现模块描述了使参与者(Participants)能够获取域中所有其他参与者(Participants)
和端点(Endpoints)的存在和属性信息的协议。这种
元通信(
metatraffic
)
使每个参与者
(Participant)能够获得域中所有参与者(Participants),读取者(Readers)和写入者(Writers)
的完整信息,并配置本地写入者与远程读取者进行通信,以及本地读取者与远程写入者进行
通信。
发现是一个单独的模块。发现的独特需求,即写入者和读取者进行匹配所需的所有信息
需要通过透明地即插即用传播,使得单个架构或协议不可能满足各种各样的可扩展性,性能
和将部署 DDS 的异构网络的嵌入性需求。从此以后,引入多种发现机制是有意义的,这些
机制从简单和有效(但不是很可扩展)到更复杂的分层(但更具可扩展性)机制。
剩余176页未读,继续阅读
资源评论
轻舟已过40
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功