Everything, Everywhere
Verified Specification | Standardized Formulas | Instant Precision
Secure & Private (Zero Data Retention) Free Access • No Sign-Up
RFC 8866 / WebRTC 1.0 Zero-Dependency

WebRTC SDP Signaling Dissector

Deconstruct complex Session Description Protocol blobs into codecs, ICE candidate matrices, DTLS fingerprints, and transport groups.

Media & Codec Matrix

Paste an SDP blob to analyze codecs...

ICE Candidate Candidates

Awaiting ICE candidates...

Security & Fingerprint

--

RFC 8866 SDP Grammar & ICE Candidate Priority Formulation

WebRTC peers rank connection paths by computing deterministic 32-bit candidate priority integers according to RFC 5245 / 8445:

1. ICE Candidate Priority Equation:
  Priority = (2^{24} imes type_preference) + (2^8 imes local_preference) + (256 - component_id)
2. Candidate Type Weights:
  Host (LAN) = 126 | Server Reflexive (STUN) = 100 | Relay (TURN) = 0
3. SDP State Machine Progression:
  stable → setLocalDescription(offer) → have-local-offer → setRemoteDescription(answer) → stable

5 Fatal Traps in WebRTC SDP Signaling Architecture

1. Missing TURN Relay Server for Symmetric NAT Traversal Relying exclusively on free public STUN servers guarantees that ~15% of all calls will fail. Symmetric NATs (common in enterprise networks, universities, and mobile carriers) assign different external ports to different destinations, making direct peer-to-peer traversal impossible without a TURN relay.
2. Signaling Glare & Missing Perfect Negotiation When both clients send an SDP offer at the exact same moment, both state machines transition to have-local-offer, causing mutual rejection. Implementing the RFC 8829 "Perfect Negotiation" state machine ensures polite peers yield to incoming offers without dropped calls.
3. Codec Profile Mismatches & Silent Video Blackout Offering H.264 video with an incompatible profile-level-id parameter against an answerer that only supports baseline profiles causes the media channel to establish successfully while decoding 0 video frames, leaving users staring at a black screen.
4. Omitting a=group:BUNDLE Multiplexing Omitting BUNDLE forces the WebRTC engine to open independent ICE candidate socket pairs for audio, video, and data channels. This triples the number of candidate tests and causes firewall connection drops on strict networks.
5. DTLS Certificate Expiration During Long Sessions Generating self-signed DTLS certificates with short expiration windows causes mid-call renegotiations to fail. When new tracks are added or network handoffs occur, mismatched or expired certificates drop the connection.

Frequently Asked Technical Questions

What is an SDP offer and answer?+
In WebRTC, Session Description Protocol (SDP) text blobs are exchanged via a signaling server to negotiate media formats before establishing a direct peer-to-peer UDP connection.
What are host, srflx, and relay ICE candidates?+
Host candidates are local LAN IP addresses. Server Reflexive (srflx) candidates are public IPs discovered via a STUN server. Relay candidates route traffic through a TURN server when direct P2P NAT traversal fails.
What causes WebRTC "Glare" and how is it resolved?+
Glare occurs when both peers attempt to send an SDP offer simultaneously while both are in the stable state. RFC 8829 resolves this using the "Perfect Negotiation" pattern, designating one peer as polite (rolls back its offer) and the other as impolite.
Why is a=group:BUNDLE essential in modern WebRTC?+
BUNDLE multiplexes audio, video, and data channels over a single ICE candidate pair (one socket), eliminating multi-port firewall conflicts and reducing connection setup latency.
What is the role of the DTLS fingerprint in SDP?+
WebRTC encrypts all media using SRTP. The DTLS fingerprint (SHA-256 hash of the peer TLS certificate) exchanged in the SDP verifies that the peer establishing the DTLS handshake is the authentic sender identified during signaling.
Sponsored Utility
While You're Here
Sponsored Recommendations
Advertisement