实时发布订阅协议
DDS互操作性有线协议
(DDSI-RTPS)
技术规范
V2.5
(2022-04-01正式发布)
https://www.omg.org/spec/DDSI-RTPS/2.5/PDF
目 录
1 范围 8
2 一致性 8
3 规范性参考文献 8
4 术语和定义 9
5 标识 9
6 附加信息 10
6.1 对OMG规范的修改 10
6.2 如何阅读本文 10
6.3 致谢 11
6.4 到期声明 13
7 概述 13
7.1 序言 13
7.2 DDS网络协议的要求 14
7.3 RTPS网络协议 15
7.4 RTPS平台无关模型(PIM) 16
7.4.1 结构模块 17
7.4.2 消息模块 18
7.4.3 行为模块 19
7.4.4 发现模块 20
7.5 RTPS平台特定模型(PSM) 20
7.6 RTPS传输模型 20
8 平台无关模型(PIM) 21
8.1 引言 21
8.2 结构模块 21
8.2.1 概述 22
8.2.1.1 RTPS虚拟机使用的类的总结 23
8.2.1.2 用于描述RTPS实体和类的类型的总结 23
8.2.1.3 RTPS实体的配置属性 25
8.2.2 RTPS HistoryCache 26
8.2.2.1 new 28
8.2.2.2 add_change 28
8.2.2.3 remove_change 28
8.2.2.4 get_seq_num_min 29
8.2.2.5 get_seq_num_max 29
8.2.3 RTPS CacheChange 29
8.2.4 RTPS 实体(Entity) 30
8.2.4.1 识别RTPS实体:GUID 30
8.2.4.2 RTPS参与者(Participants)的GUID 31
8.2.4.3 参与者中RTPS端点组的GUID 31
8.2.4.4 参与者内RTPS端点的GUID 32
8.2.5 RTPS 参与者(Participant) 32
8.2.6 RTPS组 33
8.2.7 RTPS 端点(Endpoint) 33
8.2.8 RTPS 写入者(Writer) 35
8.2.9 RTPS 读取者(Reader) 35
8.2.10 与DDS实体的关系 35
8.2.10.1 DDS数据写入者(DataWriter) 36
8.2.10.2 DDS 数据读取者(DataReader) 40
8.3 消息模块 43
8.3.1 概述 43
8.3.2 类型定义 44
8.3.3 RTPS消息的总体结构 45
8.3.3.1 RTPS报文头(Header)结构 46
8.3.3.2 消息头扩展HeaderExtension结构 47
8.3.3.3 子消息(Submessage)结构 50
8.3.4 RTPS消息接收器(RTPS Message Receiver) 52
8.3.4.1 消息接收器遵循的规则 53
8.3.5 RTPS SubmessageElements 54
8.3.5.1 GuidPrefix和EntityId 55
8.3.5.2 VendorId 55
8.3.5.3 ProtocolVersion 56
8.3.5.4 SequenceNumber序号 57
8.3.5.5 SequenceNumberSet 57
8.3.5.6 FragmentNumber 58
8.3.5.7 FragmentNumberSet 58
8.3.5.8 Timestamp 58
8.3.5.9 ParameterList 59
8.3.5.10 Count 59
8.3.5.11 ChangeCount 59
8.3.5.12 Checksum 60
8.3.5.13 MessageLength 60
8.3.5.14 UExtension4 60
8.3.5.15 WExtension8 60
8.3.5.16 LocatorList 61
8.3.5.17 SerializedData 61
8.3.5.18 SerializedDataFragment 61
8.3.5.19 GroupDigest 61
8.3.6 RTPS Header 61
8.3.6.1 目的 62
8.3.6.2 内容 62
8.3.6.3 有效性 62
8.3.6.4 接收方状态的变化 62
8.3.6.5 逻辑解释 62
8.3.7 The RTPS HeaderExtension 63
8.3.7.1 目的 63
8.3.7.2 内容 63
8.3.7.3 有效性 63
8.3.7.4 接收方状态的更改 63
8.3.7.5 理论解释 64
8.3.8 RTPS Submessages 64
8.3.8.1 AckNack 66
8.3.8.2 Data 68
8.3.8.3 DataFrag 70
8.3.8.4 GAP 73
8.3.8.5 HeaderExtension 76
8.3.8.6 Heartbeat 76
8.3.8.7 HeartbeatFrag 79
8.3.8.8 InfoDestination 80
8.3.8.9 InfoReply 81
8.3.8.10 InfoSource 83
8.3.8.11 InfoTimestamp 84
8.3.8.12 NackFrag 85
8.3.8.13 Pad 86
8.4 行为模型Behavior Module 87
8.4.1 概述 87
8.4.1.1 示例行为 88
8.4.2 互操作性所需的行为 89
8.4.2.1 通用要求 90
8.4.2.2 所需的RTPS编写器行为 90
8.4.2.3 所需的RTPS读取器行为 91
8.4.3 RTPS协议的实现 92
8.4.4 作家对每个匹配读者的行为 93
8.4.5 符号约定 93
8.4.6 类型定义 93
8.4.7 RTPS编写器参考实现 94
8.4.7.1 RTPS Writer 94
8.4.7.2 RTPS StatelessWriter 97
8.4.7.3 RTPS ReaderLocator 99
9 平台特定模型(PSM):UDP/IP 101
9.1 简介 101
9.2 符号约定 101
9.2.1 Name Space 101
9.2.2 结构的IDL表示和CDR线表示 101
9.2.3 位和字节的表示 102
9.3 RTPS类型的映射 102
9.3.1 全局唯一标识符(GUID) 102
9.3.1.1 GuidPrefix_t的映射 102
9.3.1.2 EntityId_t的映射 103
9.3.1.3 预定义的EntityId 103
9.3.1.4 协议2.2版中已弃用的EntityId 104
9.3.1.5 GUID_t的映射 105
9.3.2 子消息或内置主题数据中出现的类型映射 106
9.3.2.1 IDL Definitions 106
9.3.2.2 Time_t 109
9.3.2.3 Duration_t 109
9.3.2.4 Locator_t 109
9.3.2.5 GroupDigest_t 110
9.3.2.6 Checksum32_t, Checksum64_t, Checksum128_t 110
9.3.2.7 MessageLength_t 110
9.3.2.8 UExtension4_t 110
9.3.2.9 WExtension8_t 111
9.3.2.10 SequenceNumber_t 111
9.3.2.11 ChangeCount_t 111
9.3.2.12 BuiltinEndpointSet_t 111
9.4 RTPS消息的映射 112
9.4.1 总体结构 112
9.4.2 PIM子消息元素的映射 112
9.4.2.1 EntityId 112
9.4.2.2 GuidPrefix 113
9.4.2.3 VendorId 113
9.4.2.4 ProtocolVersion 113
9.4.2.5 SequenceNumber 114
9.4.2.6 SequenceNumberSet 114
9.4.2.7 FragmentNumber 115
9.4.2.8 FragmentNumberSet 116
9.4.2.9 Timestamp 116
9.4.2.10 LocatorList 117
9.4.2.11 ParameterList 117
9.4.2.12 SerializedPayload 119
9.4.2.13 Count 120
9.4.2.14 ChangeCount 120
9.4.2.15 Checksum 120
9.4.2.16 消息长度 123
9.4.2.17 UExtension4 123
9.4.2.18 WExtension8 124
9.4.2.19 GroupDigest 124
9.4.3 其他子消息元素 124
9.4.3.1 LocatorUDPv4 124
9.4.4 RTPS报头的映射 125
9.4.5 RTPS子消息的映射 125
9.4.5.1 Submessage Header 125
9.4.5.2 HeaderExtension子消息 127
9.4.5.3 AckNack Submessage 129
9.4.5.4 Data子消息 129
9.4.5.5 DataFrag自消息 131
9.4.5.6 Gap子消息 132
9.4.5.7 HeartBeat子消息 133
9.4.5.8 HeartBeatFrag子消息 134
9.4.5.9 InfoDestination子消息 134
9.4.5.10 InfoReply 135
9.4.5.11 InfoSource子消息 135
9.4.5.12 InfoTimestamp 136
9.4.5.13 Pad子消息 136
9.4.5.14 NackFrag子消息 137
9.4.5.15 InfoReplyIp4子消息(特定于PSM) 137
9.5 映射到UDP/IP传输消息 138
9.6 RTPS协议的映射 138
9.6.1 HeaderExtension中的ParameterId定义 138
9.6.2 默认定位器 139
9.6.2.1 发现流量 139
9.6.2.2 用户流量 139
9.6.2.3 默认端口号 140
9.6.2.4 简单参与者发现协议的默认设置 140
9.6.3 内置端点的数据表示 141
9.6.3.1 ParticipantMessageData内置端点的数据表示 141
9.6.3.2 简单发现协议内置端点 142
9.6.4 用于表示在线QoS的ParameterId定义 147
9.6.4.1 内容筛选器信息(PID_Content_filter_info) 148
9.6.4.2 相干集(PID_Coherent_set) 150
9.6.4.3 组相干集(PID_Group_Coherent_Set) 150
9.6.4.4 组序列号(PID_Group_SEQ_NUM) 151
9.6.4.5 Publisher Writer信息(PID_Writer_GROUP_Info) 151
9.6.4.6 安全Publisher Writer信息(PID_Secure_Writer_GROUP_Info) 151
9.6.4.7 原始写入程序信息(PID_Original_Writer_Info) 152
9.6.4.8 密钥哈希(PID_KEY_HASH) 152
9.6.4.9 状态信息(PID_STATUS_INFO) 155
9.6.5 为其他DDS规范保留的参数ID 156
9.6.6 协议不推荐的参数ID 156
10 序列化有效载荷表示Serialized Payload Representation 157
10.1 简介 157
10.2 SerializedPayloadHeader和表示标识符 158
10.3 RTPS发现内置终结点的SerializedPayload 158
10.4 其他RTPS内置端点的SerializedPayload 159
10.5 用户定义DDS主题的SerializedPayload 159
10.6 内置端点数据示例 160
10.7 用户定义主题数据示例 163
11 A References 164