16.3.5.1 Choosing a Domain Tag

The domain tag is an intuitive way of subdividing domains. It consists of a string value (with a maximum of 255 characters). It allows DomainParticipants to drop participant discovery messages not belonging to the same domain tag they are using. The domain tag is immutable, and cannot be changed after creating the DomainParticipant.

Unlike domain IDs, domain tags are not mapped to port numbers that are used by transports for discovery traffic. Consequently, a DomainParticipant may receive participant discovery traffic belonging to a different domain tag; however, this traffic will be dropped upon reception. Another consequence of domain tags having no impact on port mapping is that multiple DomainParticipants running on the same machine with the same domain ID, but with different domain tags, will end up using different participant IDs to avoid port collision.

As an example, a system with six DomainParticipants could be configured as follows:

  • Participant A: domain ID = 24, domain tag = "ENG. DEPT"
  • Participant B: domain ID = 24, domain tag = "ENG. DEPT"
  • Participant C: domain ID = 24, domain tag = "SALES DEPT"
  • Participant D: domain ID = 24, domain tag = "SALES DEPT"
  • Participant E: domain ID = 42, domain tag = "ENG. DEPT"
  • Participant F: domain ID = 42, domain tag = "ENG. DEPT"

In this system, Participants A, B, C, and D are all on the same domain ID, so all of them will receive the discovery traffic belonging to domain 24; however, only DomainParticipant pairs A-B and C-D will be able to discover each other, since they have a matching domain tag. (Any discovery message not matching the expected domain tag will be dropped.) Participants E and F are in a different domain (42), so they are completely isolated from the rest, not even receiving the discovery traffic from the rest of the DomainParticipants. For more information, see 22.1 Simple Participant Discovery.

By default, a DomainParticipant is in an empty ("", zero-length string) domain tag. To associate a domain tag with a DomainParticipant, use the following DomainParticipant PropertyQos property:

dds.domain_participant.domain_tag: A string (with a maximum of 255 characters) defining the domain tag the DomainParticipant will propagate through Participant Discovery. Participants will drop any Participant discovery message that contains a domain tag that does not match the local domain tag. This parameter is only propagated if it is set to a value different than the default. Default: "" (empty, zero-length string).

Note: While domain ID is fully supported across the whole Connext ecosystem, domain tag support is currently limited to the Core Libraries and infrastructure Services (by setting the aforementioned DomainParticipant PropertyQos property). Domain tags are not well supported in Connext tools (such as Admin Console). Connext tools do not provide a tool-specific mechanism to configure domain tags. Consequently, if you configure an application to use domain tags, that application will not be able to communicate with Connext tools, unless you edit the tool's QoS configuration (if it has one—for instance, see Admin Console's Preferences dialog) to use domain tags.

See also: 16.3.5 Isolating DomainParticipants and Endpoints from Each Other.