Skip to content

Commit 474e7af

Browse files
docs
1 parent fde548e commit 474e7af

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

libudpard/udpard.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
286313
typedef struct udpard_tx_t udpard_tx_t;
287314

288315
typedef struct udpard_tx_mem_resources_t

0 commit comments

Comments
 (0)