Featured Developer Sponsor • Zero-Token Protection
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