Closed Bug 1478685 Opened 7 years ago Closed 7 years ago

Incorrect MID is sent in RTP header extension

Categories

(Core :: WebRTC: Networking, defect, P2)

61 Branch
defect

Tracking

()

VERIFIED FIXED
mozilla63
Tracking Status
firefox-esr52 --- unaffected
firefox-esr60 63+ verified
firefox61 --- wontfix
firefox62 --- wontfix
firefox63 + verified

People

(Reporter: jeremy.laine, Assigned: bwc)

Details

Attachments

(4 files)

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0 Build ID: 20180627012544 Steps to reproduce: Establish an RTCPeerConnection between Firefox and another browser (either Firefox or Chrome with unified-plan SDP), with both an audio and a video track. Actual results: The same MID value (sdparta_0) is sent in the header of all RTP packets, regardless of whether they are for audio or video. Expected results: The MID announced in the SDP for the audio / video tracks should be respected, otherwise this breaks MID-based demultiplexing.
A consequence of this bug is that audio + video interop is broken with Chrome when using Unified Plan SDP.
Component: Untriaged → WebRTC: Networking
Product: Firefox → Core
Attached file mid.pcap
I can reproduce that behaviour. See for example packet #9 (audio, mid=audio) and #22 (keyframe, mid=audio)
Interesting. Looking now.
Comment on attachment 8995241 [details] Bug 1478685: Set the RTP MID to the mid of the transceiver, not the transport id string. https://reviewboard.mozilla.org/r/259716/#review266700 ::: media/webrtc/signaling/src/peerconnection/TransceiverImpl.cpp:244 (Diff revision 1) > " SetLocalSSRCs failed"); > return NS_ERROR_FAILURE; > } > > mConduit->SetLocalCNAME(mJsepTransceiver->mSendTrack.GetCNAME().c_str()); > - mConduit->SetLocalMID(mJsepTransceiver->mTransport->mTransportId); > + mConduit->SetLocalMID(mMid); If |mMid| has been cleared in line 221, does this still work?
Comment on attachment 8995241 [details] Bug 1478685: Set the RTP MID to the mid of the transceiver, not the transport id string. https://reviewboard.mozilla.org/r/259716/#review266700 > If |mMid| has been cleared in line 221, does this still work? It looks like it does something sensible; this function just sets a std::string in the codec config that is empty by default.
Assignee: nobody → docfaraday
Status: UNCONFIRMED → NEW
Ever confirmed: true
Rank: 14
Priority: -- → P2
Comment on attachment 8995241 [details] Bug 1478685: Set the RTP MID to the mid of the transceiver, not the transport id string. https://reviewboard.mozilla.org/r/259716/#review266716 Looks good to me.
Attachment #8995241 - Flags: review?(mfroman) → review+
The try push looks good, does the binary work for you? The windows 64 debug build is here: https://queue.taskcluster.net/v1/task/Uk-VeA9YQaG_G1LBVqpRjg/runs/0/artifacts/public/build/install/sea/target.installer.exe
Flags: needinfo?(jeremy.laine)
Yep it looks good to me, from the SDP: m=audio 59564 UDP/TLS/RTP/SAVPF 109 9 0 8 101 a=mid:sdparta_0 a=ssrc:1209280607 cname:{6e544685-d92f-402b-9e3f-6fc12aefa40f} m=video 46212 UDP/TLS/RTP/SAVPF 120 121 126 97 a=mid:sdparta_1 a=ssrc:1692656918 cname:{6e544685-d92f-402b-9e3f-6fc12aefa40f} And what I observe on the wire: ssrc 1209280607 mid sdparta_0 ssrc 1692656918 mid sdparta_1
Flags: needinfo?(jeremy.laine)
Tracking for 62/63 to make sure we consider uplift to 62 if we land a fix in 63.
Pushed by bcampen@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/56590b88c041 Set the RTP MID to the mid of the transceiver, not the transport id string. r=mjf
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla63
Since MID is not really used that much in the market we decided to simply let this ride the trains.
i'm ok with this for FF63 but not uplifting this into ESR will negatively affect both the Chrome migration to unified plan as default as well as early adopters who choose to opt-in.
Nils/Byron, would you care to reconsider esr uplift in light of comment 16?
Flags: needinfo?(drno)
Flags: needinfo?(docfaraday)
I guess I could see uplifting to ESR 60, given that ESR 68 is a year away. Might be a good idea to wait until this change has made it to beta first, though.
Flags: needinfo?(docfaraday)
I doubt Chrome's unified code will be in production before ESR 68 ships, but I guess it's better to be on the safe side.
Flags: needinfo?(drno)
[Tracking Requested - why for this release]: If we don't include this bug fix in ESR60 it will break WebRTC interop with Chrome in the near term future.
Please nominate this for ESR60 approval when you get a chance.
Flags: needinfo?(docfaraday)
Comment on attachment 8995241 [details] Bug 1478685: Set the RTP MID to the mid of the transceiver, not the transport id string. [Approval Request Comment] If this is not a sec:{high,crit} bug, please state case for ESR consideration: User impact if declined: See comment 16 and comment 20 Fix Landed on Version: 63 Risk to taking this patch (and alternatives if risky): Very low. String or UUID changes made by this patch: None.
Flags: needinfo?(docfaraday)
Attachment #8995241 - Flags: approval-mozilla-esr60?
Comment on attachment 8995241 [details] Bug 1478685: Set the RTP MID to the mid of the transceiver, not the transport id string. Fixes a Chrome interop issue for WebRTC. Approved for ESR 60.3.
Attachment #8995241 - Flags: approval-mozilla-esr60? → approval-mozilla-esr60+
Flags: qe-verify+
Andreas, Jeremy, would you be so kind to assist us with a more concrete STR to reproduce this issue in order to verify it?
Flags: needinfo?(jeremy.laine)
Flags: needinfo?(apehrson)
Not really my area. Byron?
Flags: needinfo?(apehrson) → needinfo?(docfaraday)
This is kinda involved to verify, do we want QE to deal with it?
Flags: needinfo?(docfaraday) → needinfo?(drno)
(In reply to Byron Campen [:bwc] from comment #27) > This is kinda involved to verify, do we want QE to deal with it? Adrian the only way I can think of right now to verify this would be to make a video webrtc call, for example on appear.in or appr.tc. Record the network traffic with tcpdump or wireshark. And then compare bits of information from about:webrtc with all the packets in the network trace. I tend to agree with Byron that this too much effort to be able to verify for non-expert in this area.
Flags: needinfo?(drno)
Attached file esr.pcapng
I grabbed ESR from https://treeherder.mozilla.org/#/jobs?repo=mozilla-esr60&selectedJob=204863894 -- specifically https://queue.taskcluster.net/v1/task/eJkzsHvPS5mlU62wchsn3g/runs/0/artifacts/public/build/target.tar.bz2 The version said still 60.2 but the attached esr.pcapng shows the right mids, audio on audio packets and video on video packets.
Thanks Phillipp for ESR verification. Marking ESR 60 as verified as per comment 29. Phillipp, could you also assist verifying the fix for 63 Beta?
Flags: needinfo?(fippo)
Attached file beta63.pcapng
grabbed 63.0b13 and generated the attached pcap. Contains different mid headerextensions for audio and video so that looks good to me too!
Flags: needinfo?(fippo)
Thanks Andreas for sorting the flags I messed up in comment 30. Also, thanks Philipp for verifying Beta 63 as well. Based on comment 31, marking Beta63 as verified.
Status: RESOLVED → VERIFIED
Flags: qe-verify+
Flags: needinfo?(jeremy.laine)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: