Wireless networks provide an interesting challenge. Radios on identical frequencies transmitting at the same time can cause collisions resulting to data loss. Since the air is a limited shared resource, it has to be used efficiently. Typically, wireless nodes that want to transmit will use a reservation protocol to tell the immediate network that it wants to transmit so that no one else will interfere. I think this would be a fine way to go, but we have to remember that a lot of internet traffic uses TCP for reliability. TCP sends acknowledgements for every packet making it very chatty in the context of a wireless network. When you are in a network where multiple nodes are sending TCP traffic, there is a lot of traffic back and forth between wireless nodes. The challenge is to use that air time as efficiently as possible. That’s where network coding comes in.
There is an interesting paper that presents a system called COPE that performs opportunistic coding on traffic that it overhears. Following image is taken from the paper I’m referring to.
With COPE, in this example, the number of transmissions is reduced from 4 to 3 because the packets have been XOR’d together. Results of cope showed that it was able to achieve between a 5% to 70% improvement in throughput depending on the traffic dynamics. An interesting thing to study in connection with this would be how fair this coding is. If we could track independently each TCP flow, it would be interesting to measure the fairness, if coding even effects flow fairness.