Linux – Wifi performance is slow only when there are multiple radios in one router

hostapdlinuxperformancerouterwifi

I have a wireless network setup like this:

Laptop \  |     Wifi Router A       |     Wifi Router B        |  Wifi Router C |
        \ |     /             \     |     /              \     |   /       \    |
         \|wlan0              wlan1----wlan0            wlan1-----wlan0   eth0--|
          |hostapd     managed mode | hostapd    managed mode  |  AP    Internet|

So basically a straight line of laptop -> router A -> router B -> router C -> internet.

Routers A and B have two 802.11a radios in them and are embedded linux boards with high-power radios (Ubiquiti 600mW). Router C is a Linksys E2500 and connects to the Internet via ethernet. There is no bridging being used, only simple IP routing.

All wifi connections have great signals (at least -60dBm) and very low noise (-99dBm).

For speed testing I am using iperf with a large window size (3MB) and 10 parallel connections, with varying transmit times of 100-240 seconds.

The laptop consistently gets results of 6-8mbps between it and router B (upload and download). I have tried many different setting changes on the wifi side and nothing seems to impact the performance, I even checked things like hardware receive/checksum offloading on the interfaces and those settings do not make a difference either.

However, if I test between the laptop and router A, I get around 30mbps. Testing between router A and router B is also well over 25mbps. But when the laptop must traverse more than one radio, the performance is very bad (6-8mbps). I tested my theory by replacing the link between router A and router B with an ethernet cable, and then the speed tests from the laptop to router B more than doubled, to 25-28mbps consistently.

Why is the performance so bad when packets are sent across more than one radio in a router?

Updated:

What I'm trying to achieve is the end-user client network performance (the laptop) that I gain when connecting the AP's with ethernet… without doing so.

I realize that wifi is half-duplex and the more radios there are in the chain, the worse performance will be.

Is it possible to use seprate radios for transmit and receive to solve the problem?

I have 4 mini-pci slots in each board.

Best Answer

Of course the performance will be degraded after so many traversals. Radio is a shared medium (half-duplex), collisions can happen and to avoid them Wi-Fi uses CSMA/CA. Your performance will at least be degraded more than in half. Every client adds to the latency

Related Topic