Transferring a single large file (1GB for example ) is not an accurate way to test available bandwidth over the Internet. Yes, it works great on a LAN with low latency, but on the Internet, latency is much higher.
The reason being is that transferring a file using only 1 TCP session on the stack will hit the max buffer waiting for ACK's.
A technical summary can be found here:
To get higher large file transfer speeds you have to increase the buffer size of your TCP stack.
On Joyent SmartOS:
ndd -set /dev/tcp tcp_max_buf 16777216
ndd -set /dev/tcp tcp_cwnd_max 8388608
ndd -set /dev/tcp tcp_xmit_hiwat 2048576
ndd -set /dev/tcp tcp_recv_hiwat 2048576
The above is giving more RAM to each TCP session to facilitate the transfer of large files. This is very inefficient if you are not regularly transferring +100MB files and will reduce performance of your overall system by reducing RAM available.