Wireless Reliability

Reliable communications is challenging. Even more when it is wireless. The roots of the problem are interference and collisions, collectively known as noise. When a radio packet travels through air it very likely meets other packets. Or other forms of electromagnetic waves. Interferes with them and collides and may become so distorted that a receiver will not recognize it. And the message does not get through.

Some systems implement so called reliable delivery mode. The principle is simple: request a confirmation message from the destination. If it does not arrive, try again. And again. This works but is not always effective. First, it increases the number of packets in the air, so they may cause new collisions with other packets. Then it introduces delays and even more noise. Before a next delivery attempt you need to give the network enough time to deliver the message back and forth. And the intermediate relaying nodes to process the messages and the recipient to execute the command and generate a response, which has to travel back. If the response does not come back in reasonable time (say, 200ms), you try again.

But imagine you are a wall switch in a conference room that has 20 lights in a ceiling. Using reliable delivery to each light simply does not make sense. If your round-trip timeout is 200ms, it will take 4 seconds to illuminate the room and during these 4 seconds the lights will be pop-corning one after another. Not a very desired effect.

A wall switch may decide to use multicast transmission. Such as that a single message that is sent out (and heard by the receivers) is processed and executed. Radio is a broadcast medium. When you transmit, it is like shouting loud. Everybody around can hear you. But some may not. So the wall switch may find it usually lights 18 out of 20 lights when pressed. Not a very desired effect either.

Also requesting a confirmation reply from each light does not make sense. The switch (which is a very simple device) would have to trace and count all the replies and generate retries to the ones that did not react to the initial message.

Now imagine if just 2 out of these 20 lights could relay the message they receive from the switch. The likelihood of every light receiving the original or the relayed copy increases dramatically. If the probability of failing to deliver a single message is fairly high, say, 10%, then the probability of none of the 3 being delivered is 10% * 10% * 10% = 0.1%, meaning the reliability of the system goes up from 90% to 99.9%. Which is a pretty awesome improvement: 100x. Achieved by just adding two relays to the system.

This is the principle of a flood network that uses selective relaying to dramatically improve the most important feature of wireless networks. Especially useful in wireless lighting control, when any delays or failures are noticed immediately.

Comments