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.

Max Loss

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 TIBCO Rendezvous Concepts.

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 TIBCO Rendezvous Concepts.

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.

Send

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.

Receive

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.