16.3.5 Isolating DomainParticipants and Endpoints from Each Other

There are several ways to prevent Entities from communicating with each other:

  • Domain IDs physically isolate entire applications (and their DomainParticipants) from each other. See 16.3.4 Choosing a Domain ID and Creating Multiple DDS Domains.
  • Domain tags enable you to logically subdivide domains, isolating them from each other. Domain tags cannot be changed after creating the DomainParticipant. See 16.3.5.1 Choosing a Domain Tag.
  • DomainParticipant partitions enable you to have different visibility planes for a given pair of domain ID and domain tag. Only DomainParticipants with at least one matching partition can communicate with each other. Membership in a partition can be dynamically changed. See 44.6 PARTITION QosPolicy.
  • DomainParticipant-ignoring API. The API DomainParticipant::ignore_participant can be used to ignore a remote DomainParticipant at the application level. See 27.1 Ignoring Specific Remote DomainParticipants.
  • Endpoint (DataWriter/DataReader) partitions enable you to have different visibility planes at the Publisher/Subscriber level. A DataWriter will not see a DataReader unless their corresponding Publisher or Subscriber has at least one matching partition. Membership in a partition can be dynamically changed. See 44.6 PARTITION QosPolicy.
  • Endpoint-ignoring APIs. The APIs DomainParticipant::ignore_publication and DomainParticipant::ignore_subscription can be used to ignore remote endpoints at the application level. See 27.2 Ignoring Publications and Subscriptions.

Table 16.4 Isolating, Partitioning, and Filtering Information provides a comprehensive comparison of these different methods and specifically addresses what, if any, discovery traffic is reduced or eliminated.

Table 16.4 Isolating, Partitioning, and Filtering Information

Concept

Description

Isolates Participant Discovery Traffic

Isolates Endpoint Discovery Traffic

Isolates Endpoint Communication

Changeable

Domain ID

Hard databus isolation

Yes

Yes

Yes

No

Domain tag

Logical databus isolation

No

Yes

Yes

No

DomainParticipant partition

Participant visibility planes

No

Yes

Yes

Yes

Ignore-participant API

Application-level isolation for DomainParticipants

No

Yes

Yes

No (the action cannot be undone)

Endpoint (writer/reader) partition

Endpoint visibility planes

No

No

Yes

Yes

Ignore-endpoint API

Application-level isolation for endpoints

No

No

Yes

No (the action cannot be undone)

 

Legend:

  • Isolates Participant Discovery Traffic. Participants do not exchange RTPS participant DATA submessages or authenticate with each other (see 22.1 Simple Participant Discovery).
  • Isolates Endpoint Discovery. Participants do not exchange RTPS publication DATAs and subscription DATAs submessages (see 22.3 Simple Endpoint Discovery).
  • Isolates Endpoint Communication.There is no RTPS traffic sent between endpoints.

In addition to isolating entities, you can configure a DataReader to receive only a subset of the data published by a matching DataWriter, based on the content of the data, using ContentFilteredTopics (see 18.3 ContentFilteredTopics) or based on the frequency of the data using time-based filters (see 48.4 TIME_BASED_FILTER QosPolicy).