What Is Ping?
What is ping, anyway? Simply speaking, ping, or latency, is the total time it takes for some data to reach a distant service and for us to receive a response. Ping is usually measured in milliseconds, the lower the ping, the less time it takes for the data to travel between two destinations. Ping is named after the so-called Ping network utility. So what does ping mean for the miner?
First and foremost: ping is very important. Why? The better the connection to your pool is, the faster your mining rig can receive new data and the more iterations on finding the solution it can take. For blockchains with short block time (such as Ethereum), this is particularly vital. If the connection to the pool is not optimal, then the solution your rig may have found may arrive later than it could, resulting in an orphan block or no block at all — which means fewer profits no matter whether you’re on a shared or solo pool.
What Is Ping To the Mining Pool?
Now let’s get to the mistake many people are making: when they talk about “ping to the pool”, they actually think about the standard ping utility (named the same in Windows and Linux), which uses special ICMP packets to measure the particular host response time, but… this is not exactly relevant for a mining pool. Let me explain why.
First of all, ICMP is a different type of protocol that is being handled by the Internet routing machinery differently. While mining, you use TCP/IP. When you connect via TCP/IP to the pool, you’re connecting to the actual software that powers the pool (in most cases for serious mining pools this is proprietary tools that are engineered by professional programmers), and guess what, it may perform differently than a low-level part of the operating system that handles ICMP responses. If the pool server is very busy the pool software may respond slowly but the ICMP pong packets (that’s right, a response to ping is called “pong”) would be sent out immediately.
Second, the actual host you’re pinging on most larger pools is likely not the real machine that processes your mining rig solutions. In most cases, it is either a load balancer that distributes the load across several different physical servers or a gateway that sits in your country and then forwards the traffic to and from the real server located somewhere else. There are commercial and home-baked solutions that do these things and they are widely used to optimize the load and traffic. One commercial example would be CloudFlare Spectrum, but it is not the only one, of course.
By the way, it is quite easy to check whether the pool uses CloudFlare Spectrum. One example would be Ethermine, let’s see step by step how easy it is to check. First, we look up the IP address that is used to connect to the pool by the miner (and not the website address) — for example, for Ethermine EU1 server it is 184.108.40.206 — your actual results may vary as it may resolve in different addresses. Second, we look up that IP address to see where it belongs by entering it into the lookup tool like this one: https://who.is/whois-ip/ip-address/220.127.116.11. As we can see, it shows CloudFlare as an owner of the IP which means you are actually connecting to some proxy server and not the actual pool machine.
So even though the classic ping would show some drastically quick response time, it may take some extra time to transfer the data from the gateway server to the real mining pool server.
Stratum-Ping Tool by 2Miners
That’s why one day we decided to make a tool that measures real ping to a miner server. We call it stratum-ping and it is available on GitHub. How does it do it?
Instead of sending an ICMP packet, it does what a real mining rig does — actually connects to the pool, sends the login command to it using the Stratum protocol, and waits for the valid response, then repeats it several times. As a result, we get an accurate and honest measurement that discards all of the routing trickery and shows how fast or how slow in reality the mining pool of your choice is. In fact, these numbers should look somewhat similar to the numbers reported by your own mining software. For accurate results, it’s best to look at the resulting averages as situational single cases may vary. It is also advised to try and re-run the test at different times of the day.
We purposely don’t want to post any results here and compare them -> it is important that you try and do it yourself on your own Internet provider and connection as the routing may be different. But what we encourage you to do is give it a try, because not every ping is the same.
How to Ping the Mining Pool
We realized that it was too difficult for some of the miners to start using our ping tool for the mining pools. Let’s make it more simple as we like it to be. This is a short guide on how to use the 2Miners stratum-ping tool to ping any mining pool you want. You could use it on any operating system: Windows, Mac, Linux. Let’s see the Windows typical usage.
- Download and unzip the latest release of the stratum-ping tool from github.
- Run ping-2miners.bat file to ping 2Miners Ethereum mining pool server.
- Edit ping-2miners.bat with the notepad and change the pool server and port to the desired mining pool. Save the bat file and run it.
What should be considered as a good result?
We think that if your ping to the mining pool is less than 100 ms it could be considered as a good result. It doesn’t mean that 200 ms is always bad for example. You could be located far away from the mining pool servers so there is nothing to worry about. However, for SOLO mining it is always good to have as low ping as possible to reduce the Uncle and Orphan block rate.