UM C API
6.16.1
|
Structure that holds datagram statistics for receiver LBT-RM transports. More...
#include <lbm.h>
Data Fields | |
lbm_ulong_t | msgs_rcved |
Number of LBT-RM datagrams received. (Cumulative) More... | |
lbm_ulong_t | bytes_rcved |
Number of LBT-RM datagram bytes received, i.e., the total of lengths of all LBT-RM packets including UM header information. (Cumulative) More... | |
lbm_ulong_t | nak_pckts_sent |
Number of NAK packets sent by the receiver transport. (Cumulative) More... | |
lbm_ulong_t | naks_sent |
Number of individual NAKs sent by the receiver transport. (Cumulative) More... | |
lbm_ulong_t | lost |
Number of LBT-RM datagrams detected as lost. (Cumulative) More... | |
lbm_ulong_t | ncfs_ignored |
Number of NCFs received from a source transport with reason code "ignored". (Cumulative) More... | |
lbm_ulong_t | ncfs_shed |
Number of NCFs received with reason code "shed". (Cumulative) More... | |
lbm_ulong_t | ncfs_rx_delay |
Number of NCFs received with reason code "rx_delay". (Cumulative) More... | |
lbm_ulong_t | ncfs_unknown |
Number of NCFs received with reason code "unknown". (Cumulative) More... | |
lbm_ulong_t | nak_stm_min |
Minimum time (in milliseconds), i.e., the shortest time recorded so far for a lost message to be recovered. (Cumulative) More... | |
lbm_ulong_t | nak_stm_mean |
Mean time (in milliseconds) in which loss recovery was accomplished. (Cumulative) More... | |
lbm_ulong_t | nak_stm_max |
Maximum time (in milliseconds), i.e., the longest time recorded so far for a lost message to be recovered. (Cumulative) More... | |
lbm_ulong_t | nak_tx_min |
Minimum number of times per lost message that a receiver transport transmitted a NAK, i.e., the lowest value collected so far. A value greater than 1 indicates a chronically lossy network. (Cumulative) More... | |
lbm_ulong_t | nak_tx_mean |
Mean number of times per lost message that a receiver transport transmitted a NAK. (Cumulative) More... | |
lbm_ulong_t | nak_tx_max |
Maximum number of times per lost message that a receiver transport transmitted a NAK, i.e., the highest value collected so far. (Cumulative) More... | |
lbm_ulong_t | duplicate_data |
Number of duplicate LBT-RM datagrams received. (Cumulative) More... | |
lbm_ulong_t | unrecovered_txw |
Number of LBT-RM datagrams unrecovered (LBM_MSG_UNRECOVERABLE_LOSS delivered to receiver application) due to transmission window advance. (Cumulative) More... | |
lbm_ulong_t | unrecovered_tmo |
Number of LBT-RM datagrams unrecovered due to a retransmission not received within the NAK generation interval (set by configuration option transport_lbtrm_nak_generation_interval (receiver); default 10,000ms). (Cumulative) More... | |
lbm_ulong_t | lbm_msgs_rcved |
Number of messages or message fragments received over an LBT-RM transport. (Cumulative) More... | |
lbm_ulong_t | lbm_msgs_no_topic_rcved |
Number of messages received that were not for a topic of interest to the receiver. (Cumulative) More... | |
lbm_ulong_t | lbm_reqs_rcved |
Number of UM request messages received (message type LBM_MSG_REQUEST). (Cumulative) | |
lbm_ulong_t | dgrams_dropped_size |
Number of datagrams discarded due to being smaller than the size designated in the datagram's size field. (Cumulative) | |
lbm_ulong_t | dgrams_dropped_type |
Number of datagrams discarded due to bad packet type. The datagram's type field must match the expectations of the receiver transport. (Cumulative) | |
lbm_ulong_t | dgrams_dropped_version |
Number of datagrams discarded due to version mismatch. The datagram's version field must match the expectations of the receiver transport. (Cumulative) | |
lbm_ulong_t | dgrams_dropped_hdr |
Number of datagrams discarded due to bad header type. These datagrams appeared to be intact, but with an unrecognizable header format. (Cumulative) | |
lbm_ulong_t | dgrams_dropped_other |
Number of unrecognizable datagrams discarded due to reasons other than those determined by the above counts. (Cumulative) More... | |
lbm_ulong_t | out_of_order |
Number of out-of-order LBT-RM transport datagrams received. (Cumulative) More... | |
Structure that holds datagram statistics for receiver LBT-RM transports.
Note that when stats are sampled, the fields in the structure are not necessarily from the same instant in time. The structure might be updated concurrently with it being sampled, and while each structure field is atomically read, the field values can be skewed slightly across time.
See lbm_rcv_transport_stats_lbtrm_t_stct for field definitions.
Cumulative vs Snapshot
These UM statistics are cumulative. For example, msgs_rcved starts at zero and grows over time as more and more messages are sent.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::bytes_rcved |
Number of LBT-RM datagram bytes received, i.e., the total of lengths of all LBT-RM packets including UM header information. (Cumulative)
This count does not include duplicate datagrams or datagrams rejected for some reason.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::dgrams_dropped_other |
Number of unrecognizable datagrams discarded due to reasons other than those determined by the above counts. (Cumulative)
They could be corrupted, or possibly be from a non-UM packet source.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::duplicate_data |
Number of duplicate LBT-RM datagrams received. (Cumulative)
A large number can indicate a lossy network, primarily due to other receiver transports requesting retransmissions that this receiver transport has already successfully received. Such duplicates require extra effort for filtering, and this should be investigated.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::lbm_msgs_no_topic_rcved |
Number of messages received that were not for a topic of interest to the receiver. (Cumulative)
A high value (relative to, or approaching lbm_msgs_rcved above) indicates more CPU time required to filter out uninteresting topics, in which case, consider reconfiguring sources to filter more aggressively at the transport layer.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::lbm_msgs_rcved |
Number of messages or message fragments received over an LBT-RM transport. (Cumulative)
A single datagram may contain one or more messages or a fragment of a larger message. For fragmented messages larger than configuration option transport_lbtrm_datagram_max_size (context) (default 8KB), this count reflects the number of datagrams used to constitute those messages. Thus, this number is equal to or greater than the datagram counter (msgs_rcved, above). This number also includes messages received for which there was no interested receiver, which is tallied in the lbm_msgs_no_topic_rcved counter (below).
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::lost |
Number of LBT-RM datagrams detected as lost. (Cumulative)
Note that out-of-order network packets will also increment the lost count. See also out_of_order.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::msgs_rcved |
Number of LBT-RM datagrams received. (Cumulative)
Depending on batching settings, a single LBT-RM datagram may contain one or more messages, or a fragment of a larger message. With LBT-RM, larger messages are split into fragment sizes limited by configuration option transport_lbtrm_datagram_max_size (context) (default 8KB).
This count does not include duplicate datagrams or datagrams rejected for any reason.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::nak_pckts_sent |
Number of NAK packets sent by the receiver transport. (Cumulative)
UM batches NAKs into NAK packets to save network bandwidth. This should always be less than or equal to the number of individual NAKs sent (naks_sent, below).
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::nak_stm_max |
Maximum time (in milliseconds), i.e., the longest time recorded so far for a lost message to be recovered. (Cumulative)
If this time is near or equal to the configuration option transport_lbtrm_nak_generation_interval (receiver) setting, you have likely experienced some level of unrecoverable loss.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::nak_stm_mean |
Mean time (in milliseconds) in which loss recovery was accomplished. (Cumulative)
This is an exponentially weighted moving average (weighted to more recent) for accumulated measured recovery times. Ideally this field should be as close to your minimum recovery time (nak_stm_min, above) as possible. High mean recovery times indicate a lossy network.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::nak_stm_min |
Minimum time (in milliseconds), i.e., the shortest time recorded so far for a lost message to be recovered. (Cumulative)
If this time is greater than configuration option transport_lbtrm_nak_backoff_interval (receiver), it may be taking multiple NAKs to initiate retransmissions, indicating a lossy network.
This field is initialized to all 1s (-1 if printed signed).
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::nak_tx_max |
Maximum number of times per lost message that a receiver transport transmitted a NAK, i.e., the highest value collected so far. (Cumulative)
A value higher than 1 suggests that there may have been some unrecoverable loss on the network during the sample period. A significantly high value (compared to the mean number) implies an isolated incident.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::nak_tx_mean |
Mean number of times per lost message that a receiver transport transmitted a NAK. (Cumulative)
Ideally this should be at or near 1. A higher value indicates a lossy network. This is an exponentially weighted moving average (weighted to more recent) for accumulated NAKs per lost message.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::nak_tx_min |
Minimum number of times per lost message that a receiver transport transmitted a NAK, i.e., the lowest value collected so far. A value greater than 1 indicates a chronically lossy network. (Cumulative)
This field is initialized to all 1s (-1 if printed signed).
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::naks_sent |
Number of individual NAKs sent by the receiver transport. (Cumulative)
This may differ from the tally of lost datagrams (below) due to reasons such as
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::ncfs_ignored |
Number of NCFs received from a source transport with reason code "ignored". (Cumulative)
If a source transport receives a NAK for a datagram that it has recently retransmitted, it sends an "NCF ignored" and does not retransmit. How "recently" is determined by the configuration option source transport_lbtrm_ignore_interval (source) (default 500ms). If this count is high, a receiver transport may be having trouble receiving retransmissions, or the ignore interval may be set too long.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::ncfs_rx_delay |
Number of NCFs received with reason code "rx_delay". (Cumulative)
When a source transport's retransmit rate limiter prevents it from immediately retransmitting any more lost datagrams, it responds to a NAK by sending an "NCF rx_delay", then queues the retransmission for a later send. The receiver transport should wait for the retransmission and not immediately send another NAK. If this count is high, one or more crybaby receiver transports may be clogging the source transport's retransmit queue.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::ncfs_shed |
Number of NCFs received with reason code "shed". (Cumulative)
When a source transport's retransmit queue and rate limiter are both at maximum, it responds to a NAK by sending an "NCF shed", and does not retransmit. The receiver transport should wait, then send another NAK. If this count is high, one or more crybaby receiver transports may be clogging the source transport's retransmit queue.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::ncfs_unknown |
Number of NCFs received with reason code "unknown". (Cumulative)
These are NCFs with a reason code this receiver transport does not recognize. After a delay (set by configuration option transport_lbtrm_nak_suppress_interval (receiver) (default 1000ms), it resends the NAK. This counter should never be greater than 0 unless applications linked with different versions of Ultra Messaging software coexist on the same network.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::out_of_order |
Number of out-of-order LBT-RM transport datagrams received. (Cumulative)
A datagram is counted as out of order if it fills a previously detected sequence gap, but is not a retransmission. Note that out-of-order reception of datagrams also increments. the lost counter.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::unrecovered_tmo |
Number of LBT-RM datagrams unrecovered due to a retransmission not received within the NAK generation interval (set by configuration option transport_lbtrm_nak_generation_interval (receiver); default 10,000ms). (Cumulative)
NOTE: Receivers for these messages' topics will also report related messages as unrecoverable, with LBM_MSG_UNRECOVERABLE_LOSS for an individual message and LBM_MSG_UNRECOVERABLE_LOSS_BURST for a burst loss event. However, it is possible for these application-level message declarations to occur even without increments to this counter, as the transport is unaware of the topic content of messages and may still be trying to deliver related lost packets.
lbm_ulong_t lbm_rcv_transport_stats_lbtrm_t_stct::unrecovered_txw |
Number of LBT-RM datagrams unrecovered (LBM_MSG_UNRECOVERABLE_LOSS delivered to receiver application) due to transmission window advance. (Cumulative)
This means that the message was no longer in the source-side transmission window and therefore not retransmitted. The window size is set by transport configuration option transport_lbtrm_transmission_window_size (source) (default 24MB).