WebRTC Metrics Report 2017 03 1646
WebRTC Metrics Report 2017 03 1646
METRICS REPORT
2017/03
This report is the fourth issue we have published in the last 12 months.
We have received an overwhelming positive response to our report se-
ries and in 2018 we are going to publish repost every four months. Un-
like our earlier reports, which primarily reported on WebRTC’s multi-
media pipeline, i.e., the performance of audio and video, this special
issue is mostly targeted on data channels, i.e., RTCDataChannels. In the
summer of 2017, we started running pre-call tests, i.e., each endpoint
would run a series of network tests before the call was initiated. These
tests are run over our TURN infrastructure, and depending on the type
of tests, they may hit the nearest geographical TURN server or explicit-
ly other TURN server.
In the last quarter, our install-base has continued to grow 20% month
on month, we have over 600 integrated products, and our world-wide
monitored traffic grew by 3-times. Since 2018 is around the corner, we
are making advancements on multiple fronts: improvements for the
dashboard are underway and AI/ML has made its way into more prod-
ucts, for example, in finding correlations in our data across customers,
end-users, and networks.
I hope you enjoy reading this report as much as we enjoyed writing it.
You can find the original page for the report at:
www.callstats.io/industry-reports/webrtc-metrics-report-2017-03/.
Regards,
Varun Singh
Table of contents
Executive Summary ...................................................3
TL;DR 3
1. The WebRTC Media Pipeline ................................4
1.1. WebRTC Pipeline Setup 4
1.2. Applying the WebRTC Statistics 5
2. WebRTC Data Channels ........................................6
2.1. Basics 6
2.2. Our Experiment 7
3. Endpoint Statistics for Pre-Call Test ...................9
3.1. Operating System Distribution 9
3.2. Browser Distribution 9
3.3. Google Chrome (Chromium) 10
3.4. Mozilla Firefox 11
4. Pre-Call Test Results ........................................12
4.1. Bulk Data Transfer Test 12
4.2. Ping Test 14
4.3. Set Timeout Woes 16
5. Conference Comparison ..................................17
5.1. Comparing Throughput 17
5.2. Comparing Average RTT 19
Executive Summary
Web Realtime Communications (WebRTC) is a technology that enables
audio and video calls in the web browser without plugins. WebRTC is
part of the HTML5 standard, which is defined at the World Wide Web
Consortium (W3C).
WebRTC has a statistics API, which can be used to collect data from the
peer connection between two participants. This data used in this re-
port are anonymized WebRTC metrics collected by the callstats.io ser-
vice.
This report discusses metrics sampled across all apps and services us-
ing callstats.io. The metrics include statistics from the data channels
pre-call test and a comparison to the session that followed the tests.
TL;DR
- Chrome still dominates the WebRTC browser market. Likewise, the
operating system distributions remain the same, with Windows lead-
ing.
- 20% of the cases the media session has a higher throughput than the
pre-call test.
- Pre-call test estimates a lower RTT in the case of TURN than the
peer-to-peer.
- 65% of the cases pre-call test for TURN reported lower RTT to the
third-party TURN server used by the conference.
2.1. Basics
Transmitting data in WebRTC is pretty simple: It is possible to use the
same transport candidate pair (IceTransport) as audio or as video.
Since the 5-tuple, the source and destination IP address and port is
the same for all WebRTC packets, the connection path does not neces-
sarily change.
While the transmission protocol for audio and video is the Real-Time
Transport Protocol (RTP), data channels currently use the Stream Con-
trol Transmission Protocol (SCTP) over Datagram Transport Layer Secu-
rity (DTLS). Both media and data is multiplexed over UDP. The choice to
use SCTP was made due to the fact that the sending data does not
have strong latency or round-trip time (RTT) requirements as media,
and SCTP is designed for data transfer. This implies that SCTP has simi-
lar acknowledgement, flow control, and congestion control as the
Transmission Control Protocol (TCP). Furthermore, one big advantage
of SCTP is that it supports multiple simultaneous-streams, which re-
duces the impact of Head-of-Line (HoL) blocking.
and Hivestreaming.
The bulk data transfer test measures the bits sent and received at
every 100ms interval. The endpoint sends as much data as possible
through the data channel. The aim is to measure the highest through-
put the user’s Internet connection is capable of. From an implementa-
tion point of view, it is important that the buffer of the data channel is
never empty, otherwise the connection is application limited. General-
ly, with the use of data channels, we have only limited control over the
sending behavior and the transport layers underneath, for example,
SCTP, UDP/TCP, and browser scheduling. Hence, it is hard to determine
exactly where the limiting factor is. But, as we will see later in the re-
port, generally data channels are performing good in terms of deter-
mining the quality of a call with WebRTC.
The ping test sends small messages one by one over the data channel.
The aim is to test the lowest possible RTT, which is only achieved if the
packets are not queued in the network. For each of these, the RTT is
measured as the time between sending and receiving. A new packet is
sent when the previous has been received, or every 100ms if round-
trip time is higher.
We will be introducing a new API shortly which will allow the app de-
veloper to delay the call set up until the pre-call is finished.
10 %
18 %
44 %
28 %
In this section, we show the distribution for browsers among the pre-
call test sessions. Browsers update regularly, with a new stable version
released every six weeks. Safari added support for WebRTC in devel-
oper preview in June 2017 and stable release with iOS 11 and macOS
High Sierra (10.13.x). Apps are still switching to Safari in production,
especially since Safari does not support VP8 and requires universal
support for the H.264 video codec to interoperate with other browsers.
This is visible from our distribution, as the share is still really low (less
than 1%).
Figure 3.2 shows that the leading the WebRTC browser use by a large
margin is Chrome and its variants with a 62% share, followed by Native
apps (33%) and Mozilla Firefox with about 5%.
5 %
33 %
62 %
62 61 60 Other
13 % 19 %
20 %
48 %
category. Figure 3.3 shows, the newest Chrome version already has a
share of 19%, but the previous version is still dominant with 48%. Oth-
er versions are also still present and make up a total of a third. Thus
we can conclude that amongst callstats' data channel users, Chrome
browsers are generally well up to date.
57 56 55 Other
15 % 13 %
24 %
48 %
From our data, we can also compare the data channels performance
across browsers and versions. Figure 4.3 shows the comparison of per-
formance across browsers. It is noticeable that the throughput of
Chrome is generally a bit lower than that for Firefox or even Native ap-
plications. Above 5000 kbps is reached for 20% of Chrome measure-
ments, but for almost 30% of other shown browsers. All browsers use
the same library for libsctp, however, different version of it, which may
explain the performance difference.
In Figure 4.5 for Chrome, we also see a better throughput over data
channels with all of the newer versions.
Figure 4.6 shows the distribution between the two connection types:
the performance is poorer for situations the recorded remote IP is a
local address or null. General observation is that 90% of connections
have an RTT of below 100ms which enables good real time communica-
tion. For users with a private remote IP, the situation looks different:
they have often really high RTTs. For a part of these connections real
time communication is not possible.
When sending the separate ping packets, they might get lost as well.
The case is different from the losses in the bulk download test: in this
case, the endpoint sends a single packet and any packet loss is very
likely due to congestion and the congestion is not due to self-conges-
tion of the path. So the losses on this path are due to cross-traffic or
unreliability in the operator handling UDP traffic. The unreliability
might be due to various reasons, e.g., TCP cross traffic sharing the
same queue as the TCP.
Figure 4.7 (in the next page) shows that in 38% of cases at least one
packet out of the 10 is dropped, but very rarely more than four. The
percentage for the connections with private remote IP is again much
higher.
5. Conference Comparison
So far in this report, we analyzed the results of the data channel tests
in isolation. However, these tests are run before the conference hap-
pens, typically when the page is loaded or the app is opened. However,
we can compare the pre-call test result to what the user experienced
during a conference call that follows the pre-call test. In 25% of the
sessions, the conference call immediately followed the call. In some
chat applications, we have the opportunity to run the pre-call test pe-
riodically in the background, which gives us a historical view of the
connection as well.
The following results show how similar a data channel pre-call test is
to the conference data. Split by connection type, this shows that 69%
of these conferences where performed over peer-to-peer traffic, 9%
used TURN, and 22% used a Bridge. We will split our graphs by this
separation to get more insight into differences. To remind: in the bulk
of the scenarios, we abort the pre-call test, as soon as callstats.io ob-
serves the ICE connection state moving to “checking”.
Figure 5.2 shows the difference between the average throughput mea-
sured by the pre-call test and the conference session. In 10% of the
cases, the pre-call test measures a lower throughput (this may be due
to the set timeout woes discussed in section 3.3).
The Figure 5.4 shows the difference. As can be seen, in about 80% of
the cases, the pre-call test session achieves a higher throughput than
the corresponding conference. This is expected, as the test is designed
to use all the available Internet connection, while the conference call
potentially only uses what is necessary to transmit the media. The re-
maining 20%, where the test has a lower throughput, can have several
reasons: the browser might be too busy to send data through the data
channel fast enough; the Internet connection is currently used by oth-
er activities of the user, or the network situation of the user has
changed for the worse between test and call.
The result for a split by connection type shows that the pre-call test is
achieving a higher result than the conference more often if the confer-
ence is using P2P.
Figure 5.5 shows the distribution of RTTs for the pre-call test and con-
ference data. We observe that the TURN-connection based pre-call test
has generally a higher RTT than the conferences.
In Figure 5.6 (in the previous page), we observe that in 70% of the cas-
es, the pre-call test reports a higher RTT value, and in 30% cases a val-
ue lower than the RTT between the endpoints.
Figure 5.7 shows the split by connection type (P2P or TURN). We ob-
serve that the RTT’s reported in the pre-call tests for the two groups
are fairly similar. Similarly, comparing the RTT for the P2P conferences
and TURN conferences (using the same TURN server, not callstats.io's)
we see a clear distinction. Moreover, we observe that the P2P confer-
ence RTT is typically lower to the RTR measured by the pre-call test.
This usually means that the users were in fact closer than our TURN
servers.
- The 95%-le RTT reported by the P2P conferences is lower than 100ms
in about 90% of cases.
- For TURN, this threshold holds true only for 40% of users.
- In 20% of cases, TURN connections even have an RTT of higher than
300ms.
Figure 5.8 (in the next page) clearly shows the separation by connec-
tion type for RTT measured during the pre-call test, and the RTT re-
ported by the endpoint in the conference. For P2P connections, we ob-
serve that the pre-call test RTT is higher in as many as 25% of the cas-
es. It is comparable (within 20ms) in about 70% of the cases, and lower
in about 5% of the cases. This was expected, as we filtered for users
that connected to the same callstats.io TURN server and should be ge-
ographically relatively nearby, and did not use a TURN server to estab-
lish the connection. To summarize, when comparing TURN conference
connections: in 65% of the cases the pre-call test is lower than or
equal to the average conference RTT.
The analysis in this report shows that pre-call tests ran over the data
channel can be used to measure and predict the performance of the
multimedia session that follows the test.
Editors
Varun Singh is the CEO, Founder of callstats.io, contributor to several
standards at the IETF and W3C. He has over 15 years of industry and
research experience, and a Ph.D and M.Sc in Multimedia, Networking,
and Network Economics from Aalto University.
Copyright
© 2017 CALLSTATS I/O Oy, Made by hand in Finland.