From owner-freebsd-performance@FreeBSD.ORG Wed Mar 11 15:10:51 2015 Return-Path: Delivered-To: freebsd-performance@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BB6E334E for ; Wed, 11 Mar 2015 15:10:51 +0000 (UTC) Received: from mail-we0-x22a.google.com (mail-we0-x22a.google.com [IPv6:2a00:1450:400c:c03::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 55C52BF3 for ; Wed, 11 Mar 2015 15:10:51 +0000 (UTC) Received: by wesw55 with SMTP id w55so9940003wes.2 for ; Wed, 11 Mar 2015 08:10:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:user-agent:mime-version :content-type; bh=vOSrtJExuOPAsuXlegQRhK8Zy09JU80PwptHvrQ4G4g=; b=VNKNGmZv/wicXk9XmLN7um2B/OvecRkxEsM5AIyhAexKF9led1HvUIT3csa1pSvY+4 333q6B146itQs5eKYsuP9WwK4Wq9yVYv9TTjzo9PzRN65jF32d5umMqEhRtj4UItaSDu w31oBXXNwSNZxcfdebaYno2YMRKvv8ZZve5FrMKUnWJNtLyKMeLhFLQdCTXZx5nbjatS LRZFQ06gI7JQ+gaNjOwEvcr3lQ21SCoI53LhzwL9/7ZdnoFKeRr+iW6slz1LFWXMgn8R B/ChgUJmHgmEtQH6uffd/+rRTg2qs27/mxUA0j7AqaNoQ2xtInyB59rz/iqGCYKmcxMK m20w== X-Received: by 10.194.171.136 with SMTP id au8mr80239842wjc.6.1426086649600; Wed, 11 Mar 2015 08:10:49 -0700 (PDT) Received: from localhost ([2a01:7e00::f03c:91ff:fe70:2696]) by mx.google.com with ESMTPSA id ga8sm6521861wib.11.2015.03.11.08.10.48 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Mar 2015 08:10:48 -0700 (PDT) From: Malcolm Matalka To: freebsd-performance@freebsd.org Subject: NAT under performing direct connection by 10x Date: Wed, 11 Mar 2015 15:10:46 +0000 Message-ID: <87fv9bin7t.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-BeenThere: freebsd-performance@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Performance/tuning List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Mar 2015 15:10:51 -0000 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