{"id":1399,"date":"2026-10-14T23:09:46","date_gmt":"2026-10-14T23:09:46","guid":{"rendered":"https:\/\/virtualserversvps.com\/blog\/?p=1399"},"modified":"2026-10-14T23:09:46","modified_gmt":"2026-10-14T23:09:46","slug":"diagnosing-packet-loss-mtr-pathping-vps","status":"publish","type":"post","link":"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/","title":{"rendered":"Diagnosing Packet Loss on a VPS with mtr and pathping: Per-Hop Truth vs Noise"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Packet loss that shows up only as slow application performance is one of the hardest faults to localise, because the loss may occur on your instance, in the provider&#8217;s fabric, at a transit peer, or at the destination \u2014 and the tools built for the job are frequently misread. <code>mtr<\/code> and <code>pathping<\/code> both blend continuous probing with per-hop statistics, but their defaults hide the two facts you actually need: whether loss is real or a control-plane artifact, and whether it persists to the final hop. This article covers how to run both correctly against a VPS, how to distinguish per-hop false positives from genuine path loss, and how to correlate the result with interface counters.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why a Single ping Run Misleads<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A 10-packet <code>ping<\/code> gives you an average that hides burst loss entirely. A path can drop 20% of packets in short bursts during congestion while a short sample reports near-zero loss and a healthy RTT. Use a sustained probe with timestamps and a longer window before concluding anything:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># 300 packets, 0.2s interval, timestamped \u2014 reveals bursts a plain ping misses\nping -D -i 0.2 -c 300 destination.example.com | tee \/tmp\/ping.log\n\n# Summarise loss and jitter from the log\ntail -3 \/tmp\/ping.log<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Reading mtr Without Falling for Per-Hop Loss<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>mtr<\/code> probes every hop along the path repeatedly. Modern versions can run in report mode, send both ICMP and TCP, and separate forward from return paths. The critical interpretation rule: <strong>loss at an intermediate hop that does not continue to the final hop is almost always a control-plane artifact.<\/strong> Routers deprioritise ICMP generation for TTL-expired packets under load, so they under-report. If hop 7 shows 40% loss but hop 8 and the destination show 0%, there is no real forwarding loss.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Report mode, TCP SYN probes (better through firewalls\/anycast), 100 cycles\nmtr --report --report-cycles 100 --tcp --port 443 destination.example.com\n\n# JSON output for scripting and diffing before\/after\nmtr --report --report-cycles 200 --json destination.example.com &gt; \/tmp\/mtr.json\n\n# Show both directions if the source supports it\nmtr --report --report-cycles 100 --bidir destination.example.com<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Compare the loss column top-to-bottom. Real loss that originates at some hop will be present at that hop <em>and every hop after it<\/em>, including the destination. Isolated loss at a single middle hop, with clean hops on both sides, is noise. TCP-mode probes are useful here because many transit routers rate-limit ICMP harder than TCP, inflating apparent ICMP loss.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">pathping: Windows-Style Per-Hop Stats on Linux\/Windows<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>pathping<\/code> combines <code>tracert<\/code> discovery with a sustained statistical phase, sending many probes per hop and reporting loss and latency per hop. On Windows it is built in; on Linux install <code>mtr<\/code> or the <code>pathping<\/code> equivalent from your distro. The statistical phase is what matters \u2014 the initial traceroute phase only discovers the path.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Windows: 100 probes per hop, 1s interval, no name resolution for speed\npathping -q 100 -p 1000 -n destination.example.com\n\n# Linux equivalent via mtr with full per-hop counts\nmtr --report --report-cycles 100 --no-dns destination.example.com<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The output separates &#8220;this node\/link&#8221; loss (loss at that specific hop) from &#8220;source to here&#8221; cumulative loss. As with mtr, trust the cumulative column at the final hop. A hop showing high &#8220;this node&#8221; loss but negligible cumulative loss at the destination is a router generating ICMP slowly, not a broken link.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Correlating with Interface and Stack Counters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Path diagnostics tell you <em>where<\/em>; the guest kernel tells you whether the loss is inbound, outbound, or dropped locally. Read these counters before and after a test window:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># NIC-level drops, errors, and ring buffer overruns\nethtool -S eth0 | grep -E 'drop|error|miss|fifo|overrun|nobuf'\n\n# TCP retransmits indicate loss on the actual flow, not just probes\nnstat -az | grep -E 'Retrans|TcpExt.*Lost|TcpExt.*Drop'\n\n# Per-socket retransmit detail\nss -tin dst destination.example.com\n\n# Softirq backlog drops (packets dropped before the stack saw them)\nawk '{print NR-1, strtonum(\"0x\"$2)}' \/proc\/net\/softnet_stat<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If <code>retrans<\/code> counters climb but <code>ethtool -S<\/code> shows no receive drops, loss is on the path or at the peer, not on your instance. If <code>softnet_stat<\/code> shows backlog drops on one CPU, you have a local receive-side bottleneck (see our tuning of per-queue softirq processing) rather than a network fault. If <code>rx_dropped<\/code> grows on the NIC, ring buffer pressure is the cause and raising the rx ring is the fix.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Enlarge the RX ring if rx_dropped is climbing\nethtool -g eth0        # current vs maximum ring size\nethtool -G eth0 rx 4096<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Is It the Path or the Provider?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Run the same probe to three destinations: a well-known anycast resolver, your own provider&#8217;s looking-glass target, and the actual service endpoint. If loss appears only toward the real endpoint, suspect the far side. If loss appears toward every destination from your instance, suspect your instance or your provider&#8217;s first hop \u2014 check <code>ethtool -S<\/code> and <code>softnet_stat<\/code> first, then open a ticket with the mtr JSON attached. If loss appears on a single middle hop toward all destinations but not in the final-hop cumulative column, it is cosmetic and you should ignore it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, document a baseline. Capture mtr JSON from a healthy instance during normal operation so that when an incident begins you have a comparison rather than a single ambiguous snapshot. When choosing infrastructure to run these probes from \u2014 or when comparing providers whose network paths you will be measuring \u2014 the <a href=\"https:\/\/virtualserversvps.com\/\">main VPS comparison resources<\/a> cover how to pick instances by measured network behaviour rather than the marketing spec sheet.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Packet loss that shows up only as slow application performance is one of the hardest faults to localise, because the loss may occur on your instance, in the provider&#8217;s fabric,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":1,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-1399","post","type-post","status-publish","format-standard","hentry","category-performance-optimization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Diagnosing Packet Loss on a VPS with mtr and pathping: Per-Hop Truth vs Noise - Virtual Servers VPS Blog<\/title>\n<meta name=\"description\" content=\"Packet loss that shows up only as slow application performance is one of the hardest faults to localise, because the loss may occur on your instance, in\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Diagnosing Packet Loss on a VPS with mtr and pathping: Per-Hop Truth vs Noise\" \/>\n<meta property=\"og:description\" content=\"Diagnosing Packet Loss on a VPS with mtr and pathping: Per-Hop Truth vs Noise\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtual Servers VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-14T23:09:46+00:00\" \/>\n<meta name=\"author\" content=\"Virtual-Servers-Vps-Editor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Virtual-Servers-Vps-Editor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/\",\"name\":\"Diagnosing Packet Loss on a VPS with mtr and pathping: Per-Hop Truth vs Noise - Virtual Servers VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\"},\"datePublished\":\"2026-10-14T23:09:46+00:00\",\"author\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\"},\"description\":\"Packet loss that shows up only as slow application performance is one of the hardest faults to localise, because the loss may occur on your instance, in\",\"breadcrumb\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/virtualserversvps.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Diagnosing Packet Loss on a VPS with mtr and pathping: Per-Hop Truth vs Noise\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/\",\"name\":\"Virtual Servers VPS Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/virtualserversvps.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\",\"name\":\"Virtual-Servers-Vps-Editor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g\",\"caption\":\"Virtual-Servers-Vps-Editor\"},\"sameAs\":[\"https:\/\/virtualserversvps.com\/blog\"],\"url\":\"https:\/\/virtualserversvps.com\/blog\/author\/virtualserversvps\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Diagnosing Packet Loss on a VPS with mtr and pathping: Per-Hop Truth vs Noise - Virtual Servers VPS Blog","description":"Packet loss that shows up only as slow application performance is one of the hardest faults to localise, because the loss may occur on your instance, in","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/","og_locale":"en_US","og_type":"article","og_title":"Diagnosing Packet Loss on a VPS with mtr and pathping: Per-Hop Truth vs Noise","og_description":"Diagnosing Packet Loss on a VPS with mtr and pathping: Per-Hop Truth vs Noise","og_url":"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/","og_site_name":"Virtual Servers VPS Blog","article_published_time":"2026-10-14T23:09:46+00:00","author":"Virtual-Servers-Vps-Editor","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Virtual-Servers-Vps-Editor","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/","url":"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/","name":"Diagnosing Packet Loss on a VPS with mtr and pathping: Per-Hop Truth vs Noise - Virtual Servers VPS Blog","isPartOf":{"@id":"https:\/\/virtualserversvps.com\/blog\/#website"},"datePublished":"2026-10-14T23:09:46+00:00","author":{"@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0"},"description":"Packet loss that shows up only as slow application performance is one of the hardest faults to localise, because the loss may occur on your instance, in","breadcrumb":{"@id":"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/virtualserversvps.com\/blog\/diagnosing-packet-loss-mtr-pathping-vps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtualserversvps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Diagnosing Packet Loss on a VPS with mtr and pathping: Per-Hop Truth vs Noise"}]},{"@type":"WebSite","@id":"https:\/\/virtualserversvps.com\/blog\/#website","url":"https:\/\/virtualserversvps.com\/blog\/","name":"Virtual Servers VPS Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/virtualserversvps.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0","name":"Virtual-Servers-Vps-Editor","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g","caption":"Virtual-Servers-Vps-Editor"},"sameAs":["https:\/\/virtualserversvps.com\/blog"],"url":"https:\/\/virtualserversvps.com\/blog\/author\/virtualserversvps\/"}]}},"_links":{"self":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1399","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/comments?post=1399"}],"version-history":[{"count":1,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1399\/revisions"}],"predecessor-version":[{"id":1404,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1399\/revisions\/1404"}],"wp:attachment":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/media?parent=1399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/categories?post=1399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/tags?post=1399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}