Retransmission Control
Note |
The retransmission control feature addresses the issue of excessive retransmissions, which can occur in some deployments. Unless your deployment exhibits this specific behavior, this feature can degrade performance. We discourage use of this feature except in consultation with a TIBCO professional. |
Motivation
When a receiving daemon consistently misses many packets, we categorize it as a chronically-lossy receiver. This condition could indicate a host computer that is slower than other computers in the network; an overloaded host computer; a hardware problem with the NIC, connectors or cables; mismatched NIC capacity; or a network problem involving routing or switching hardware.
The effects of a chronically-lossy receiver can include wasted network bandwidth, wasted CPU resources, and decreased performance for the entire distributed application system. When a sender retransmits excessively, its data send rate can increase dramatically, which in turn can exhaust network capacity.
Retransmission control (RXC) is a feature of the daemon that can help ameliorate the adverse effects of chronically-lossy receivers, conserve network and CPU resources, and locate problem hosts. When RXC is enabled, it lets sending daemons suppress retransmissions to chronically-lossy receivers, and it lets chronically-lossy receiving daemons censor their own retransmission requests.
Identifying Excessive Loss
When RXC is enabled for a receiving daemon, the daemon tracks inbound packet loss for each service. When RXC is enabled for a sending daemon, the daemon tracks packet loss and retransmission statistics for each receiving daemon and service. To distinguish chronic loss from temporary loss, the daemons compute a set of related measurements that pinpoint receivers for which retransmission is an ineffective solution.
When starting a daemon, an administrator can set the -rxc-max-loss
command line parameter (a percentage, expressed as an integer between zero and 100, inclusive). If greater than zero, then RXC is enabled; the sending daemon measures loss statistics, and compares them against the configured threshold, and against other thresholds derived from it. Using several metrics lets the daemon distinguish between temporary loss and chronic loss. If measured rates exceed their corresponding threshold values, then a receiver is categorized as chronically-lossy.
Remediation at Sender
When a sender identifies a chronically-lossy receiver, it can suppress retransmission to that receiver, with two main effects:
• | The sending daemon ignores retransmission requests from that receiver; that is, the daemon does not retransmit the requested data. |
• | The sending daemon produces an INFO advisory, indicating the chronically-lossy receiver. For details, see RETRANSMISSION.OUTBOUND.SUPPRESSED in . |
Remediation at Receiver
When a receiver identifies itself as a chronically-lossy receiver, it can censor its own retransmission requests with two main effects:
• | The receiving daemon does not send retransmission requests to the network. |
• | The receiving daemon produces an INFO advisory, indicating that it is a chronically-lossy receiver. For details, see RETRANSMISSION.INBOUND.REQUEST_NOT_SENT in . |
Bandwidth Usage & Thresholds
In some deployments it might be acceptable to retransmit to chronically-lossy receivers while both the receiver’s and the sender’s bandwidth usage remain low. To configure these thresholds, set the command line parameters -rxc-recv-threshold
and -rxc-send-threshold
.
For each service, the receiving daemon measures its inbound bandwidth usage (in bits per second). The daemon does not censor retransmission requests until its inbound bandwidth usage exceeds -rxc-recv-threshold
.
For each service, the sending daemon measures its outbound bandwidth usage (in bits per second). The daemon does not suppress retransmissions to chronically-lossy receivers until its outbound bandwidth usage exceeds -rxc-send-threshold
.
The default value of both threshold parameters is zero, a special value specifying that the daemons always suppress retransmissions and requests whenever RXC is enabled and chronically-lossy receivers are identified.
Other Details
Daemons compute all statistics separately for each service (see Service Selection).
Routing daemons include rvd
functionality; in this capacity, RXC does apply to routing daemons. However, when a routing daemon forwards messages to another routing daemon, it uses TCP protocols, and RXC does not apply.