Very slow copying over wireless between machines, but internet works at normal speed?

3

3

I have a laptop (let me call it A) with Intel Centrino 1030-N wireless (iwlwifi module), running Arch Linux, and another laptop (I will call it B) with Atheros AR928X wireless (ath9k module), running Ubuntu 11.10.

They connect to a wireless network provided by a D-Link DI-524 router (802.11g), which in turn connects to a DSL modem (10Mbps/1Mbps link)

Copying files between those machines, either through scp or mounting a share via NFS or Samba, is very slow (at most 200 KB/s) and sometimes fails (times out), even when both machines are inches away from the router.

However, downloading files on either machine works correctly at the expected speeds (~1.2 MB/s).

I ran iperf, as recommended in a comment, and it gave me this:

For the B machine as server and the A machine as client:

renan@B:~$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.0.125 port 5001 connected with 192.168.0.121 port 57153
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-11.1 sec  6.88 MBytes  5.19 Mbits/sec


renan@A:~$ iperf -c 192.168.0.125
------------------------------------------------------------
Client connecting to 192.168.0.125, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.121 port 57153 connected with 192.168.0.125 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.8 sec  6.88 MBytes  5.32 Mbits/sec

For the A machine as server and the B machine as client:

renan@B:~$ iperf -c 192.168.0.121
------------------------------------------------------------
Client connecting to 192.168.0.121, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.125 port 34611 connected with 192.168.0.121 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.1 sec  8.38 MBytes  6.96 Mbits/sec


renan@A:~$ iperf -s
 ------------------------------------------------------------
 Server listening on TCP port 5001
 TCP window size: 85.3 KByte (default)
 ------------------------------------------------------------
 [  4] local 192.168.0.121 port 5001 connected with 192.168.0.125 port 34611
 [ ID] Interval       Transfer     Bandwidth
 [  4]  0.0-10.8 sec  8.38 MBytes  6.51 Mbits/sec

The bandwidth is very low, as can be seen from those results.

Any clues?

Renan

Posted 2012-03-04T17:34:08.977

Reputation: 7 463

1I find much better wireless routers are from LinkSys (Cisco), they are advanced in this business compared to D-Link brands. Linksys E series was giving me that issue lesser before. – YumYumYum – 2012-03-04T17:50:34.247

Do you really think it is the wlan hop? you can try to do such a scp (that is slow) local source machine (on sourcemachine: scp sourcemachine:/some/where /tmp/xxx) – Jörg Beyer – 2012-03-04T20:10:46.940

@JörgBeyer I think it's the WLAN, because when using a wired network, the problem does not happen. Using scp sourcemachine:file /tmp gives slightly better results (I get peaks of 1 MB/s, but then it slows down). – Renan – 2012-03-04T20:19:04.287

where is wlan in the picture, when you the mentioned scp on the local source machine? – Jörg Beyer – 2012-03-04T20:22:41.370

@JörgBeyer I don't understand what you mean by 'where is wlan in the picture', but in both situations (the one I describe on my original post and the one I describe in my comments) I'm using the WLAN. – Renan – 2012-03-04T20:32:16.970

1Install IPerf on both machines and run that between them, and see what speed you get there. NFS, SMB, and scp may all be inefficient users of the network. – Spiff – 2012-03-04T23:39:29.020

@Spiff ran those. Appended results to my original question – Renan – 2012-03-05T00:21:25.623

Answers

4

So it sounds like you're getting 10 megabits per second when downloading from wired to wireless on an 802.11g AP, which is on the low side but not terrible. Maybe you're on a busy channel. Try a different one. I usually expect 15 megabits per second under real-world conditions for 802.11g, although in ideal conditions you can see over 20 and even close to 30 megabits per second with chipsets that really know how to use the airtime efficiently (frame bursting, etc.). The rule of thumb for any flavor of 802.11 is that you can get IPerf TCP throughput of about 50-60% of the 802.11 signaling rate that you're getting.

Actually, come to think of it, to see what your maximum wired to wireless throughput really is without possible constraints of your broadband internet connection, you should try putting one of your machines on wired Ethernet on the LAN port of your AP, and do the IPerf between there and the other client (which would still be on wireless) to see what kind of max TCP throughput numbers you can get. If you still get only 10 megabits per second, read on.

Given that you can only do 10 megabits per second wired to wireless, the fact that you're getting 5–6.5 megabits per second wireless to wireless is to be expected. Because in that case, every packet has to go across the channel twice: once from client A to the AP, and then again from the AP to client B. This is a standard part of the 802.11 protocol called intra-BSS relay. It solves what's known as the hidden node problem when A and B are each in range of the AP, but not in range of each other. Unfortunately 802.11 doesn't really have a way (yet) for two clients of an AP to talk directly to each other when they are in range of each other.

So it could be that what you're seeing wireless-to-wireless makes sense for your conditions. The equipment you're saddled with is also a bit of a bummer, with a G-only AP, a Centrino wireless card that is 2.4GHz only, and is single spatial stream ("N in name only") on transmit, and and Atheros chipset that is also 2.4GHz-only (but at least it can both send and receive with 2 spatial streams). Ways to improve it would include:

  • Find a cleaner channel (which can be hard to do in 2.4GHz in densely-populated environments nowadays).
  • Upgrade to an 802.11n, 2x2:2 (2 spatial streams, 300 megabits per second) AP. Without the option of using 5GHz, you'll be a little stuck because if you can't find 2 contiguous clean channels, you won't be able to use 40MHz-wide channels very well, so you'll probably be stuck using it in 20MHz channel mode (HT20), meaning your maximum signaling rate will be 144.4 megabits per second (assuming 2 spatial streams, so only 72.2 megabits per second when your Centrino is transmitting).
  • Upgrade your AP and your wireless clients to modern 802.11 gear. That means 802.11n with 3 spatial streams on both send and receive, dual-band capable cards, and a simultaneous dual-band AP. That way you can make your laptops to 450 megabit per second signaling using 40MHz-wide channels in the less crowded 5GHz band.

Spiff

Posted 2012-03-04T17:34:08.977

Reputation: 84 656

Very interesting, I didn't know about much of this stuff. Thanks! – Renan – 2012-03-05T21:22:12.137