Analysis of network problems
How should I test bandwidth?
There is nothing wrong with using tools like speedtest.net to determine your bandwidth. What is reprehensible, however, is to rely on Windows (in our opinion). The main reason for this is that we have already seen several times that the CPU or the browser that has to display something graphical usually produces a bottleneck here. Not to forget the possibly bad drivers for some NICs.
So to test, it is always best to use some kind of Debian/Ubuntu based system (with a current Linux Kernel and OS which is not EOL (End-of-Life). Here the problems that can arise due to various bottlenecks are always much smaller.
Furthermore, the network card (usually virtual) is often a trigger for any bandwidth restrictions. With virtual NICs (i.e. with any type of LXC, KVMs), always make sure to use a good NIC, i.e. “VirtIO” if possible, as an alternative (e.g. in the VMWare world), you should fall back on “VMXNET 3”.
Windows does not natively support VirtIO, that is correct, but you should consider implementing drivers for it e.g. via here.
So what should I look out for before I test the bandwidth?
- Use a current Debian/Ubuntu for testing
- Make sure that if any virtual network cards apply on the path that you use either VirtIO or in the case of VMWare “VMXNET 3”
- Make sure that there are enough resources so that your server can process this bandwidth at all. (simply give too much rather than too little, minimum 4 Cores and 1GB RAM).
Once you have verified these points, it's time for the actual testing.
As we said before, there is nothing wrong with testing using speedtest.net, but we would like to point out that these are still unrealistic scenarios that you will never experience in real life.
You can install the CLI of speedtest using:
apt purge -y --auto-remove speedtest-cli
apt update -y
apt install -y curl sudo
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo -E bash
apt install -y speedtestBefore you test, you should make sure you are using the right servers. anti-ddos of some servers or paths to them could harm else. Accordingly, some providers may be better at speed tests on a server than others and vice versa.
Our recommendations:
| Server-ID | Description |
|---|---|
| 13764 | Eranium B.V. - Amsterdam, prob 100Gbps |
| 55133 | 1&1 Mobilfunk - Mainz, ~100Gbps |
| 61933 | Scaleway - Paris |
| 54504 | Deutsche Glasfaser - Frankfurt |
| 37492 | Melbicom - Frankfurt |
Start a speedtest with: speedtest --accept-gdpr --accept-license -s <Server-ID> and replace <Server-ID>.
The values haven't really improved, what should I do?
- If problems continue and you are using a virtual network card (i.e. with KVM servers), then you should try increasing the "Multiqueue" value used by both technologies, preferably to the number of cores of the KVM, or "4".
- Your provider probably also has an anti-DDoS (Hetzner does not apply to that.), make sure that your provider's anti-DDoS does not affect the tunnel traffic (e.g. you can request approval of our router/endpoint IP or switch off the filters), alternatively you can switch to IPv6 endpoints if your provider supports it.
- Where are you testing from? Is it, for example, in America while you have purchased an IP transit service in Germany? We probably can't help you in that case, because the journey is probably far too long and the bottleneck will probably arise along the way.
The values are better, but in my original environment it is still so slow
- Apply the same criteria as with the speed test machine.
- If you are using Windows make sure to use the VirtIO drivers. since you now should use a VirtIO NIC (except for vmware, you dont need the drivers there).