Close Menu
DPC Virtual Tips
    Read More

    How to Determine Whether Packet Loss Is Local or Network Related on Linux

    August 12, 2026

    How to Investigate TCP Retransmissions on Linux

    August 11, 2026

    Slurm Node Is DRAINED: How to Find the Exact Reason

    August 10, 2026
    • Home
    • About Us
    • Contact
    • Cookie Policy
    • Comment Policy
    • Privacy Policy
    • Terms of Use
    • Disclaimer
    Wednesday, August 12
    DPC Virtual Tips
    • Home
    • Operating Systems
    • PowerFlex
    • HPC
    • Virtualization
    • About the Author
    • About Us
    • Contact
    DPC Virtual Tips
    Home » How to Determine Whether Packet Loss Is Local or Network Related on Linux
    Operating Systems

    How to Determine Whether Packet Loss Is Local or Network Related on Linux

    DaniloBy DaniloAugust 12, 2026No Comments10 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    packet loss tshoot
    Share
    Facebook Twitter LinkedIn Pinterest Email

    Packet loss troubleshooting can become difficult because the symptoms often look similar regardless of where the problem actually occurs. A slow application, unstable SSH session, failed API request, or poor storage performance may all eventually lead an administrator to suspect that packets are being dropped somewhere along the communication path.

    The real challenge in packet loss troubleshooting is not simply proving that packets are being lost, but determining where the loss happens. A Linux server can lose packets because of local interface errors, overloaded queues, kernel processing limits, switch problems, upstream congestion, firewall behavior, or issues much farther away from the system being investigated.

    A useful troubleshooting process therefore needs to separate the local host from the network around it. Instead of immediately blaming the switch, router, or remote server, the investigation should move progressively from the Linux interface toward the destination, collecting evidence at each layer.

    Start by Confirming That Packet Loss Really Exists

    The first mistake during packet-loss troubleshooting is relying only on application symptoms. A delayed web request or interrupted SSH session does not automatically mean packets are being discarded.

    A simple starting point is ping:

    ping -c 20 192.168.1.1

    The summary shows how many packets were transmitted, received, and lost.

    For example:

    20 packets transmitted, 20 received, 0% packet loss

    If loss is reported, repeat the test against several targets. The important detail is not only whether packets are lost, but where the loss begins.

    A practical sequence might be:

    ping -c 20 127.0.0.1
    ping -c 20 <local_interface-IP>
    ping -c 20 <default-gateway>
    ping -c 20 <remote-host>

    These four tests examine progressively larger parts of the communication path (from the local system to the destination system).

    If the loopback test fails, the problem is clearly local to the system. This situation is uncommon, but it immediately changes the direction of the investigation.

    If the local interface IP works but the default gateway shows loss, the issue is more likely associated with the interface, local cabling, VLAN, virtual switch, physical switch, or Layer 2 path.

    If the gateway is completely stable while a remote destination loses packets, the investigation should move beyond the local segment.

    Check the Linux Interface Counters

    Before investigating routers or remote networks, inspect the network interface itself.

    Use:

    ip -s link

    The command displays packet statistics for every interface, including received packets, transmitted packets, errors, dropped packets, overruns, and other counters.

    A typical interface may display something similar to:

    RX:  bytes  packets  errors  dropped  missed  mcast
         984321  10542    0       0        0       241
    
    TX:  bytes  packets  errors  dropped  carrier  collsns
         756221  8211     0       0        0        0

    For example:

    💡 Do not focus only on the absolute values. A server that has been running for several months may already contain old errors that are no longer relevant. What matters during troubleshooting is whether the counters continue increasing while the problem occurs.

    Run the command once (replace the eth0 with your interface, if necessary):

    ip -s link show eth0

    Generate or observe traffic for a few minutes and run it again. If errors or dropped increase consistently, there is strong evidence that the problem is close to the Linux host.

    RX errors may indicate problems involving the physical interface, driver, cable, transceiver, switch port, or frame reception.

    Dropped packets require more careful interpretation because packets can also be discarded when the kernel cannot process incoming traffic fast enough, for example.

    Inspect Link Negotiation and Physical Characteristics

    When interface errors are increasing, verify the negotiated connection. For Ethernet interfaces, ethtool is extremely useful:

    ethtool eth0

    Pay attention to values such as:

    Speed: 1000Mb/s
    Duplex: Full
    Auto-negotiation: on
    Link detected: yes

    Example:

    A mismatch between expected and negotiated speed can explain severe performance degradation.

    Duplex problems are less common on modern networks using auto-negotiation, but they should still be considered when working with older devices, unusual switch configurations, or manually configured interfaces.

    Driver statistics can provide additional clues:

    ethtool -S eth0

    The available counters depend on the network adapter and driver, but you may see statistics related to CRC errors, missed packets, queue drops, buffer exhaustion, or hardware-specific receive failures.

    Repeated CRC-related errors, for example, strongly suggest investigating the physical path rather than blaming TCP or the application.

    Test the Default Gateway Separately

    The default gateway is one of the most useful reference points during this type of investigation.

    Find it with:

    ip route

    A typical result may look like:

    default via 192.168.10.1 dev eth0 proto static

    Then test it directly:

    ping -c 100 192.168.10.1

    If packet loss already occurs between the server and its gateway, troubleshooting the internet or a remote data center is premature.

    At that point, investigate components such as:

    • The Linux network interface;
    • Virtual NIC or hypervisor networking;
    • Network cable or transceiver;
    • Access switch;
    • VLAN configuration;
    • Bonding or teaming;
    • Local firewall processing;
    • Interface congestion.

    If the gateway responds perfectly while a remote destination shows loss, the local Ethernet segment becomes less suspicious. This does not prove that the server is completely healthy, but it provides an important boundary.

    Compare Multiple Destinations

    A single destination can easily mislead the investigation.

    Suppose this test reports 8% loss:

    ping -c 100 server.example.net

    That does not prove the local network is losing packets.

    The destination may intentionally rate-limit ICMP, the remote firewall may deprioritize ping replies, or an intermediate router may treat ICMP differently from production traffic.

    Compare several destinations instead:

    ping -c 50 <gateway>
    ping -c 50 <internal-server>
    ping -c 50 <remote-server-A>
    ping -c 50 <remote-server-B>
    ping -c 50 <remote-server-C>

    Patterns are much more valuable than isolated results:

    • If every destination, including the gateway, shows loss, look locally.
    • If local systems remain stable but several external destinations exhibit similar loss, investigate the upstream network.
    • If only one specific remote host shows problems, the issue may be located near that host or somewhere along its particular route.

    Use MTR to Observe the Path

    mtr combines characteristics of ping and traceroute, making it useful for identifying where communication quality appears to change.

    A report can be generated with:

    mtr -rwzbc 10 example.com

    For example:

    Depending on the installed version, options may differ slightly, but the objective is to collect repeated measurements across the route rather than relying on a single traceroute.

    The output may show something similar to:

    HOST: linux01
      1. 192.168.10.1       0.0%
      2. 10.20.0.1          0.0%
      3. 172.18.50.1        8.0%
      4. 203.0.113.10       0.0%
      5. destination        0.0%

    This example demonstrates an important troubleshooting rule:

    • Loss shown at one intermediate hop does not necessarily mean that router is actually dropping forwarding traffic.
    • Routers frequently rate-limit or deprioritize ICMP responses directed at themselves. If subsequent hops return normally, the apparent loss at that intermediate hop is usually not relevant.

    Real path loss becomes more convincing when packet loss begins at one hop and continues through every following hop, including the final destination.

    For example:

    1. gateway             0.0%
    2. router-a            0.0%
    3. router-b           12.0%
    4. router-c           11.0%
    5. destination        12.0%

    That pattern deserves investigation around hop 3 or the link immediately before it.

    Do Not Trust ICMP Alone

    Ping is useful, but production applications normally use TCP or UDP. A firewall or router may handle ICMP differently from HTTPS, SSH, database, or storage traffic.

    For TCP-based testing, tools such as mtr may support TCP mode:

    mtr --tcp --port 443 example.com

    You can also use traceroute with TCP when supported:

    traceroute -T -p 443 example.com

    Testing the actual application port reduces the chance of drawing conclusions from ICMP-specific behavior.

    For example, if ICMP appears unstable but TCP connections to port 443 remain completely healthy, the apparent packet loss may simply reflect ICMP filtering or rate limiting.

    Look for Packet Drops Inside the Kernel

    Not all locally dropped packets appear as physical interface errors. Linux maintains additional network statistics that can expose problems inside the networking stack.

    A useful command is:

    netstat -s

    or, on modern systems:

    nstat

    Linux maintains additional statistics that can reveal packets dropped while they are being processed by the kernel network stack.

    If the sysstat package is installed, softnet activity can be monitored with:

    sar -n SOFT 1 10

    This is particularly useful when investigating whether the system is struggling to process incoming packets because of CPU pressure or high packet rates.

    If sar is not available, first verify whether the sysstat package is installed:

    rpm -q sysstat

    On RHEL-compatible systems, it can normally be installed with:

    dnf install sysstat

    Linux also exposes the underlying softnet counters directly through:

    cat /proc/net/softnet_stat

    Because these values are presented in a relatively low-level format, sar -n SOFT is usually easier to interpret during routine troubleshooting.

    For interface throughput and packet rates, you can separately use:

    sar -n DEV 1 10

    High packet rates combined with increasing softnet drops and CPU saturation can indicate that packet loss is occurring locally because the server cannot process network traffic quickly enough. High traffic combined with CPU saturation may cause the system to struggle with packet processing even when the interface itself is physically healthy.

    Check CPU pressure with:

    top

    or:

    mpstat -P ALL 1

    If one or more CPUs are saturated while network drops increase, the issue may be local processing capacity rather than the external network.

    This is particularly relevant on high-throughput servers, firewalls, virtualization hosts, storage nodes, and systems receiving large numbers of small packets.

    Capture Traffic with tcpdump

    When the available counters are not enough, packet capture can help determine whether packets actually reach the server.

    For example:

    tcpdump -ni eth0 host 192.168.20.50

    For TCP traffic, look for:

    • retransmissions;
    • repeated SYN packets;
    • duplicate acknowledgments, or;
    • unusual resets.

    Imagine a client repeatedly sends TCP SYN packets but the Linux server never captures them.

    That strongly suggests the packets are being lost before reaching the host. If the SYN packets appear in the capture and the server sends SYN-ACK responses, but the client never receives them, the problem may exist on the return path.

    This distinction is important because network routes can be asymmetric. The path from client to server may be completely different from the path used for the response.

    Packet capture on both endpoints is even more valuable when possible.

    If a packet appears in the sending host capture but never appears on the receiving host, the network between them becomes the primary suspect.

    Check for MTU Problems

    Not every apparent packet-loss problem affects small packets. MTU mismatches can allow simple ping tests to succeed while larger application packets fail.

    A practical test is:

    ping -M do -s 1472 <destination>

    For a standard Ethernet MTU of 1500 bytes, a 1472-byte ICMP payload plus IP and ICMP headers reaches the expected frame size.

    If smaller packets succeed but larger packets consistently fail, investigate MTU settings across the route.

    Check the local interface with:

    ip link show eth0

    In environments using tunnels, VPNs, VXLAN, virtualization overlays, or jumbo frames, MTU inconsistencies deserve particular attention.

    Build Evidence Before Escalating

    A strong packet-loss investigation should eventually produce a clear boundary. Instead of reporting only that “the network is dropping packets,” collect evidence such as:

    Loopback:            0% loss
    Local interface IP:  0% loss
    Default gateway:     0% loss
    Internal server:     0% loss
    Remote destination:  9% loss

    Combine that with interface counters, MTR results, packet captures, and timestamps.

    This information gives the network team something actionable and prevents unnecessary troubleshooting on components that are already behaving correctly.

    The same approach is useful in the opposite direction. If interface drops increase while the default gateway is losing packets, there is little reason to begin with the WAN provider.

    Packet loss becomes much easier to investigate when the path is divided into small sections. Start at the Linux host, verify the interface, establish whether the local gateway is stable, and then move outward only when the evidence supports it. In many cases, a few carefully chosen tests are enough to show whether the problem belongs to the server, the local network, or somewhere farther along the route.

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Previous ArticleHow to Investigate TCP Retransmissions on Linux
    Danilo

    Infrastructure Engineer with experience in Virtualization, Linux, Windows Server and learning automation using Python. DPC Virtual Tips was created to share practical tutorials, lab experiences and troubleshooting guides focused on enterprise infrastructure technologies.

    Related Posts

    How to Investigate TCP Retransmissions on Linux

    August 11, 2026

    Linux Process Resource Usage: How to Find Heavy Processes

    August 6, 2026

    Linux ss, lsof, and fuser Commands: A Practical Guide

    August 4, 2026
    Leave A Reply Cancel Reply

    Search
    Categories
    • HPC (10)
    • Operating Systems (84)
    • PowerFlex (22)
    • Virtualization (129)
    Read More
    Operating Systems

    How to Determine Whether Packet Loss Is Local or Network Related on Linux

    By DaniloAugust 12, 20260
    Operating Systems

    How to Investigate TCP Retransmissions on Linux

    By DaniloAugust 11, 20260
    HPC

    Slurm Node Is DRAINED: How to Find the Exact Reason

    By DaniloAugust 10, 20260
    HPC

    Why Is My Slurm Job Pending? How to Decode Every Common Reason

    By DaniloAugust 9, 20260
    Operating Systems

    Linux Process Resource Usage: How to Find Heavy Processes

    By DaniloAugust 6, 20260
    Latest Posts

    How to Determine Whether Packet Loss Is Local or Network Related on Linux

    August 12, 2026

    How to Investigate TCP Retransmissions on Linux

    August 11, 2026

    Slurm Node Is DRAINED: How to Find the Exact Reason

    August 10, 2026
    Images from Gallery
    hpc main commands
    linux commands
    install rock linux
    lustre fs
    shell scripting
    vSAN Trace Files
    Categories
    • HPC
    • Operating Systems
    • PowerFlex
    • Virtualization
    • Home
    • About Us
    • Contact
    • Cookie Policy
    • Comment Policy
    • Privacy Policy
    • Terms of Use
    • Disclaimer
    Copyright © 2026, DPC Virtual Tips. All rights reserved.

    Type above and press Enter to search. Press Esc to cancel.

    We use cookies to ensure your best experience on our website. If you continue using our website, we'll assume you agree to our cookie policy