A domain represents a separate communication plane. It creates a logical separation among the Entities that share a common communication infrastructure. Conceptually, it can be seen as a virtual network linking all applications running on the same domain and isolating them from applications running on different domains. This way, several independent distributed applications can coexist in the same physical network without interfering, or even being aware of each other.

Every domain has a unique identifier, called DomainId, that is implemented as a uint32 value. Applications that share this DomainId belong to the same domain and will be able to communicate.

For an application to be added to a domain, it must create an instance of DomainParticipant with the appropriate DomainId. Instances of DomainParticipant are created through the DomainParticipantFactory.