Test downstream bandwidth of Internet connection

Updated . Posted . Visible to the public.

You want to test your 1GE or 10GE internet uplink? We needed to ensure we have full 10GE to the backbone for a customer project.

Using netcat

To test whether we can achieve the bandwidth internally, you can use netcat and dd like this:

On your first server: nc -v -l 55333 > /dev/null
On your second server: dd if=/dev/zero bs=1024K count=5000 | nc -v $remote_ip 55333

You should see some output like this:

user@xxx:~ % dd if=/dev/zero bs=1024K count=5000 | nc -v removed 55333
Connection to 91.250.95.249 55333 port [tcp/*] succeeded!
5000+0 records in
5000+0 records out
5242880000 bytes transferred in 4.982206 secs (1052320978 bytes/sec)

Downloading from many public mirrors

To ensure you have the bandwidth available to the Internet use the following Ruby snippet:

File.open("mirrors").each_line do |l|
  command = "fetch -q #{l.strip} -o /dev/null &"
  system command
end

You can use the mirrors file attached. Be careful though, this will lead to seriously bandwidth usage on your public interface.
Use killall fetch as soon as you can see the expected traffic rate after a few seconds, e.g. by using nload.

We have two redundant auto-failover FreeBSD load balancers for our Ruby on Rails hosting setup that are connected to the Internet backbone with a 10GE interface pipe. All other components are redundant, too. Interested? See http://railscomplete.de Show archive.org snapshot

Thomas Eisenbarth
Last edit
Thomas Eisenbarth
Attachments
License
Source code in this card is licensed under the MIT License.
Posted by Thomas Eisenbarth to makandra dev (2015-10-12 08:52)