OBSERVERTC / Client Monitor
Transport quality detectors
Delay, loss, congestion and stalled media transport.
CongestionLegacy congestion detection; deprecated in favor of directional detectors.
Class
What it collects
Legacy RTT, packet loss and bandwidth-limitation measurements.
What triggers it
deprecated sensitivity medium; legacy RTT/loss/limitation heuristic
What resolves it
legacy congested flag and max-baseline bookkeeping; not interchangeable with directional detectors
Example
Rising RTT and loss contribute to the legacy congestion verdict.
Uplink CongestionDetects congestion on the sending side.
Class
What it collects
Browser bandwidth limitation, bandwidth estimates and sender pacing delay.
What triggers it
browser bandwidth-limited verdict AND severity≥0.65; severity = sqrt(BWE undershoot × pacer bloat); bloat saturates at 4×median
What resolves it
closes when browser stops reporting bandwidth limitation or send path stands down; decaying max and median baselines
Example
The browser reports bandwidth limitation while the send queue grows.
Downlink CongestionDetects congestion on the receiving side.
Class
What it collects
Inbound video bitrate and video jitter-buffer growth.
What triggers it
inbound video; severity≥0.65 = sqrt(receive-bitrate undershoot × video jitter-buffer bloat), 4×median saturation
What resolves it
below half minSeverity (0.325 default), or no inbound video; separate baselines
Example
Receiving bitrate falls while buffered video delay rises.
Transport DelayDetects sustained high round-trip delay.
Class
What it collects
Current round-trip time from RTCP or ICE measurements.
What triggers it
detection-window mean current RTT≥300 ms
What resolves it
recovery-window RTT<200 ms or no measurement; RTCP/ICE source retained
Example
Average RTT stays above 300 ms across the detection window.
Transport LossDetects sustained packet loss.
Class
What it collects
Available inbound and outbound mean packet-loss measurements.
What triggers it
max available inbound/outbound mean loss≥0.05 for 6000 ms
What resolves it
loss<0.01; hysteresis between thresholds
Example
Packet loss stays at or above five percent for six seconds.
Blocked Stun RequestsDetects STUN checks that receive no responses.
Class
What it collects
STUN request, consent-check and response activity on an established pair.
What triggers it
succeeded pair sends requests/consent checks but no responses for 10000 ms
What resolves it
response arrives/path unverified/no request evidence; separate 10000 ms request timeout; issue is blocked-stun-requests, event remains blocked-transport
Example
Consent requests continue, but no responses arrive during the timeout.
Blocked Outbound MediaDetects outgoing media without fresh receiver reports.
Class
What it collects
Outgoing RTP, STUN responses and freshness of remote receiver reports.
What triggers it
actual outgoing RTP, STUN answers, fresh remote receiver reports stop for 10000 ms
What resolves it
reports resume, no sending or no usable path; absent RTCP is evidence with the other gates, not proof of a particular firewall
Example
Media is sent and STUN answers arrive, but fresh receiver reports stop.
Blocked Inbound MediaDetects missing incoming media despite sender activity; disabled by default.
Class
What it collects
Sender-report progress and incoming media activity.
What triggers it
default null; sender-report evidence advances while inbound media does not, for configured threshold
What resolves it
reception resumes/no sending or no usable path; enable only where evidence is meaningful
Example
Sender reports advance while no incoming media appears; use only where that evidence is meaningful.
Directional formulas and baseline update order: client-monitor-js/src/detectors/UplinkCongestionDetector.ts · update, client-monitor-js/src/detectors/DownlinkCongestionDetector.ts · update. The baseline is read before feeding the current observation; medians stop learning while an issue is open. These are not generic packet-loss thresholds.