Hi,
I'm writing this post with the hope to "sensibilize" openwrt users and developers to spend more effort on long distance link optimization. Let's me explain.
Five years ago I made my first long distance link. The link is 4.1 km, so it's not so long, but I live in a rural site with no DSL service (and no hope to have it soon, that's Italy!) and so I use it to bring DSL connection, and I need to have the maximum possible throughput.
At first time I used two WRT-54GL, replaced times later with the optimum WHR-HP-G54 (one of the best cheap hardware with very powerfull rf txpower), two 24 db grid antenna. As firmware I used first sveasoft (I know, it's closed, but it was the only firmware having the most recent wireless drivers for broadcom) and then dd-wrt. With this hardware/software configuration, using channel 14 (in Europe is not legal, but it's the only real clear channel), fixed rate and shortslot_override I'm able to have a real throughput of 1.2 MB/s with fixed low latency of 1-2 ms and rssi of -68.
Later I made a second long distance link of 3.5 km (yeah, it's not so long also this), in this case using a couple of Uibuiquiti NanoBridge 5 GHz 22 db, with OpenWRT (trunk compiled by myself, in the meanwhile I abbandoned dd-wrt for the normal routing operation, preferring openwrt). In this scenario, with a rssi of -74 I have a stable link and a real throughput of 3 MB/s.
So, two weeks ago, I replaced my old 2.4 link with a new one 5 Ghz. First using Ubiquiti NanoBridge 5 Ghz 25 db (despite of distance I need high gain due of some trees in the los) and then, because of the low received signal (-83), two Rocket M 5 Ghz and two RocketDish 30 db. This is the final rssi
LinkName XX:XX:XX:62:35:AB -74 dBm -95 dBm 52.0 Mbit/s, MCS 11, 20MHz 39.0 Mbit/s, MCS 10, 20MHz
LinkName XX:XX:XX:62:35:82 -76 dBm -95 dBm 52.0 Mbit/s, MCS 11, 20MHz 39.0 Mbit/s, MCS 10, 20MHz
this the the test speed
root@OpenWrt:/# ttcp -r -s -v
ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5010
ttcp-r: start time Sun Jul 21 11:15:55 2013
ttcp-r: File-Descriptor 0x3 Opened
sockbufsndsize=16384, sockbufrcvsize=87380, sockbufsize=51882,
# tcp receiver #
ttcp-r: accept from 172.20.0.1
ttcp-r: 16777216 bytes in 23.052525 real seconds = 710.725 KB/sec +++
ttcp-r: 16777216 bytes in 1.390000 cpu seconds = 11.511 MB/cpu sec
ttcp-r: 5753 I/O calls, 4.007 msec(real)/call, 0.242 msec(cpu)/call
ttcp-r: 0.070000user 1.320000sys 0:23real 6.0% 0i+0d 166maxrss 0+5pf 5420+92csw
ttcp-r: buffer address 0xc14000
ttcp-r: File-Descriptor fd 0x4 Closed
and the latency of the link is quite unstable
Risposta da 172.20.0.1: byte=32 durata=2ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=4ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=5ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=30ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=8ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=31ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=24ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=16ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=8ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=2ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=53ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=12ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=11ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=3ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=7ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=47ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=5ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=2ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=39ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=2ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=52ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=5ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=5ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=13ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=7ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=28ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=13ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=35ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=7ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=20ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=16ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=3ms TTL=64
Risposta da 172.20.0.1: byte=32 durata=3ms TTL=64
So with more expensive and powerful hardware I have worst results, in terms of latency and throughput. So I decided to rollback to airOS, and this is the result (using same channel and same configuration)
speedtest
root@DbfNas:~# ttcp -r -s -v
ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5010
ttcp-r: start time Tue Jul 30 12:31:50 2013
ttcp-r: File-Descriptor 0x3 Opened
sockbufsndsize=16384, sockbufrcvsize=87380, sockbufsize=51882,
# tcp receiver #
ttcp-r: accept from 172.20.0.1
ttcp-r: 16777216 bytes in 4.872735 real seconds = 3.284 MB/sec +++
ttcp-r: 16777216 bytes in 0.530000 cpu seconds = 30.189 MB/cpu sec
ttcp-r: 10233 I/O calls, 0.476 msec(real)/call, 0.052 msec(cpu)/call
ttcp-r: 0.070000user 0.460000sys 0:04real 10.9% 0i+0d 166maxrss 0+5pf 9714+68csw
ttcp-r: buffer address 0x9bc000
ttcp-r: File-Descriptor fd 0x4 Closed
ttcp done.
pingtest
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=2ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=2ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=2ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=2ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=2ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=4ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=10ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=2ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=2ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Risposta da 172.10.0.1: byte=32 durata=1ms TTL=64
Obviously with openwrt I set the distance, and tried also Attitudine Adjustment build, with no luck. This test tell that in this particular scenario openwrt is not mature for long distance link, and I have to use airOS, with regret. I hope that will be spent more effort on long distance link, as well as created a dedicated section for ldl on the forum.
Then I have a last question, that i know has already been discussed but the final response is not clear to me: I'm in Italy, I can use channel 13 of 2.4 Ghz here. Why I'm unable to use it, except of using hack methods?
Thanks in advance
FunMan