Open
Bug 1464448
Opened 8 years ago
Updated 1 year ago
cisco teams app leads to frozen media
Categories
(Core :: WebRTC: Networking, defect, P3)
Tracking
()
UNCONFIRMED
People
(Reporter: arungane, Unassigned)
References
Details
(Keywords: cisco-spark, Whiteboard: [need info reporter 2018-05-25])
Attachments
(1 file)
|
71.71 KB,
text/plain
|
Details |
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.48 Safari/537.36
Steps to reproduce:
This issue happens with https://teams.webex.com/ there is a constant video freeze in a particular scenario with firefox to firefox
Scenarios:
1. Alice and bob have login on web client (Both Firefox).
2. Alice dials sqtest-testwcuser5@alpha.webex.com it will ask if you are a 'host' or 'non host' click not a host.
3. Bob tries to dial sqtest-testwcuser5@alpha.webex.com now he selects as host then enters PIN '1829'.
4. Alice gets connected to bob.
Actual results:
Alice video freezes , sometimes frames come back after 30 sec then freezes again , Sometimes the video works also not sure why the video freeze happens randomly . But it happens a lot
Here are the logs
Expected results:
The video freeze should not happen . The call should go smooth
Updated•8 years ago
|
Comment 1•8 years ago
|
||
Can you please mention the operating system and the versions that you are testing with.
Flags: needinfo?(arungane)
Whiteboard: [need info reporter 2018-05-25]
| Reporter | ||
Comment 2•8 years ago
|
||
(In reply to Alex Chronopoulos [:achronop] from comment #1)
> Can you please mention the operating system and the versions that you are
> testing with.
Its OSX (10.13.4 ) on both the sides. And version of firefox is 60.0.1.
Flags: needinfo?(arungane)
| Reporter | ||
Comment 3•8 years ago
|
||
To add you can go one step ahead and start sharing screen if you dont see the video freeze during the initial call setup
| Reporter | ||
Updated•8 years ago
|
Flags: needinfo?(jib)
Updated•8 years ago
|
Rank: 19
Priority: -- → P2
Comment 4•8 years ago
|
||
Alex, I saw you have a webex account. Can you call me on webex tomorrow to try to repro this? Thanks.
Flags: needinfo?(jib) → needinfo?(achronop)
Comment 5•8 years ago
|
||
I should say I wasn't able to repro this by myself. It never asked me if I was a host. I don't use webex often, so please let me know if I'm doing it wrong.
| Reporter | ||
Comment 6•8 years ago
|
||
(In reply to Jan-Ivar Bruaroey [:jib] (needinfo? me) from comment #5)
> I should say I wasn't able to repro this by myself. It never asked me if I
> was a host. I don't use webex often, so please let me know if I'm doing it
> wrong.
Can you use https://teams.webex.com to login then dial the PMR info provided below .
you dont need your own PMR to test this
2. Alice dials sqtest-testwcuser5@alpha.webex.com it will ask if you are a 'host' or 'non host' click not a host.
3. Bob tries to dial sqtest-testwcuser5@alpha.webex.com now he selects as host then enters PIN '1829'.
You can 1:1 me or paul johns if you are not able to reproduce this issue
| Reporter | ||
Comment 7•8 years ago
|
||
jan we didnt see any error on the decoder while the firefox was frozen. Can you confirm if the below code is sufficient to verify the logs
FIREFOX_EXEC=/Applications/Firefox.app/Contents/MacOS/firefox
set -e
# Signaling logs (SDP):
export MOZ_LOG_FILE=~/Desktop/NSPR.log
export WEBRTC_TRACE_FILE=~/Desktop/WebRTC.log
export MOZ_LOG=MediaManager:3,signaling:5,webrtc_trace:3,webrtc_trace:3,timestamp:3,GetUserMedia:3,mtransport:3,rtplogger:3,jsep:3 # signaling and signaling:5mtransport: 1-9 mtransport:5,GetUserMedia:4
# ICE/STUN/TURN logs:
export R_LOG_LEVEL=4
export R_LOG_DESTINATION=stderr
export R_LOG_VERBOSE=1 # include the module name generating the message
$FIREFOX_EXEC
Flags: needinfo?(jib)
Comment 8•7 years ago
|
||
(In reply to arun ganeshan from comment #7)
> jan we didnt see any error on the decoder while the firefox was frozen. Can
> you confirm if the below code is sufficient to verify the logs
>
> FIREFOX_EXEC=/Applications/Firefox.app/Contents/MacOS/firefox
>
> set -e
>
> # Signaling logs (SDP):
> export MOZ_LOG_FILE=~/Desktop/NSPR.log
> export WEBRTC_TRACE_FILE=~/Desktop/WebRTC.log
> export
> MOZ_LOG=MediaManager:3,signaling:5,webrtc_trace:3,webrtc_trace:3,timestamp:3,
> GetUserMedia:3,mtransport:3,rtplogger:3,jsep:3 # signaling and
> signaling:5mtransport: 1-9 mtransport:5,GetUserMedia:4
In general this should work. But this is an excessive list which probably is going to slow down Firefox.
For this scenario I would recommend something like this:
MOZ_LOG=signaling:5,webrtc_trace:5,timestamp,rtplogger:5,jsep5:signaling5
> # ICE/STUN/TURN logs:
> export R_LOG_LEVEL=4
> export R_LOG_DESTINATION=stderr
> export R_LOG_VERBOSE=1 # include the module name generating the message
You probably don't need to log ICE in this scenario.
From looking at some Wireshark traces which Arun provided me it looks like there are quite big gaps where 5-20 RTP packets are missing. And I don't see retransmissions of these missing packets.
I would recommend to use Firefox RTP logging https://blog.mozilla.org/webrtc/debugging-encrypted-rtp-is-more-fun-than-it-used-to-be/ to capture clear text RTP packets in Firefox logs and then extract them from the log into a pcap file and search for NACK, PLI etc.
| Reporter | ||
Comment 9•7 years ago
|
||
(In reply to Nils Ohlmeier [:drno] from comment #8)
> (In reply to arun ganeshan from comment #7)
> > jan we didnt see any error on the decoder while the firefox was frozen. Can
> > you confirm if the below code is sufficient to verify the logs
> >
> > FIREFOX_EXEC=/Applications/Firefox.app/Contents/MacOS/firefox
> >
> > set -e
> >
> > # Signaling logs (SDP):
> > export MOZ_LOG_FILE=~/Desktop/NSPR.log
> > export WEBRTC_TRACE_FILE=~/Desktop/WebRTC.log
> > export
> > MOZ_LOG=MediaManager:3,signaling:5,webrtc_trace:3,webrtc_trace:3,timestamp:3,
> > GetUserMedia:3,mtransport:3,rtplogger:3,jsep:3 # signaling and
> > signaling:5mtransport: 1-9 mtransport:5,GetUserMedia:4
>
> In general this should work. But this is an excessive list which probably is
> going to slow down Firefox.
>
> For this scenario I would recommend something like this:
>
> MOZ_LOG=signaling:5,webrtc_trace:5,timestamp,rtplogger:5,jsep5:signaling5
>
> > # ICE/STUN/TURN logs:
> > export R_LOG_LEVEL=4
> > export R_LOG_DESTINATION=stderr
> > export R_LOG_VERBOSE=1 # include the module name generating the message
>
> You probably don't need to log ICE in this scenario.
>
> From looking at some Wireshark traces which Arun provided me it looks like
> there are quite big gaps where 5-20 RTP packets are missing. And I don't see
> retransmissions of these missing packets.
>
> I would recommend to use Firefox RTP logging
> https://blog.mozilla.org/webrtc/debugging-encrypted-rtp-is-more-fun-than-it-
> used-to-be/ to capture clear text RTP packets in Firefox logs and then
> extract them from the log into a pcap file and search for NACK, PLI etc.
Thanks for the information nils.
I tried to collect the pacap and webrtc logs as mentioned above here is the link for the pcap and webrtc logs
https://cisco.box.com/s/9d4si8tf1sdhpwg7ira8t7xd0gnn87sz
There was a small change in the script to add year month format
Flags: needinfo?(jib)
| Reporter | ||
Comment 10•7 years ago
|
||
Hi our server team had a look at the issue . They had a question on firefox behavior when a key frame back from the server was partially not received. Will the firefox keep sending PLI ??. We saw that browser didnt send a PLI request back if the key frame coming in doesnt reach the browser
Flags: needinfo?(jib)
Comment 11•7 years ago
|
||
I don't know the answer on PLI. Nils?
Flags: needinfo?(jib) → needinfo?(drno)
| Reporter | ||
Comment 12•7 years ago
|
||
Scenario : Firefox --> PLI --> Sever
Server ---> Key Frame --> As the key frame was large partially it got lost
Firefox --> PLI with in 30 ms --> Server skips it as it was too quick
Firefox --> ? Doesnt sent any PLI any more
Above is the scenario . Our SFU currently skips any PLI with in a sec of last PLI .wanted to check the 1) rate at which the PLI request is sent if the key frame is not received. 2) What happens in the above mentioned scenario
note: we currently dont support rtcp nack so little hard to recover the lost packet
Flags: needinfo?(jib)
Comment 13•7 years ago
|
||
To restate the problem:
This is with a special media server which doesn't support NACK, but tries to work reliable with PLI and FEC. But Firefox doesn't support FEC yet. Thus any packet loss will always result in PLI request, which is a big waste of bandwidth. And the fact that a single packet loss results in requesting a new key frame probably results in even more packet loss.
As you can see here https://searchfox.org/mozilla-central/source/media/webrtc/trunk/webrtc/modules/video_coding/video_receiver.cc#98 there is timer protection against processing too many PLI's.
It's my understanding that problem happens when there are multiple RTP streams. So my current guess is that is might be the same problem as in bug 1465473.
Arun can you check if the PLI's from your server are by any chance attached to sender reports?
Flags: needinfo?(jib)
Flags: needinfo?(drno)
Flags: needinfo?(arungane)
Flags: needinfo?(achronop)
See Also: → 1465473
Comment 14•7 years ago
|
||
Our media server doesnt send compound RTCP with PLI mainly in the case of bundling. Does firefox support it ?
Updated•7 years ago
|
Flags: needinfo?(arungane) → needinfo?(drno)
Comment 15•6 years ago
|
||
Byron, jib, can someone followup here?
Component: WebRTC: Audio/Video → WebRTC: Networking
Flags: needinfo?(jib)
Flags: needinfo?(drno)
Flags: needinfo?(docfaraday)
Comment 16•6 years ago
|
||
Not sure how to unstuck this. Byron, do you know the answer to comment 14?
Flags: needinfo?(jib)
Comment 17•6 years ago
|
||
Our negotiation code supports pli, and will negotiate it by default. Our bundle code does not attempt to filter RTCP, and leaves it up to webrtc.org to match up RTCP packets with the appropriate RTP stream.
Flags: needinfo?(docfaraday)
Updated•3 years ago
|
Severity: normal → S3
Updated•1 year ago
|
Priority: P2 → P3
You need to log in
before you can comment on or make changes to this bug.
Description
•