My Trace Route (mtr) Packet Loss Testing
Luke Hebert
- 2 minutes read - 332 wordsWhen a connection feels flaky, the first question is always the same: where is the packet loss happening? mtr (My Trace Route) combines the functionality of traceroute and ping into a single tool, so you can see loss at every hop in one pass.
Running a Report-Mode Test
For a quick, scriptable capture, run mtr in report mode with a fixed number of cycles:
[root@server ~]# mtr -c 30 --report 62.113.4.14Breaking that down:
-c 30sends 30 cycles of probes (one cycle = one ping to each hop).--reportprints a static table and exits, which is ideal for logging or pasting into a ticket.62.113.4.14is the destination IP. You can swap in a hostname if DNS resolves.
Reading the Output
The report lists each hop with columns for Loss%, Snt (packets sent), Last, Avg, Best, Wrst, and StDev. A few things to watch for:
- Loss at a single hop only often means that router is rate-limiting ICMP responses. It does not necessarily indicate a real problem.
- Loss that appears at one hop and persists at every subsequent hop points to a genuine issue at or before that hop.
- Intermittent loss (1-5%) across multiple hops can indicate congestion or a misbehaving link.
Tips for Better Results
- Run the test during the time window when users report problems, not just at 2 a.m.
- Increase the cycle count (
-c 100or higher) for a more statistically meaningful sample. - Compare results from two different source hosts to rule out a local NIC or switch issue.
- Pair the
mtroutput withping -c 100 <destination>to confirm end-to-end loss independently of intermediate hops.
Quick Comparison: mtr vs. traceroute + ping
| Task | mtr | traceroute + ping |
|---|---|---|
| Per-hop loss | Built in | Manual per hop |
| Continuous monitoring | -r (live report) | Not practical |
| Scriptable output | --report | Requires parsing |
mtr is not a replacement for deep packet captures, but for 90% of “why is this slow” questions it gives you a clear, hop-by-hop answer in under a minute.