@@ -283,6 +283,33 @@ size_t udpard_fragment_gather(const udpard_fragment_t** cursor,
283283/// |
284284/// +---> ...
285285///
286+ /// The RX pipeline is linked with the TX pipeline for reliable message management: the RX pipeline notifies
287+ /// the TX when acknowledgments are received, and also enqueues outgoing acknowledgments to confirm received messages.
288+ /// Thus the transmission pipeline is inherently remote-controlled by other nodes and one needs to keep in mind
289+ /// that new frames may appear in the TX pipeline even while the application is idle.
290+ ///
291+ /// The reliable delivery mechanism guarantees either that a message is delivered successfully to at least one
292+ /// remote subscriber, or could not be delivered to any remote subscriber before the specified deadline.
293+ /// Rudimentary congestion control is implemented by exponential backoff of retransmission intervals.
294+ /// The reliability is chosen by the publisher on a per-message basis; as such, the same topic may carry both
295+ /// reliable and unreliable messages depending on who is publishing at any given time.
296+ ///
297+ /// It is assumed that reliable messages are used in either of the following scenarios:
298+ ///
299+ /// - Published on topics with a single subscriber, or sent via P2P transport (responses to published messages).
300+ /// With a single subscriber a single acknowledgement is sufficient to guarantee delivery.
301+ ///
302+ /// - The application only cares about one acknowledgement (anycast), e.g., with modular redundant nodes.
303+ ///
304+ /// - The application assumes that if one copy was delivered successfully, then other copies have likely
305+ /// succeeded as well (depends on the required reliability guarantees), similar to the CAN bus.
306+ ///
307+ /// Reliable messages published over high-fanout topics will generate a large amount of feedback acknowledgments,
308+ /// which must be kept in mind when designing the network.
309+ ///
310+ /// Subscribers operating in the ORDERED mode do not acknowledge messages that have been designated as lost
311+ /// (arriving too late, after the reordering window has passed). No negative acknowledgments are sent either
312+ /// because there may be other subscribers on the same topic who might still be able to receive the message.
286313typedef struct udpard_tx_t udpard_tx_t ;
287314
288315typedef struct udpard_tx_mem_resources_t
0 commit comments