NAT under performing direct connection by 10x
Malcolm Matalka
mmatalka at gmail.com
Wed Mar 11 15:10:51 UTC 2015
I am setting up my Raspberry Pi Model B+ as a router and am experience
a throughput bottleneck that I cannot track down.
I'd like to preface my question with two things:
- I'm new to this so it is quite possible this is something obvious and
I simply lack the knowledge to see it. If so, sorry for wasting
anyones time and thank you very much to whoever points it out to me.
- It is quite possible that my Raspberry Pi does not have the hardware
to support the desired throughput, but I'm having trouble finding
evidence to back up that hypothesis.
The setup I have is:
Laptop -> (wlan0 - RPi - ue0) -> Router
I am using a USB dongle with a 'run0' interface running as a hostap.
The RPi is then connected to a router which is connected to the
internet.
I have run the following command in different experiments:
wget -O /dev/null
ftp://ftp.freebsd.org/pub/FreeBSD/releases/VM-IMAGES/10.1-RELEASE/amd64/Latest/FreeBSD-10.1-RELEASE-amd64.raw.xz
On the RPi: download speed of around 500 KB/s
On the laptop: download speed of around 80 KB/s
I have also scp'd a file from the laptop to another computer on the other
side of the router:
Laptop -> RPi -> Router -> Computer
And I have a throughput of around 1 MB/s. This exercises both network
interfaces similar to downloading from the internet.
The only difference I am aware of is that NAT is happening in the
Internet case.
I have:
- Checked CPU, in the NAT case the load average does not break 0.2. The
CPU does not seem stressed.
- Interrupt %, in top, doesn't go above a peak of 4% in either case.
- netstat -i and netstat -s do not show any errors happening (that I can
see).
- While I have no idea if it is significant, I have noticed that in the
case of a local download (on the RPi), in tcpdump the "win" goes down
to around 1000. In the NAT case it stays at around 4096.
Currently I am at a loss to explain the bottleneck. Is there a
suggested next place to explore to track this down? As I said, it could
be that the RPi is not capable of these throughputs, I'm using this as
an excuse to learn how to investigate a performance bottleneck in
FreeBSD though so I'm more interested in the meta-discussion of how to
determine where the problem is.
Thank you,
/Malcolm
More information about the freebsd-performance
mailing list