Summary
- RFC 3388 turned SDP media lines into members of executable relationships, then refused to apply those relationships unless every media line had a unique and stable
midlabel. - The fail-closed rule preserved the underlying media descriptions while preventing partial guesses from synchronizing, selecting or copying the wrong streams.
A session description lists four media lines. Three carry names. The fourth describes a perfectly valid destination, port and format but has no mid label. An implementer could still see which three labels appear in a group and apply the relationship to them.
RFC 3388 said not to.
If a session description used grouping and even one m= line lacked mid, the application had to perform no grouping at all. The individual media descriptions did not disappear. Their declared relationships did. This was a precise refusal to infer authority from an incomplete set of names.
Published on the Standards Track in December 2002, RFC 3388 addressed a limit in the original Session Description Protocol. SDP could list several media descriptions, but it had no standard way to say how those descriptions related. An application might see audio, video and another audio line without knowing which pair required synchronized playout or which destinations represented one logical media instance.
The extension added two pieces. A media-level a=mid gave each m= line a unique token inside the session description. A session-level a=group listed those tokens under a registered semantics. RFC 3388 initially defined LS for lip synchronization and FID for flow identification.
These were not decorative links. LS instructed an application to recover the timing relationship and synchronize playout. RTP could use RTCP information to map different timestamps to a wall clock; other media needed another mechanism. The group declared the obligation, but it did not supply clock measurements or prove that the speakers and image were aligned at the user.
FID carried a different consequence. It allowed several m= lines and RTP sessions to represent one media flow. A cellular endpoint might need different destination ports for different codecs because each codec used a different radio bearer. A DTMF handler might live on another host from the voice receiver. When several FID members supported the current codec, the sender had to transmit copies to the relevant RTP sessions.
That behavior made membership operational. A mistaken association could direct a copy to the wrong destination. RFC 3388's security section therefore warned that an attacker who modified FID grouping could force participants to send media to an arbitrary destination. Signaling integrity was not administrative polish; it protected the authority of the declared grouping.
The identity rules were correspondingly strict. Each mid had to be unique. A group referring to an unknown label was ignored as if that group line did not exist. A media line could participate in groups with different semantics, but the original RFC did not allow it in multiple groups using the same semantics. RFC 5888 later lifted that last restriction after implementation experience, a useful reminder that fail-closed identity and an overly narrow cardinality rule are not the same thing.
Completeness extended beyond the named members. Even a media line that did not appear in a particular group still needed a mid when grouping was used anywhere in the description. That rule prevented an application from assuming that an unlabeled line was safely unrelated. The absence could instead reflect truncation, generator error or a relationship whose join key had been lost.
SIP offer/answer added another identity trap. RFC 3264 aligned the first m= line in an offer with the first in the answer, the second with the second, and so on. RFC 3388 did not replace that ordinal rule with labels. The mid on an answer line had to match the corresponding offer line. If the answer swapped two labels while leaving the line order in place, the application ignored every mid and group line.
Again, the specification did not try to salvage the apparently obvious pairs. It preserved the older alignment rule and rejected the inconsistent overlay. A label could help express relationships, but it could not silently rewrite the negotiated identity of the media description beneath it.
Acceptance also needed a receipt. An answerer that understood the semantics returned the same group membership or a subset. If it rejected an offered media line by setting its port to zero, that line's label could not remain in the returned group. The group used for the session was the one present in the answer.
An answerer could not introduce a new grouping request in its answer. With only the offer and answer carrying SDP, it would not know whether the original offerer accepted that new relationship. It had to send a later offer. The restriction was not about who was more trusted; it was about which message sequence could produce positive acceptance.
Backward compatibility left uncertainty visible. RFC 3388 defined no SIP Require header. A peer that did not understand group or mid ignored them under normal SDP fallback. It might treat FID members as separate streams, act as a mixer, reject the session or prompt a simpler retry. A syntactically successful SIP exchange therefore did not prove that the peer executed the grouping semantics.
Lu Heng's Running-Code Primacy clarifies why the RFC's restraint matters. The shared rule should be deterministic and locally testable: every member has a unique name; the names remain stable across the negotiated positions; the answer positively selects the membership. When those predicates fail, the relationship loses authority. An implementation may still process the base media descriptions, but it should not manufacture associations from intuition.
Minimum Initial Specification supplies the companion lesson. Standardize the join key, the registered semantics and the acceptance boundary. Leave actual timing recovery, codec machinery and internal architecture local. The common layer should make cooperation possible without pretending that its labels prove transport or user outcome.
RFC 3388 was later replaced by RFC 5888, which updated the framework and relaxed one grouping restriction. The durable historical idea survived: relationships become executable only after stable labels can support them. A list of valid records does not authorize a partly guessed set of associations.
One missing label canceled every group because the cost of doing nothing relational was smaller than the cost of applying a valid instruction to the wrong media. The streams could remain. The assumption could not.
Sources
Member Briefing
Deeper Profile Context
Sign in with the right membership level to unlock the full briefing and source notes.
Only for Strategic Circle
Strategic Circle
Open to all readers. Unlock profile briefings after joining and signing in.
Join Strategic CircleOnly for Leadership Alliance
Leadership Alliance
For qualified IP-asset owners and management; sign in to unlock alliance briefings.
Join Leadership Alliance
