Read more

Test downstream bandwidth of Internet connection

Thomas Eisenbarth
October 12, 2015Software engineer at makandra GmbH

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

Illustration online protection

Rails Long Term Support

Rails LTS provides security patches for old versions of Ruby on Rails (2.3, 3.2, 4.2 and 5.2)

  • Prevents you from data breaches and liability risks
  • Upgrade at your own pace
  • Works with modern Rubies
Read more Show archive.org snapshot

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

Posted by Thomas Eisenbarth to makandra dev (2015-10-12 10:52)