Subject: [rtcweb] JSEP Issue #394: What appears in m= lines.

From: Eric Rescorla <[email-masked]>
Date: Fri, 16 Dec 2016 09:05:34 -0800

https://github.com/rtcweb-wg/jsep/issues/394

Magnus writes:
>
> >    For media m= sections, JSEP endpoints MUST support both the "UDP/TLS/
> >    RTP/SAVPF" and "TCP/DTLS/RTP/SAVPF" profiles and MUST indicate one of
> >     these two profiles for each media m= line they produce in an offer.
>

> Do I understand this correct, we are requiring support for the
> "TCP/DTLS/RTP/SAVPF" proto so that in cases an endpoint supports the
> optional to support ICE TCP, they can indicate it, and any WebRTC endpoint
> will accept it, even if that is just one option? I do know that different
> profiles are a negotiation issue. But, wouldn't it be more reasonable in
> this case to use UDP/TLS/RTP/SAVPF in all cases where one offer any
> candidates that also use UDP? And only use TCP/DTLS/RTP/SAVPF in cases only
> TCP candidates are signalled, thus not forcing TCP/DTLS/RTP/SAVPF onto
> clients that doesn't support it?"

We could certainly do this, but it seems to perpetuate the idea that the
TCP/UDP distinction is

meaningful here, which seems like the opposite direction from the one we
are going in (see

the mmusic minutes around the topic Non-Supported Transport in m- line).
See also the note below in this paragraph about either profile being
consistent with either transport.

I think it would be fine to relax the requirement that implementations
*support* both UDP and TCP, but requiring them to conditionally use one or
the other depending on whether they have UDP candidates seems like it's
really going to impose a lot of pain on implementors for no good reason, in
part because you don't necessarily know at the time of offer generation
what you will have. Consider the case where you are only offering relayed
and srflx candidates. At the time of generation, you don't know if you will
be able to get a UDP candidate, because you might be behind a firewall that
blocks UDP and your TURN server might be down.

If we make any change, I think it should just be to relax the requirement
to support TCP and then tell people to ignore the first field here in favor
of the candidate lines.

-Ekr