Since v1.9.0, eProsima Fast DDS features an alternative to the DDS Simple Discovery Protocol (SDP) mechanism: Discovery Server. Designed for large deployments with many nodes, Discovery Server reduces the discovery related network traffic while avoiding typical issues of heterogeneous networks such as package lossover Wifi, or multicast drops in network equipment. It does so by replacing the standard peer to peer discovery by one or several Discovery Servers to which the Clients connect. eProsima Fast DDS v2.0.2 further reduces the discovery related traffic when using the Discovery Server by only connecting those Clients which have something to say to each other. This strategy has reduced the network traffic by up to 93% when compared to the standard SDP, and by up to 83% when compared to the previous implementation of the Discovery Server.

Note: Network related discovery traffic generated by RMF Clinic Demo when using Fast DDS Simple Discovery Protocol (SDP), Discovery Server v1.0 (DS 1.0), and Discovery Server v2 (DS 2.0). Both SDP and DS 2.0 experiments are performed using Fast DDS v2.0.2; DS 1.0 is performed using Fast DDS v2.0.1.

 The main advantages of this discovery mechanism are:

  • Scalability: Reduced network traffic and fastests discovery in large deployments.
  • Availability:  Multiple Discovery servers can be used to avoid a single point of failure.
  • Reliability: All discovery traffic is reliable when using this mechanism. 
  • Persistence: Discovery Servers can be configured to persist the discovery graph, which prevents a new discovery startup in case of a server shutdown.
  • No multicast dependency: All Client-Server communication is done using unicast, effectively avoiding discovery related problems on WiFi of heterogeneous networks.
  • Flexibility: Every node can act as a Server or Client distinctively, no daemon process is needed.
  • Ease-of-use: Configuration can be done using either an environment variable of XML files. Furthermore, Fast DDS v2.0.2 brings a new CLI that enables launching a Discovery Server with a simple command.

When to use the Discovery Server?

  • Large scale: High number of nodes.
  • Heterogeneous networks: No multicast available.
  • Scarce network resources: The massive reduction of traffic enables the deployments of large systems in network constrained environments.

Standard Discovery vs Discovery Server



How to use the Discovery Server?

Since Fast DDS v2.0.2, the Discovery Server protocol can be configured by running one executable for bringing up the Server, and setting an environment variable to configure the Clients. This brings the easy-to-use ways of ROS 1 master to ROS 2, without the problems that  `roscore` imposed in terms of single point of failure.

  1. Open a new terminal and source your ROS installation. Then launch a Server with:
fastdds discovery -i 0

          This command launches a server with ID 0 in

       2. Open another terminal and source your ROS installation. Then, configure the Clients (all your nodes) with:

ros2 run <package_name> <application>

Note that Fast DDS v2.0.2 is currently only available when compiling ROS 2 Foxy from sources. However, it will be part of the upcoming Foxy sync release. Furthermore, since Fast DDS features the Discovery Server since v1.9.0, the protocol can also be used in ROS 2 Eloquent. Instructions on how to configure it using XML files can be found in Fast DDS documentation.

Available Documentation:

Read the Docs Discovery Server

More information about the eProsima Discovery Server:

For any questions please contact This email address is being protected from spambots. You need JavaScript enabled to view it.