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.