【DDS】DDSI-RTPS规范
DDS DDSI-RTPS规范
背景
- DDSI-RTPS:全称“Real-time Publish Subscribe Protocol DDS Interoperability Wire Protocol”,它是DDS Wire-protocol。是DDS实施互操作性(标准化)协议。(一下将DDSI-RTPS,简称为RTPS)
- 关于DDS,参考:
【DDS】DDS与OpenDDS - 这里的Wire Protocol指的是?他指的是一种传输机制。
A wire protocol is the mechanism for transmitting data from point a to point b.
- 本文主要关注:RTPS规范中,数据交互的结构(可以大致理解为网络拓扑结构)
- RTPS与具体使用的传输方式(如UDP/IP)无关,它定义了一套专为DDS设计的“wire protocol”。它定义了一套PIM模型。DDS厂商根据该模型,进行具体的实现。PIM模块包括:
- Structure Module:RTPS实体如何表示
- Message Module:RTPS使用的消息表示
- Behavior Module:如何交互消息,交换哪些消息
- Discovery Module:端点间如何发现
- 如何保证可靠性传输?
- 可靠性不依赖于具体的实现(TCP or UDP)
- RTPS定义了可靠性规范
数据交互
- 这里只关注DDS(DDSI-RTPS)的网络拓扑结构。也就是数据交互的部分。
- DDS实体数据的交互可简单归纳为两部分:
- 端点间发现:包括Participain Discover 与Endpoint Discovery
- 端点间(已匹配)传输数据: RTPS Writer与RTPS Reader数据传输
Discover
- Discover包括:Participaint Discover和EndPoint(Writer/Reader) Discover
Participaint Discover
- 每个Participant包含内置的ParticipiantDataWriter与ParticipiantDataReader,以及PariticipaintData(Topic),根据DDSI-RTPS的规定,Simple Participant Discovery Protocol(所有DDS实现者必须实现的 Pariticipanit Discovery规范)使用内置的Writer/Reade/Topic实现 Discovery。
- 如何实现Participaint Discovery?Participant使用ParticipiantDataWriter向LocatorList(预定义)中的地址发送消息(定期)。告知自身是Active状态。
- LocatorList:Unicast(指定或自动配置)+Multicast (由具体实现指定)
EndPoint Discovery
- Participaint Discover后进行Endpoint Discovery,交换Endpoint信息
- 每个Endpoint包含内置的PubWriter/Reader、SubWriter/Reader以及对应的内置主题(topic)。根据DDSI-RTPS的规定, Simple Endpoint Discovery Protocol(所有DDS实现者必须实现的 Pariticipanit Discovery规范)使用内置的Writer/Reade/Topic实现 Discovery。
- EndPoint向LocatorList(unicast and multicast)发送消息
Transport
- 经过Discovery后,Writer与Reader相互匹配。可以进行数据的传输(订阅的Topic)。
- 其数据传输的大致过程为:
- DataWriter 添加CacheChange 到HistoryCache中(本地缓存)
- DataWriter将CacheChange发送到相应的DataReader的HistoryChace(本地缓存)
- HistoryCache(Reader)通知Reader有新的CacheChange。
- Reader读取数据。
RTPS建议实体的两个实现参考模型:
Stateless Reference Implementation
- 特点:
no state on remote entities
improved scalability
less memory
more bandwidht usage
Stateful Reference Implementation
- 特点:
maintains full state on remote entities
reduced scalability
more memory
minimizes bandwidth usage
Depending on how much state is maintained, implementations may be a combination of the reference implementations.
全局数据空间
- 关于DDS全局数据空间的理解如下:
- 由存在于不同物理位置上的HistoryCache构造的全局数据空间
- 逻辑上统一,物理上分布式的