T
Telephony SOPKnowledge Base
Search
← All topics

Call Quality Metrics — MOS, Jitter, Packet Loss, R-Factor

VoIP call quality is measured by MOS (Mean Opinion Score 1.0-5.0), R-factor (0-100), jitter (RTP timing variance), packet loss percentage, and one-way latency (mouth-to-ear). Targets: MOS >= 4.0, jitter < 30ms, packet loss < 1%, latency < 150ms. Most issues trace to network congestion, mis-sized jitter buffers, or codec/MTU misconfiguration.

voipqosmosjitterpacket-lossrtpsiptroubleshooting
Agent trigger phrases: MOS score · call quality VoIP · jitter packet loss · R-factor · voice quality metric · RTP statistics · PESQ POLQA · one-way audio

Call Quality Metrics

VoIP call quality is quantified by a handful of objective metrics. Reading them correctly tells you whether a complaint is network, codec, hardware, or carrier — and what to fix.

The five core metrics

MOS — Mean Opinion Score

A 1.0 to 5.0 scale, historically derived from human listeners rating call quality. Modern systems calculate it algorithmically from the network metrics below (this is MOS-CQ, "calculated quality").

| MOS | Quality | User experience | |---|---|---| | 4.3 - 5.0 | Excellent | Toll-quality, indistinguishable from PSTN | | 4.0 - 4.3 | Good | Slight imperfections, fully usable | | 3.6 - 4.0 | Fair | Noticeable issues but still usable | | 3.1 - 3.6 | Poor | Annoying, users complain | | 1.0 - 3.1 | Bad | Unintelligible, hang-up territory |

Target: 4.0 or higher. Below 3.6 is a ticket.

R-factor

The E-model output (ITU-T G.107). Ranges 0 to 100. Converts to MOS via a non-linear curve. Above 80 is good. Below 60 is bad.

Why use R-factor instead of MOS? It's additive — you can subtract impairments (codec, jitter, packet loss) cleanly. Carriers and probes often report both.

Jitter

The variation in inter-arrival time of RTP packets. RTP packets should arrive every 20ms (for G.711). Jitter is the standard deviation.

| Jitter | Impact | |---|---| | < 10ms | Imperceptible | | 10 - 30ms | Acceptable, jitter buffer absorbs it | | 30 - 50ms | Audible, choppy audio | | > 50ms | Severe choppy audio, may overflow jitter buffer |

Target: under 30ms. Above 50ms is a network problem upstream.

Packet loss

Percentage of RTP packets that never arrive.

| Loss | Impact (G.711) | Impact (Opus with FEC) | |---|---|---| | < 1% | Imperceptible | Imperceptible | | 1 - 3% | Noticeable clicks | Recoverable | | 3 - 5% | Annoying gaps | Audible artifacts | | > 5% | Severe degradation | Severe degradation |

Target: under 1%. Codec-level FEC (Forward Error Correction) helps Opus survive higher loss, but G.711 has no FEC and degrades fast.

One-way latency (mouth-to-ear)

Time from speaker's mouth to listener's ear.

| Latency | Impact | |---|---| | < 150ms | Imperceptible | | 150 - 300ms | Noticeable, users start talking over each other | | 300 - 400ms | Annoying, conversation feels off | | > 400ms | Severe, half-duplex feel |

Target: under 150ms. Above 300ms is unworkable for real-time conversation.

Where impairments come from

| Symptom | Likely cause | |---|---| | High jitter, low loss | Network congestion at a hop, QoS misconfigured | | High loss, low jitter | Packet drops (firewall, NAT timeout, wireless interference) | | High latency | Geographic distance, satellite hop, routing detour | | Choppy audio one direction only | Asymmetric routing, NAT pinhole closed | | One-way audio | NAT or firewall blocking RTP, SDP misadvertising IP | | Echo | Improper echo cancellation, acoustic feedback, hybrid trunk issue | | Robotic / metallic audio | Codec transcoding (G.729 ↔ G.711), jitter buffer thrash |

Reading the metrics in production

SignalWire CDRs

Each call's CDR includes quality_stats with jitter_ms, packet_loss_pct, rtt_ms, and mos. Pull via the LaML CDR API or the portal CDR export.

SIP RTCP-XR

Endpoints that support RFC 3611 (RTCP Extended Reports) include detailed quality metrics in SIP BYE or in dedicated RTCP-XR messages. Captures by Wireshark or a SIPp probe.

Carrier reports

Tier-1 carriers expose per-call MOS in their portal CDRs. Cross-check against SignalWire CDRs when troubleshooting termination quality.

Targets for production telephony

| Metric | Target | Action threshold | |---|---|---| | MOS | >= 4.0 | < 3.6 | | R-factor | >= 80 | < 60 | | Jitter | < 30ms | > 50ms | | Packet loss | < 1% | > 3% | | One-way latency | < 150ms | > 300ms |

Diagnostic workflow

  1. Pull CDR quality stats for the affected calls.
  2. Are the bad calls clustered by time, by route, by codec, or by endpoint?
  3. Time-clustered → upstream network event, check carrier status.
  4. Route-clustered → routing change, check egress trunk.
  5. Codec-clustered → transcoding mismatch, verify SDP.
  6. Endpoint-clustered → bad LAN, bad Wi-Fi, bad headset.
  7. Capture RTP at both ends with tcpdump or Wireshark.
  8. Run a PCAP through pcap-analyzer or rtp-analyzer for jitter and loss histograms.

Related codecs and their MOS ceiling

| Codec | MOS ceiling | Bandwidth | Notes | |---|---|---|---| | G.711 (PCMU/PCMA) | 4.4 | 64 kbps | Toll quality, no compression | | G.722 | 4.5 | 64 kbps | Wideband, sounds clearer than G.711 | | Opus | 4.5+ | 6-510 kbps | Adaptive, FEC, best modern choice | | G.729 | 3.9 | 8 kbps | Low bandwidth, lossy compression | | iLBC | 4.1 | 13-15 kbps | Loss-resilient, deprecated |

References

  • ITU-T G.107 — The E-model for transmission planning
  • ITU-T P.800 — Methods for subjective determination of transmission quality
  • RFC 3611 — RTP Control Protocol Extended Reports (RTCP XR)
  • RFC 7005 — RTCP-XR Burst/Gap Discard metric reporting