WebRTC Metrics
A comprehensive overview of WebRTC statistics, derived calculations, extracted features, and observable signals, to better understand call quality, connectivity, and user experience in rtcStats
ICE-lite peer (feature)
Connection-level feature recording whether the remote peer is an ICE-lite implementation, the practical way to tell peer-to-peer connections from connections to a media server.
Description
Connection-level feature, extracted per RTCPeerConnection into features_connection.
usingIceLite- whether the remote peer announced itself as an ICE-lite implementation in its SDP (a=ice-lite).
An ICE-lite implementation, defined in RFC 8445 section 2.7, does not run connectivity checks of its own: it sits on a public address, offers only host candidates, and answers the checks the other side sends. That is exactly how media servers are deployed, so in practice this field is a topology marker.
Extracted by the open-source rtcstats-features package into your own database.
Why it matters
Mixed traffic makes aggregate numbers meaningless: a browser-to-browser call and a browser-to-SFU call have different setup costs, different candidate types, and different quality profiles, and averaging them together hides both. usingIceLite is the cheapest way to split those two populations, because ICE-lite is fairly common on the server side and is signalled explicitly.
Group any other feature by usingIceLite and you get the client-server cohort next to the peer-to-peer cohort: setup time, relay share, bitrates, freezes. It is also a deployment check on your own infrastructure. If your SFU is supposed to run ICE-lite, a population of usingIceLite = false connections that you expected to reach it means clients are landing somewhere else, or that the server is running full ICE.
The reverse inference is weaker: a server is not required to be ICE-lite, so usingIceLite = false does not prove the connection was peer-to-peer. Confirm with the selected candidate pair remote address when the distinction matters.
Typical values
true- the far side is a media server, gateway, or other lite implementation.false- a full ICE peer: another browser, or a server that runs full ICE.
SQL example
Setup time and relay share, peer-to-peer cohort against the ICE-lite (server) cohort:
SELECT
connection.using_ice_lite,
COUNT(*) AS connections,
PERCENTILE_CONT(0.50) WITHIN GROUP (ORDER BY connection.ice_connection_time) AS p50_ice_ms,
AVG(
CASE WHEN connection.first_candidate_pair_local_type = 'relay' THEN 1 ELSE 0 END -- 'host', 'srflx' or 'relay'
) AS relay_share
FROM features_connection AS connection
WHERE connection.ice_connected -- only connections that found a path
GROUP BY connection.using_ice_lite;
Related features
- Connection setup time - normally faster against an ICE-lite server than peer-to-peer.
- Selected candidate pair - the remote address and candidate type, the second way to identify a server path.
- Configured ICE servers - what the client was configured to reach.
- Lifetime averages - quality numbers worth splitting by this field.
See also
- rtcstats-server feature extraction - the full feature reference.
- How to query rtcstats-server features - SQL recipes.
- RFC 8445: ICE lite implementations
- RFC 8839: the ice-lite SDP attribute