Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have the following home network setup:

  • ZyXEL P-2602HW-D1A Router
  • Ubuntu 10.04 Server:
    • Ethernet card 100Mbps, directly connected to router
    • Configured with SFTP server
  • Windows XP Professional SP3:
    • WIFI card 54Mbps
    • Using SmartFTP to transfer files over SFTP

When I hover my mouse over the connection icon in the system tray on my desktop, it tells me the WIFI connection is excellent, usually with a speed of 48Mbps.

Therefor, since I'm transferring files between my desktop and server on my local network, I'd expect speeds of roughly somewhere around (54Mbps / 1 Byte) - overhead ≈ 5MB/s . However I'm only getting something like 500kB/s (roughly a tenth of what I'm expecting).

Is there something obvious I'm overlooking here, which could be causing these speeds?

Could my router accidentally be routing the traffic over WAN first (Seems unlikely, cause I don't think I'm allowed to reach those speeds upstream over WAN.)? Any other (obvious) suggestions?

share|improve this question
Wireless interference? – Not Kyle stop stalking me Mar 13 '12 at 15:36
@Kyle: could be, but then I'd expect a slower speed indication when I hover my mouse over the connection icon in Windows XP. Sometimes it does show smaller figures and in that case I expect it's due to interference. Or is this a misunderstanding on my part about what this figure is telling me? – Decent Dabbler Mar 13 '12 at 15:38
up vote 6 down vote accepted

Wi-Fi overhead is typically 50%. You based your calculation on a data rate you said you weren't getting. You didn't convert between mega and Mebi. The tool you were using was likely only reporting the data rate at which your client was transmitting, which is not necessarily the data rate your AP was getting when transmitting to your client. So if you were copying data from the SFTP server to the client at the time (you didn't specify) then you might not have been looking at the right data rate.

(48 megabits per second / ~8.4 MebiBytes per megabit) - 50% typical Wi-Fi overhead = 2.5 MebiBytes/s. So that gets us a lot closer, but if you're really only getting 500 KibiBytes/s, we're still off by a factor of 5.

At this point I'd probably run IPerf between the server and client machine, and use that as a benchmark to compare your SFTP setup against. My suspicions:

  • Either your server- or client SFTP implementation is inefficient.
  • Maybe there's a TCP tuning problem, perhaps one end or the other is choosing an insufficient TCP window size. I've seen Windows XP choose ridiculously low values by default. I believe 64 KibiBytes should be a good number for most 802.11g networks. You can easily experiment with different TCP window sizes with IPerf, to find out what gives you best performance on your network.
  • Perhaps you weren't looking at the right data rate (i.e. needed to look at the AP's Tx rate to your client), or you were applying wishful thinking to your sampling of the data rate you were seeing when hovering, and accidentally biasing toward 48.
share|improve this answer
Great suggestions. I'm gonna look at these and tinker with some a bit. And true: the calculations on my part were a bit sloppy. It was just to give a rough estimate. But indeed, a factor 5 is still pretty high. Thanks. I'm gonna try out this IPerf tool in a bit. – Decent Dabbler Mar 13 '12 at 17:03

My suggestion is not to follow the windows indications on speed throughput, because you have some logical variables that are not taked into account when XP tells you the speed.

For instance, the noise in the channel; can be that something is also opperating in the same channel and frequency as you are, even though the strength of the signal is quite good, still you can have collisions forcing to repeat the transfer of a datagram (degradating the overall speed), also the Zyxel CPU plays a big part on this, it needs to switch your packet between 54MBps interface to 100Mbps, if the CPU is busy doing something else, like port natting (imagine that at the same time your server is accessing to internet) then it can be that when switching packets between interfaces, some get lost or simply delayed waiting for CPU.

It can be that your wifi driver is not as good as the specs promised ... etc, etc

Long story short, we have several variables influencing the last result, your question is pretty good formulated and your approach is correct, the only thing is that we still have several variables that we have no control over yet.

Tools that may can help you, NetStumbler IPerf

And for recording performance based on snmp, Cacti is very easy to install in Ubuntu server, and by activating snmp on the Zyxel you can really see what's going on in that box

share|improve this answer
@Spiff: I'm currently transferring an 8GB file from my desktop to the server, and my router is indicating only ~30% percent CPU usage and ~60% memory usage though. So I guess my router doesn't have any difficulties in that area. – Decent Dabbler Mar 13 '12 at 17:10
[Oops, I accidentally deleted my earlier comment on this answer. I had said that noise triggers lower data rates, so noise is usually manifested as lower data rates. I also said that jms had a good point about the possibility of cheap APs having underpowered CPUs, which is what @fireeyedboy was replying to.] – Spiff Mar 14 '12 at 2:22
@fireeyedboy maybe is better to check the wireless part first, looking if you have any wifi operating at the same channel, if that happens, try to change your channel by order of 6, meaning if they are in channel 1, then select channel 6 ... – huskeer Mar 14 '12 at 8:08

Is the ethernet link between the router and the Linux box running at full speed and in full-duplex mode? It's possible that the connection is set up wrong (something odd with the auto-negotiation?), or has become degraded over time - I've seen both things happen with commodity routers.

share|improve this answer
I'm not sure, but it definitely sound like something worth investigating indeed. Would you be able to give me a hint as to how to check this on the command line on my server? dmesg perhaps? When I do a dmesg | grep 'eth0', for instance, it shows me: link up, 100Mbps, full-duplex, lpa 0x45E1 (both for link up and link down). Not sure if this is enough for a definitive conclusion though? – Decent Dabbler Mar 13 '12 at 16:32
Also, do you perhaps have a hint on how to check this on my router? – Decent Dabbler Mar 13 '12 at 16:37
The output you posted from dmesg suggests all is well with the ethernet link, at least as far as the Linux box is concerned. It's unlikely, but possible, that the router thinks something else. How you'd find that out, though, depends on the make and model of the router - I've never used a ZyXEL, so can't offer any help there, I'm afraid. It can't do any harm to reset the router... – D_Bye Mar 13 '12 at 16:44
OK D_Bye, thanks for the confirmation about the Linux box. – Decent Dabbler Mar 13 '12 at 16:52

Addition to previous answers

Really you have three two Points Of Failures

  • UTP cable (last resort)
  • WiFi link
  • ZyXEL per se

In order to find most point you have to exclude points from tests separately

  • Direct link XP-Ubuntu (wired)
  • XP-ZyXEL-Ubuntu (all wired)
  • Current state

This way you'll know exactly, who give you most speed degradation

share|improve this answer
@Spiff - and "The prible" is?.. sorry my poor English – Lazy Badger Mar 14 '12 at 2:12
Sorry, I decided not to leave that comment, and didn't notice that it had accidentally gotten submitted (I was working from my phone). That word was going to be "problem". :) – Spiff Mar 14 '12 at 2:17

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .