Skip to content
WebRTC.wiki
Glossary

BUNDLE

Also written a=group:BUNDLE, bundled media, BUNDLE group

Running every m= section of a session over a single ICE transport, so one port, one DTLS handshake and one TURN allocation carry all the media.

Without BUNDLE, a call with audio, video and a data channel negotiates three separate transports. Three ICE sessions, three sets of candidates, three DTLS handshakes, three TURN allocations to pay for.

BUNDLE collapses them. The offerer lists the m= sections it wants multiplexed in a=group:BUNDLE, the first of them becomes the tagged m= section, and its transport carries everything. The receiver pulls the streams apart again using payload types, SSRCs, and the MID carried in an RTP header extension.

This is why almost nothing in modern WebRTC is per m= section any more. Connection state, DTLS state and the selected candidate pair all belong to the bundle group, not to the media line.

RFC 9143 obsoleted RFC 8843, so older references you find will point at the wrong document number even though the mechanism is the same.