实时发布 – 订阅(RTPS)
RTPS协议由Real-Time Innovations,Inc。开发,作为数据分发系统的有线协议。
此页面仅包含对RTPS的简短介绍。 有关更多详细信息,您可以访问以下来源:
-
实时发布 – 订阅线协议DDS互操作性线协议(DDSI): http ://www.omg.org/spec/DDSI/
-
完整的OMG DDS标准规范: http ://www.omg.org/cgi-bin/doc?tptc / 03-07-07
-
NDDS和RTPS信息: http ://www.rti.com/resources.html
介绍
随着Internet的爆炸式增长,TCP / UDP / IP协议套件已成为构建所有基于Internet的通信的基础框架。 他们的成功证明了这些协议的普遍性和强大性。但是,这些传输级协议的级别太低,不能被最简单的应用程序直接使用。 因此,出现了更高级别的协议,例如HTTP,FTP,DHCP,DCE,RTP,DCOM和CORBA。 这些协议中的每一个都填补了一席之地,为特定目的或应用领域提供了良好调整的功能。
在网络通信中,与许多工程领域一样,事实上一种尺寸并不适合所有人。 工程设计是关于做出正确的权衡取舍,这些权衡取舍必须平衡相互冲突的要求,例如通用性,易用性,功能丰富性,性能,内存大小和使用,可伸缩性,确定性和健壮性。 必须根据信息流的类型(例如,定期,一对多,请求 – 回复,事件)以及应用程序和执行平台施加的约束来进行这些权衡。
实时发布 – 订阅(RTPS)有线协议提供两种主要的通信模型:发布 – 订阅协议,它将数据从发布者传输到订阅者; 以及传输状态的复合状态转移(CST)协议。
RTPS协议旨在运行不可靠的传输,例如UDP / IP。 RTPS协议设计的主要目标是:
- 即插即用连接,以便自动发现新的应用程序和服务,应用程序可以随时加入和离开网络,而无需重新配置。
- 性能和服务质量属性,可通过标准IP网络为实时应用程序提供尽力而可靠的发布订阅通信。
- 可配置性,以平衡每个数据交付的可靠性和及时性要求。
- 模块化允许简单设备实现子集并仍然参与网络。
- 可扩展性,使系统可以扩展到非常大的网络。
- 可扩展性,允许使用新服务扩展和增强协议,而不会破坏向后兼容性和互操作性。
- 容错,允许创建没有单点故障的网络。
- 类型安全,以防止应用程序编程错误损害远程节点的操作。
RTPS协议在DomainParticipants的域中运行。 DomainParticipant包含本地CommunicationEndpoints,通过它使用RTPS协议发送或接收信息。CommunicationEndpoints是读者或作者。 编写者在域上提供本地可用数据(复合状态或问题流)。 读者获取此信息。
作家有两大类:出版物和CST编写者。 Publication是一个Writer,它使用发布 – 订阅协议和语义向一个或多个Subscription实例提供问题。
DomainParticipant中存在发布表明DomainParticipant愿意将问题发布到域上的匹配订阅。 出版物的属性描述了内容(主题),问题类型以及在域上发布的问题流的质量。
读者有两大类:订阅和CSTReaders。 订阅是一种使用发布 – 订阅协议从一个或多个发布实例接收问题的Reader。
Subscription的存在表明DomainParticipant希望从Publications接收域中特定主题的问题。 订阅具有标识数据的内容(主题),问题的类型以及它希望接收问题流的质量的属性。
CSTWriter和CSTReader分别等同于Publication和Subscription,但用作状态同步协议(CST)的通信端点。
每个Reader(CSTReader或Subscription)和Writer(CSTWriter或Publication)都是DomainParticipant的一部分。 DomainParticipant及其读者和写者是本地的,在图1.1中通过关键字“local”表示DomainParticipant与其CommunicationEndpoints之间的关系。
DomainParticipants有两种:Managers和ManagedApplications。 Manager是一个特殊的DomainParticipant,可帮助ManagedApplications在域内自动发现彼此。 ManagedApplication是由一个或多个Managers管理的DomainParticipant。 每个ManagedApplication都由至少一个Manager管理。
该协议提供两种类型的功能:
- 数据分发:RTPS协议规定了支持发布 – 订阅协议(从发布到订阅发送问题)和复合状态转移(CST)协议(将状态从CSTWriter转移到CSTReader)的消息格式和通信协议,各种服务水平。
-
管理:RTPS协议定义了CST协议的特定用途,使DomainParticipants能够获取有关域中所有其他DomainParticipants和CommunicationEndpoints的存在和属性的信息。 此metatraffic使每个DomainParticipant都能获得域中所有DomainParticipants,Readers和Writers的完整图片。 此信息允许每个DomainParticipant将数据发送到正确的位置并解释传入的数据包。
基本RTPS传输接口
RTPS旨在运行在不可靠的传输机制上,例如UDP / IP。 协议在问题和状态的转移中实现可靠性。
RTPS利用传输机制的多播功能,其中来自发送方的一条消息可以到达多个接收方。
RTPS旨在促进底层通信机制的确定性。 该协议还提供了确定性和可靠性之间的公开权衡。
基本逻辑消息
RTPS协议使用五条逻辑消息:
-
ISSUE:包含应用程序的UserData。 问题由出版物发送到一个或多个订阅。
- VAR:包含有关实体属性的信息,实体属性是复合状态的一部分。 VAR由CSTWriters发送到CSTReaders。
- HEARTBEAT:描述Writer中可用的信息。 HEARTBEAT由Writer(Publication或CSTWriter)发送给一个或多个读者(订阅或CSTReader)。
- GAP:描述与读者不再相关的信息。
- ACK:向Writer提供有关Reader状态的信息。
这些逻辑消息中的每一个都在特定的读者和作者之间发送,如下所示:
- 发布到订阅:内容和HEARTBEAT
- 订阅到发布:确认
- CSTWriter到CSTReader:VAR,GAP和HEARTBEAT
- CSTReader到CSTWriter:ACK
读者和作者都是RTPS消息的发送者和接收者。 在协议中,逻辑消息ISSUE,VAR,HEARTBEAT,GAP和ACK可以以几种方式组合成单个消息,以有效地使用底层通信机制。 第3章介绍了Message的格式和结构。
底层线表示
RTPS使用对象管理组(OMG)定义的CDR(公共数据表示)来表示所有基本数据和结构。