Causes of Packet Loss
Packet loss doesn’t happen for only one reason. Diagnosing the cause of packet loss on your network will tell you what you need to fix:
Network bandwidth and congestion: A primary cause of packet loss is insufficient network bandwidth. This happens when too many devices attempt to communicate on the same network. Insufficient hardware: Problems with any hardware on a network that routes packets can cause packet loss. Routers, switches, firewalls, and other networking devices are the most vulnerable. Damaged cables: Packet loss can occur on the physical network layer. If Ethernet cables are damaged, improperly wired, or too slow to handle the network’s traffic, the cables leak packets. Software bugs: The firmware in the network hardware or computer software can have bugs that cause packet loss.
How to Fix Packet Loss on Your Network
To determine the cause of packet loss, start with the easiest problem to detect:
Check the physical connections. Check the Ethernet connection between the devices. Look for signs of physical damage or misfiring and see if switching out the cables solves the problem. Free up bandwidth. Is any piece of hardware handling more connections than it should? If so, limit the bandwidth on the router. Replace the hardware. Swap out potentially problematic devices on the network to see if the packet loss disappears when a specific device is removed. Report software bugs. If you suspect software bugs caused the packet loss, the only way to fix it is through a firmware patch from the vendor supplying the hardware. Report suspected bugs as you find these issues to encourage vendors to fix the problem.
How to Detect Packet Loss
Several applications can detect packet loss across a network. These work by sniffing packets in some way, either by analyzing the trip time or looking at the packet contents. The simplest way to discover if packet loss exists is by pinging devices on the network:
In Windows, open a Command Prompt window and use the ping command to target your router. For example, if the router’s local IP address is 127. 0. 0. 1, enter ping 127. 0. 0. 1 -t to ping the router. On macOS or Linux, open a Terminal window and enter ping 127. 0. 0. 1. The only difference for Windows computers is the missing -t at the end of the command. After the ping command processes a sufficient number of packets (at least 10), press Ctrl+C or Command+C to stop the command. Look to see if there was any packet loss. If the specific connection between the pinging device and the target is functioning correctly, you should see 0% packet loss. The report might look like this: — 127. 0. 0. 1 ping statistics —27 packets transmitted, 27 packets received, 0. 0% packet lossround-trip min/avg/max/stddev = 1. 820/8. 351/72. 343/14. 186 ms
Detect Packet Loss With tcpdump
The tcpdump command on macOS and Linux is more powerful than ping. The command captures packets and then calculates the amount of packet loss. To use the command, open a command prompt or Terminal window and enter tcpdump -i any.
— 127.0.0.1 ping statistics —27 packets transmitted, 27 packets received, 0.0% packet lossround-trip min/avg/max/stddev = 1.820/8.351/72.343/14.186 ms
This runs tcpdump over any network connection. The command can also be run with -i eth0 to capture only the primary network interface or with -c 10 to capture only 10 packets.
After the command runs, look at the bottom line to see if any packets were lost:
17 packets captured85 packets received by filter0 packets dropped by kernel
The process of detecting packets is relatively low tech. After you establish a way to check communications across the network, follow a practice of isolation and elimination to determine the source and cause of the packet loss. This will require pinging a majority of devices on the network. Knowledge of the network’s topology is essential.