18.4. Discovery Frequently Asked Questions
What are the two main phases involved in the discovery process of Fast DDS?
The two main phases involved in the discovery process of Fast DDS are the Participant Discovery Phase (PDP) and the Endpoint Discovery Phase (EDP).
The Participant Discovery Phase (PDP) involves DomainParticipants
recognizing each other by sending periodic announcement messages with their unicast addresses.
Matching occurs when they are in the same DDS Domain, using multicast by default, though unicast and announcement frequency can be customized.
In the Endpoint Discovery Phase (EDP), DataWriters and DataReaders acknowledge each other by sharing information about topics and data types over the established channels.
Matching endpoints with the same topic and data type are then ready to exchange user data.
For further information, refer to Discovery phases.
What discovery mechanisms does FastDDS provide?
There are four discovery mechanisms in DDS: Simple Discovery, which follows the RTPS standard for both PDP and EDP, ensuring compatibility with other DDS implementations; Static Discovery, which uses the Simple Participant Discovery Protocol (SPDP) but skips the Endpoint Discovery phase if endpoint details are pre-known; Discovery Server, which employs a centralized server for meta traffic discovery; and Manual Discovery, which disables the PDP and requires users to manually match RTPS participants and endpoints using external meta-information channels.
For further information, refer to Discovery mechanisms.
How can you improve the chances of successful participant discovery when using the SIMPLE discovery protocol, and what role do initial announcements play in this process?
To improve the chances of successful participant discovery when using the SIMPLE discovery protocol, you can configure initial announcements to send multiple discovery messages at short intervals.
This increases the likelihood that DomainParticipants will detect each other despite potential network disruptions or message loss.
By adjusting the count
(number of announcements) and period
(interval between announcements), you can optimize discovery reliability during startup.
For further information, refer to SIMPLE Discovery Settings.
What is an initial peer list?
An initial peer list contains one or more IP-port address pairs corresponding to remote DomainParticipants PDP discovery listening resources, so that the local DomainParticipant will not only send its PDP traffic to the default multicast address-port specified by its domain, but also to all the IP-port address pairs specified in the initial peers list.
For further information, refer to SIMPLE Discovery Settings.
When could a static configuration of peers be used?
When all DataWriters and DataReaders, and their Topics and data types, are known beforehand, the EDP phase can be replaced with a static configuration of peers.
For further information, refer to STATIC Discovery Settings.
What is the primary function of a Discovery Server in the DDS architecture?
The primary function of a Discovery Server in the DDS architecture is to centralize and redistribute discovery information among DomainParticipants, ensuring efficient communication between clients and servers.
The server collects discovery data from clients (and other servers) and redistributes it to relevant participants, running a “matching” algorithm to provide only the necessary information for DataWriters and DataReaders to establish communication.
It also facilitates server-to-server connections, enabling a more scalable discovery process across the network.
For further information, refer to Discovery Server Settings.
What is the primary purpose of a "BACKUP" server in the Discovery Server mechanism?
A BACKUP
server is a server that persists its discovery database into a file.
This type of server can load the network graph from a file on start-up without the need of receiving any client’s information.
For further information, refer to Discovery Server Settings.
What is a client in this context?
A CLIENT
is a participant that connects to one or more servers from which it receives only the discovery information they require to establish communication with matching endpoints.
For further information, refer to Discovery Server Settings.
What is the difference between a CLIENT and a SUPER_CLIENT?
A SUPER_CLIENT
is a client that receives the discovery information known by the server, in opposition to clients, which only receive the information they need.
For further information, refer to Discovery Server Settings.