Modbus is a great example of a forgiving protocol. Modbus clients will always retry requests if a response is not received within a given timeout.
Data packets are sent from one radio to another in one of three delivery modes; normal delivery, guaranteed-delivery, or multiple-attempt delivery mode. Each mode has its own pros and cons.
Normal delivery mode is not only the default mode configured in new CDR XL family radios, it is also the fastest way to transfer data from one user device to another. "Normally" delivered packets are sent once each, and no attempt is made by a receiving radio to acknowledge packet receipt.
Despite the lack of acknowledgements, NoAckData packets still include a sequence number. This can be used (in mixed-on mode) to detect when a transmission has been lost.
Although normal delivery mode is very reliable, no attempt is made to repeat any data that is lost. This mode is therefore best suited to communication protocols that require a high, sustained data rate, or are forgiving, should a packet get dropped.
Modbus is a great example of a forgiving protocol. Modbus clients will always retry requests if a response is not received within a given timeout.
While there are no real "guarantees" in data transmission, guaranteed-delivery mode decreases the likelihood of lost data by adding in receipt acknowledgements (Ack packets) to every packet (AckData) delivery. If the transmitter does not receive one of these acknowledgments from the receiver, then it will retransmit the appropriate packet again (up to a configurable number of attempts).
Guaranteed-delivery mode, cannot maintain the same level of throughput as normal delivery mode, of course, but because most packets will be transmitted only once, the overall data rate in guaranteed-delivery mode is still quite high.
Guaranteed-delivery mode is best suited for applications where the bandwidth demands are not critical, but the cost of recovery for a lost packet is high. For example, let's suppose you are transferring files over the radio link and you test the file's integrity only at the end of each file – or worse, do not test file integrity at all. If you detect an error in a small file, one that took only seconds to transmit, then resending the file again represents a small cost (only a few seconds wasted). However, if you are transferring large files that take several minutes to transfer, then a single lost packet will waste many minutes when the file must be sent again. In such a case, the lower performance guaranteed-delivery mode may represent good insurance against long delays.
Unfortunately, not every installation is well-suited for guaranteed-delivery mode. After all, this mode generally requires that every radio in the system has a unique location code. If one radio were to try and broadcast a packet (remember, reusing location codes may make each transmission a broadcast) in guaranteed-delivery mode, then there would be no feasible way for the original transmitter to sift through all of the acknowledgments and make sure that every radio had responded.
Multiple-attempt delivery mode is similar to guaranteed-delivery mode in that packets are sent multiple times to insure reception. The difference is that in multiple-attempt delivery mode, receivers do not send acknowledgment packets, so each transmission is sent multiple times, regardless of whether it was received or not.
This mode has a simple advantage over guaranteed-delivery mode; it can be used regardless of the network's setup – even if all radios in a system are configured with the same location code (making all transmissions a broadcast). The downside of multiple-attempt delivery mode is pretty obvious too, since every packet is sent multiple times, this mode is the slowest way to send data, and should not be used when throughput is important.
When using multiple-attempt delivery mode in mixed-on mode, you should expect to receive a Failure packet after every AckData packet is sent (indicating that no Ack was received). This will tell you that the radio is finished with its transmission attempts.