Unless otherwise indicated herein, the description provided in this section is not itself prior art to the claims and is not admitted to be prior art by inclusion in this section.
In a wireless communication system that implements carrier sense multiple access with collision avoidance (CSMA/CA), when a transmitting node has data to send to a receiving node on a shared wireless channel, the transmitting node will first listen to the channel for a certain interval to determine whether another node is transmitting on the channel, and the transmitting node will then transmit only if it thereby determines that the channel is idle. Once the transmitting node then transmits its data to the receiving node, the receiving node will then send an acknowledgement (ACK) message on the channel to the transmitting node.
While such a system may work well in some situations, the system can also suffer from a problem known as the “hidden node” problem. The hidden node problem arises when a neighboring node is within range of the receiving node but is not within range of the transmitting node and where the neighboring node transmits on the channel. In such a scenario, transmitting node would be unable to hear transmission from the neighboring node on the channel and may therefore conclude that the channel is idle, but the neighboring node's transmission on the channel may make it impossible for the receiving node to receive transmission from the transmitting node on the channel.
To help overcome the hidden node problem, the transmitting and receiving nodes can engage in a handshake process on the channel before the transmitting node transmits the data to the receiving node, to ensure that transmitting and receiving nodes are able to communicate with each other on the channel. In accordance with the handshake process, once the transmitting node determines that the channel is idle, the transmitting node would transmit a “ready-to-send” (RTS) message on the channel to the receiving node, to indicate that the transmitting node is ready to send data to the receiving node. If the receiving node successfully receives that RTS message from the transmitting node, the receiving node would then respond by transmitting a “clear-to-send” (CTS) message on the channel, which would indicate to the transmitting node that the transmitting node may proceed with the data transmission. In turn, if the transmitting node successfully receives the CTS message from the receiving node, the transmitting node would then proceed to transmit the data on the channel to the receiving node. And upon receipt of the data, the receiving node would then respond by transmitting an acknowledgement (ACK) message on the channel to the transmitting node.
In a system implementing such a handshake process, nodes may also be arranged to detect RTS and CTS messages on the channel and to avoid transmission on the channel for a period of time sufficient to allow the communication between transmitting and receiving nodes to complete (e.g., through ACK transmission). In practice, the avoidance time period may be referred to as a “network allocation vector” (NAV) period, and nodes may set their NAV period based on an expected duration of communication between the transmitting and receiving nodes. In particular, if a node detects an RTS message on the channel, then the node may set itself to avoid transmission on the channel for an RTS NAV that sufficient to allow for transmission of the corresponding expected CTS message, data, and ACK message. Likewise, if a node detects a CTS message on the channel, then the node may set itself to avoid transmission on the channel for a CTS NAV that is sufficient to allow for transmission of the corresponding expected data and ACK message.