Hello,
I'm finding many perplexing inconsistencies while trying to gather statistics
on an WebRTC connection, which is leading me to have very little confidence on
their correctness.
I've observed the following while studying the stats of an audio RTP connection
(ie: the reports for source-outbound and receiver-inbound, plus their isRemote
equivalents) from an https://apprtc.appspot.com session between two devices
running Firefox (macOS 10.11.6 FF 49.0.2 -> Android 7.0 FF 49.0.2) on the same
network:
- Receiver inbound always displays a packetLost of 0, even while the source
remote-inbound reports a packetLost that is non-zero
- The jitter reported by source remote-inbound is much different than receiver
inbound (ex: 0.4 vs 0.01, respectively)
- The value of mozRtt in the source remote-inbound report is always equal to 1,
even with an obvious lag
- The bytes lost calculated from the source (outbound bytesSent minus
remote-inbound bytesReceived) increases over time by a rather large gap
(1,000,000 after a couple of minutes), even while the remote-inbound
packetsLost value is stable
- The bytes lost calculated from the receiver (remote-outbound bytesSent minus
inbound bytesReceived) is negative and decreases over time by a rather large
amount (-200,000 after a couple minutes), even while packets lost calculated in
the same way is stable
- Source outbound bytesSent is much bigger (~1,000,000 after a couple minutes)
than source remote-inbound bytesReceived, even while the similar packets
difference is nearly equal
- Source outbound bytesSent is much bigger (~4,000,000 after a couple minutes)
than the receiver remote-outbound bytesReceived, even while the similar packets
difference is nearly equal
...hopefully the source/receiver inbound/outbound local/remote dances in my
observations aren't too confusing. =)
I do understand that there's a delay between the source and receiver
(especially for the remote reports which are communicated through RTCP),
however I've verified my above findings by watching the stats over a period of
time (ie: using setInterval()), plus it couldn't possibly explain such wide
gaps in information.
Any information someone could provide, whether pointing out that I'm not
understanding the meaning of the stats or linking me to some known bugs, would
be hugely helpful!
Shane Smith
Source:
{
"outbound_rtcp_audio_0": {
"id": "outbound_rtcp_audio_0",
"timestamp": 1478007765342.98,
"type": "inboundrtp",
"isRemote": true,
"mediaType": "audio",
"remoteId": "outbound_rtp_audio_0",
"ssrc": "840672959",
"bytesReceived": 29865,
"jitter": 0.172,
"mozRtt": 1,
"packetsLost": 7,
"packetsReceived": 9955
},
"outbound_rtp_audio_0": {
"id": "outbound_rtp_audio_0",
"timestamp": 1478007770856.54,
"type": "outboundrtp",
"isRemote": false,
"mediaType": "audio",
"remoteId": "outbound_rtcp_audio_0",
"ssrc": "840672959",
"bytesSent": 341154,
"packetsSent": 10338
}
}
Receiver:
{
"inbound_rtp_audio_0": {
"id": "inbound_rtp_audio_0",
"timestamp": 1478007772794.78,
"type": "inboundrtp",
"isRemote": false,
"mediaType": "audio",
"remoteId": "inbound_rtcp_audio_0",
"ssrc": "840672959",
"bytesReceived": 241316,
"jitter": 0.004,
"packetsLost": 0,
"packetsReceived": 10492
},
"inbound_rtcp_audio_0": {
"id": "inbound_rtcp_audio_0",
"timestamp": 1478007771592.644,
"type": "outboundrtp",
"isRemote": true,
"mediaType": "audio",
"remoteId": "inbound_rtp_audio_0",
"ssrc": "840672959",
"bytesSent": 31128,
"packetsSent": 10376
}
}