Fast DDS入门八、Fast DDS的发现机制


所有DDS都具有三个最重要的机制,一是发现机制,二是收发机制,三是QoS机制。DDS的发现机制是高可靠性和即插即用扩展性的实现基础,也是DDS区别于传统消息队列、原始套接字程序的主要特征。因此,可以说发现机制不仅是Fast DDS的核心机制,也是所有DDS的核心机制,不了解发现机制,则不能进阶为DDS高手。

Fast DDS作为一种数据分发服务(DDS)实现,它也提供了发现机制,允许跨域参与者自动查找和匹配DataWriter和DataReader,以便他们可以开始共享数据。对于Fast DDS的几种发现机制,发现过程共分为两个阶段执行。本节可与上节对照,互相参考。

一、发现阶段

1、参与者发现阶段(PDP):在此阶段,域参与者确认彼此的存在。为此,每个DomainParticipant都会定期发送通知消息。当两个给定的DomainParticipant存在于同一DDS域中时,它们将匹配。默认情况下,使用已知的多播地址和端口(使用DomainId计算)发送通知消息。此外,还可以指定使用单播发送通知的地址列表。此外,还可以配置此类通知的周期性。
2、端点发现阶段(EDP):在此阶段,DataWriter和DataReader相互确认。为此,DomainParticipants使用PDP期间建立的通信信道,彼此共享有关其DataWriter和DataReader的信息。除其他外,此信息还包含主题和数据类型。要使两个端点匹配,其主题和数据类型必须一致。一旦DataWriter和DataReader匹配,它们就可以发送/接收用户数据流量了。

可以使用PDP阶段传输有关运行DomainParticipant的主机、用户和进程(物理信息)的信息。

二、四种发现机制

Fast DDS提供以下发现机制:
简单发现:这是默认机制。它支持PDP和EDP的RTPS标准,因此提供与任何其他DDS和RTPS实现的兼容性。

静态发现:该机制在PDP阶段使用简单参与者发现协议(SPDP)(如RTPS标准所规定),但允许在事先知道所有DataWriter和DataReader的IP和端口、数据类型和主题时跳过简单端点发现协议(SEDP)阶段。

发现服务器:此发现机制使用集中式发现架构,其中DomainParticipant(称为服务器)充当元流量发现的中心。

手动发现:此机制仅与RTPS层兼容。它禁用PDP,允许用户使用其选择的任何外部元信息通道手动匹配和取消匹配RTPSParticipant、RTPSReader和RTPSWriter。因此,用户必须访问DomainParticipant实现的RTPSParticipant,并直接匹配RTPS实体。

三、简单发现协议介绍

SIMPLE发现协议是默认发现协议,它解决了在各种DDS实体之间建立端到端连接的问题。Fast DDS实现了SIMPLE发现协议,以提供与RTPS标准的兼容性。该规范将SIMPLE发现协议分成两个独立的协议:

简单参与者发现协议(SPDP):指定域参与者如何在网络中发现彼此;它宣布并检测同一域中DomainParticipant的存在。

简单端点发现协议(SEDP):定义所发现的域参与者为交换信息而采用的协议,以便发现每个域参与者中包含的DDS实体,即DataWriter和DataReader。

简单发现协议属性描述
Initial Announcements它定义了DomainParticipant初始声明的行为。
Simple EDP Attributes它将SIMPLE协议定义为发现协议。
Initial peers向其发送SPDP通知的DomainParticipant的IP/端口对列表。

1、Initial Announcement(初始通告)

RTPS标准的简单发现机制要求域参与者发送其在域中存在的通知。这些公告不是以可靠的方式传递的,可以由网络处理。为了避免消息处理导致的发现延迟,可以将初始通知设置为进行多次拍摄,以增加适当的接收机会。请参阅InitialAnnouncementConfig。

初始通知仅在创建参与者时进行。此阶段结束后,执行的唯一公告是基于租赁Duration_announcementperiod(而不是period)的标准公告。

属性名称描述
count它定义了启动时要发送的公告数量。
period它定义了首次通告的具体期限。

2、Simple EDP Attributs(简单节点发现属性)

属性名称描述
SIMPLE EDP它将SIMPLE协议定义为EDP阶段的发现协议。DomainParticipant可以同时创建DataWriter和DataReader,也可以两者都不创建。
Publication writer and Subscription reader它适用于仅实现一个或多个DataWriter的DomainParticipant,即不实现DataReader。它只允许创建与DataReader发现相关的EDP端点。
Publication reader and Subscription writer它适用于仅实现一个或多个DataReader的DomainParticipant,即不实现DataWriter。它只允许创建与DataWriter发现相关的EDP端点。

3、Initial peers(初始对等列表)

每个RTPS参与者必须在两个不同的端口(一个与多播地址链接,另一个与单播地址链接)中侦听传入的参与者发现协议(PDP)发现元流量。快速DDS允许配置初始对等方列表,该列表包含一个或多个与远程域参与者PDP发现侦听资源相对应的IP端口地址对,从而本地域参与者不仅将其PDP流量发送到其域指定的默认多播地址端口,而且还发送到初始对等列表中指定的所有IP端口地址对。

DomainParticipant的初始对等方列表包含它将与之通信的所有其他DomainParticipate的IP端口地址对列表。它是DomainParticipant将在单播发现机制中一起使用的地址列表,或作为多播发现的替代。因此,这种方法也适用于多播功能不可用的场景。

RTPS参与者的发现流量单播侦听端口使用以下公式计算:7400+250域ID+10+2参与者ID。因此,例如RTPSParticipant在域0(默认域)中操作并且其ID为1,则其发现流量单播侦听端口将为:7400+2500+10+21=7412。默认情况下,Fast DDS使用元流量多播定位器作为初始对等点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼爱幻想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值