.. _DDS_WireProtocolQosPolicy: ../../../api_c/html/structDDS__WireProtocolQosPolicy.html
.. _rtps_well_known_ports: ../../../api_c/html/structDDS__WireProtocolQosPolicy.html
Introduction
------------
In |rti_me|, DDS entities exchange information using transports. Transports
exhange data with peer transports, and |me| entities can generally exchange
information using different types of transports, e.g. UDPv4 or a serial port.
All transports send and receive RTPS messages encapsulated in the transport's
native format, e.g. UDP packets.
.. note::
This version of |me| only supports UDPv4 and a special transport for
internal communication within a DDS *DomainParticipant*.
|me| has a pluggable-transport architecture. The core of |me| is
transport agnostic; it does not make any assumptions about the actual
transports used to send and receive messages. Instead, |me| uses an
abstract "transport API" to interact with the transport plugins that
implement that API. A transport plugin implements the abstract transport
API, and performs the actual work of sending and receiving messages
over a physical transport.
A transport can send and receive on addresses as defined by the concrete
transport. For example, the |me| UDP transport can listen to and send to
UDPv4 ports and addresses. In order to establish communication between two
transports, the addresses that the transport can listen to must be determined
and announced to other *DomainParticipants* that want to communicate with it.
This section describes how the addresses are reserved and how these addresses
are used by the DDS layer in |me|.
While the NETIO interface is not limited to DDS, the rest of this document
is written in the context of how |me| uses the NETIO interfaces as part
of the DDS implementation.
Note that |me| does not support RTPS fragmentation and is limited
to IDL data types less than or equal to 63000 bytes **or** the
maximum transmission unit (MTU) of the underlying transport, whichever is
smaller.
Also note that |me| does not query the MTU size from the registered
transport plugins. If an IDL data-type exceeds the MTU size, the data
will be silently discarded.
|me| does not track the maximum receive unit (MRU) of other nodes in the
system. Therefore, |me| relies on consistent configuration accross all
the nodes in the system in order to successfully send and receive data.
For example, if a |me| node has a MRU of 8000 bytes and another |me| node
sends 9000 bytes (with a sufficiently large MTU), the data will be sent,
but not received.