|You are here: Duckware » FastPing|
(test Mbps speed to/from a device with NO software on the test device)
FastPing: FastPing is a network speedtest tool, utilizing ICMP pings sent at a rate you specify. When a large-sized ping is sent at a fast rate to a device being tested, this allows you to measure the Mbps network speed (and reliability) to that device without installing any software on the device. Great for testing connectivity to lower end IoT devices (like Wi-Fi cams, etc).
Internet Upload speed: Use a large ping size with TTL of your first Internet hop to obtain an estimate of your Internet connection upload speed:
Some routers don't like pings sent too fast -- in that case change the ms time from '0' to '1000':
A warning: Some cable modems support 'upload bursting', so this test will measure that (faster) speed (next section).
Cable Modem Upload bursting: Often times modems allow a small amount of data to be uploaded at a bitrate much faster than the maximum sustained bitrate (a 12 Mbps upload connection may allow bursting up to 40 Mbps). Details. An easy way to see this 'fast burst' and then 'back off' is to upload a bunch of data at ever increasing speeds. Run this command, altering "100" to faster speeds (90,80,...10):
Most modems work fine with a large "65000" byte ping (but some may not). Also, use caution using the results from this test because I have seen some modems treat ICMP differently than other traffic (like UDP).
Network stress test / reliability: Send out a ton of small pings every 2 milliseconds. On Ethernet, the expectation is no lost packets. On great Wi-Fi, there will be no lost packets. But, in general, expect Wi-Fi to have some packet loss from this stress test.
Test Wi-Fi Camera connectivity: Send large pings to the IP address of your Wi-Fi cam to check combined average for both upload and download Mbps speed:
Is 'slow Wi-Fi' to a device due to poor Wi-Fi (or the device)? You 'fastping' (with large ping sizes) a device and sometimes notice significant slowdowns. Is that caused by poor Wi-Fi, or caused by the device itself? One way to find out is to ping TWO devices interleaved (at the same time). If they both 'have trouble', then poor Wi-Fi is likely to blame. But if one device pings fast, and the second device pings slow, the problem is not Wi-Fi.
Reduce ping size if all pings fail: If all pings are failing, the device you are testing likely does not like the 'large' ping sizes. Use the -l:size command line option to select a smaller size. Start at a very small size (like 1000) and ramp until you reach a failure point (and then back off a little from that).
But a warning: As you decrease the ping size, the relative size of the unmeasured 'network overhead' increases, making the resulting Mbps speed measured less accurate.
Slow down the pings if only some 'later' pings fail: If some 'later' pings are failing (first pings work), the device you are testing may not like the fast rate of pings. Slow down the rate of pings. Instead of 'back-to-back' (with -ms:0), slow down the pings using -ms:250 (or even larger/slower).
Why the ping size default is 62500: To also allow 'mental math' to quickly determine the resulting Mbps. All of the math simplifies down to dividing ms reponse time into 1000 to obtain Mbps. For example, a large 62500 ping to a host that also responds (with a ping reply) in 10ms is 100 Mbps (1000/10=100). Here is the full math:
Also, a size of 62500 is large enough to make the unmeasured 'network overhead' relatively small, making the calculated Mbps very close (a slight underestimate) of actual Mbps. This works great for Wi-Fi devices (on 'slower' links). It is NOT designed to accurately measure Gigabit speeds.
Large pings ARE fragmented (a great stress test): Large pings are designed to stress test your networking environment. A large ping must be split into many fragments and each fragment send individually, which are then recombined at the other end into a single ping request (and the same thing happens to the ping reply). If even a single fragment is lost (either way), the entire ping will fail. This makes large pings a great network stress and reliability test.
Each large 62500 byte ping is actually sent as 43 fragments (over Ethernet).Maximum size: The realistic maximum size for a ping is often 65,507 bytes, as that results a packet with 65,535 bytes -- 8 (ICMP header) + 20 (IP header) + 65507 (ping data) = 65535.
Windows ping: To test the 'large ping' concept using the ping program built into Windows:
Linux ping: To test the 'large ping' concept using the ping program built into Linux:
Mac OS X ping: OS X limits ping size to MTU size, so OS X does not support large pings.
Donate: If you find this program helpful, please support it with a donation.
This document is Copyright © 2020-2022 Jerry Jongerius