4.7.3. Transport Addresses

Address reservation is the process to determine which locators should be used in the discovery announcement. Which transports and addresses to be used is determined as described in Discovery.

When a DomainParticipant is created, it calculates a port number and tries to reserve this port on all addresses available in all the transports based on the registration properties. If the port cannot be reserved on all transports, then it release the port on all transports and tries again. If no free port can be found the process fails and the DomainParticipant cannot be created.

The number of locators which can be announced is limited to only the first four for each type across all transports available for each policy. If more than four are available of any kind, these are ignored. This is by design, although it may be changed in the future. The order in which the locators are read is also not known, thus the four locators which will be used are not deterministic.

To ensure that all the desired addresses and only the desired address are used in a transport, follow these rules:

  • Make sure that no more than four unicast addresses and four multicast addresses can be returned across all transports for discovery traffic.
  • Make sure that no more than four unicast addresses and four multicast addresses can be returned across all transports for user traffic.
  • Make sure that no more than four unicast addresses and four multicast addresses can be returned across all transports for user-traffic, for DataReader and DataWriter specific locators, and that they do not duplicate any of the DomainParticipant’s locators.