For the PHY layer, error control is usually based on both Automatic Retransmission ReQuest (ARQ) and FEC schemes ("forward" refers to the non-feedback aspect of error control where a code automatically corrects errors detected at the receiver). ARQ is a link layer protocol that provides reliability based on error-detecting codes and retransmissions. A parity-bit or CRC check of a received packet triggers retransmission requests. If the receiver determines that the packet is in error, it sends a negative acknowledgment (NAK) to the transmitter, otherwise it sends an acknowledgment (ACK). In the former case, the packet is retransmitted. From the perspective of the application layer, such retransmissions are Automatic (the acronym ARQ is based on the Morse designation for retransmission request ). Some flavors of this protocol include stop-and-wait , go-back-N , and selective-repeat , and they each provide different tradeoffs in throughput and buffering at the transmitter and/or receiver.
The throughput of ARQ protocols can be improved by combining FEC with ARQ in the form of Hybrid-ARQ [31, 120]. Hybrid-ARQ lets erroneous received packets be collected and combined in various ways before decoding. One can exploit this idea for cooperative communication as well, and we address such protocols in detail in topic 6. Packet combining can be based on hard decisions or soft channel outputs. In the latter case, noisy versions of the same packet are combined by maximal-ratio, equal gain, or selection combining diversity techniques. The transmitted packets can thus be viewed as symbols of a repetition code, and this idea can be extended to more general classes of codes. As another approach, incremental redundancy ARQ can be realized with rate compatible punctured convolutional codes (RCPC) by first using the highest rate code from the RCPC code family and sending additional bits as needed . Alternatively, with turbo codes one punctures parity bits .