Skip to Content.
Sympa Menu

ndt-dev - Re: [ndt-dev] Websocket Client - Upload Speed Problem

Subject: NDT-DEV email list created

List archive

Re: [ndt-dev] Websocket Client - Upload Speed Problem

Chronological Thread 
  • From: Richard Carlson <>
  • To:
  • Subject: Re: [ndt-dev] Websocket Client - Upload Speed Problem
  • Date: Wed, 08 Jul 2015 20:27:51 -0400


Forgive me for sounding like a broken record on this topic, but the NDT (Network Diagnostic Tool) system was specifically designed to go beyond merely reporting up/down load speeds. The server captures dozens of TCP variables and analyzes them to identify why a given result was posted.

You don't need to guess if there were packet retransmissions, the NDT server tells you that. You don't need to guess if the delay is high, low, or varying, just look at the test results. You don't need to guess if the client's configuration is limiting throughput, just look at the test results.

If the results given at the end of the test aren't enough, then turn on more diagnostics, capture the packet trace, get TCP variables at 5 msec intervals for the 10 sec test. Use the data that's being collected, and reported, to better understand what is going on.

If you need help reading the test results, post a question to the ndt-dev email list. We'll be glad to help walk you through the results.

What I would start looking at is,

What is the TCP window size set to? The 100% increase in speed between Calgary and Montreal probably means the receive window is the limited factor. (assuming the RTT to Montreal is 2x the RTT to Calgary). Then look at the time spend in the various states. Sitting in the send or receive states indicates a host resource issue. Look at the number of packets sent/ack's received.

Given that the Websocket Upload numbers are 10x lower than the others, I'd wonder if there isn't a math error in the code somewhere and you are simply seeing a reporting error, not a testing error. Looking at the packet traces and other diagnostic data will quickly point out that type of code bug.

Rich (NDT grandfather).

On 07/08/2015 01:38 PM, Don Slaunwhite wrote:
Hi Jordan,

It seems we may have multiple email threads going on about this issue. I'll
respond with details on the other thread. 8) But to help clarify for the
people here.

We were running a Windows 2012 Server as the Amazon VM. At first we chose one with
"Low" network bandwidth, but we also created another with "High" network
bandwidth. On those Windows machines we have testing software which runs our IPT test through the
Chrome browser. It basically just goes flash then websocket etc. The times between runs is
roughly 30 seconds and we let it run overnight.

We did see slower values coming from the Toronto site, so we ran the same
tests to Calgary and Montreal. Those sites gave us much better results (in
both Flash and Websocket) but still Flash was significantly faster. I'm not
sure if it is our implementation of the Flash/websockets client or what.

For instance in Montreal

Flash Upload - 304Mbps
Flash Download - 220Mbps
Websocket Upload - 45Mbps
Webscoket Download - 230Mbps

And in Calgary

Flash Upload - 616Mbps
Flash Download - 542Mbps
Websocket Upload - 44Mbps
Webscoket Download - 472Mbps

So even on other servers we are definitely seeing a degradation of Websocket
upload. Now perhaps it truly is something with the VM. But even then it seems
a bit odd. We have no firewall/anti-virus on. What sort of things have you
seen gone wrong with VM testing?

We did do some external real life testing via our employee's home systems
(not through VPN etc) and we still saw slower Websocket speeds. (But not
anything of this magnitude of difference.)

For example:

(about 200 tests from around Ottawa)

20.8 Mbps - Flash Chrome Download Avg
3.034 Mpbs - Flash Chrome Upload Avg
21.2 Mpbs - Websocket Chrome Download Avg
2.56 Mpbs - Websocket Chrome Upload Avg

So not as big a difference, but still large enough to wonder. Then combined
with the VM testing above.

Do you have a dataset from your testing that we could look at? Honestly if
you have a good sample size of data that we can feel comfortable with, then
we can start looking at what exactly on our implementation is going wrong.
(if it is indeed our implementation.)


-----Original Message-----
From: Jordan McCarthy
Sent: July-07-15 3:53 PM
To: Don Slaunwhite

Subject: Re: [ndt-dev] Websocket Client - Upload Speed Problem

Hash: SHA512

Hi everybody,
We've also been monitoring the performance characteristics of the
WebSockets client closely, both before and after the client's official
publication in NDT 3.7.0, and we haven't been able to reproduce the disparity
that CIRA has encountered. We've run Websocket-based tests from several
different browser combinations on a variety of operating systems and
consumer-grade connections, during various times of the day, and haven't
encountered any appreciable differences (within any given
machine/connection/time of day combination). Additionally, for the sake of
thoroughness we've run C-client tests from the same connections, and the
numbers we got from the C client runs were pretty comparable with what we
were getting out of all of the Websockets tests.

Don: could you tell us a little bit more about your testing methodology? I'm
guessing you spun up a Linux VM, and used X-forwarding to get access to an
instance of the browser running on the VM?

Off the top of my head that sounds reasonable, but we've definitely seen
weird artifacts introduced by running tests out of VM environments, so
perhaps that could be throwing things off somewhat.


Jordan McCarthy
Open Technology Institute @ New America
Public Key: 0xC08D8042 | 4A61 3D39 4125 127D 65EA DDC2 BFBD A2E9 C08D 80

On 07/06/2015 02:45 PM, Don Slaunwhite wrote:
Hi Everyone,

My name is Don Slaunwhite and I’m a Product Manager at CIRA. We have
been utilizing the NDT tests as part of our Internet Performance Test
up here in Canada.

We have been working on transitioning to the Websocket client with our
test, but we have been seeing some very different results in upload
speeds as compared to the flash client.

We did a lot of internal/external testing and in every case the upload
speeds for the websocket version were lower (most times
significantly) than our current flash client. The download speeds are
comparable, with websocket usually coming in a bit faster

For example we setup a VM at Amazon to run some (hopefully!)
controlled tests. Using Chrome and Firefox.

Chrome Averages based on ~200 tests

Flash 19.3Mpbs Upload

Flash 49.8Mpbs Download

Websocket 9.3Mpbs Upload

Websocket 54.3Mpbs Download

Firefox Averages based on ~300 tests

Flash 27.4 Mpbs Upload

Flash 50.1 Mpbs Download

Websocket 11.1 Mpbs Upload

Websocket 57.2 Mpbs Download

In each case the websocket upload is significantly lower. I’m trying
to determine if this is expected behaviour with the websocket code. If
not what possible items might be causing this type of speed

We are running with client versions 3.7.0 (Flash has a buffer size of
32K) against mlab servers in Toronto.

I realize there will be new functionality/capability with the multiple
stream releases, but right now I’d like to try and focus on one major
change at a time, so any ideas on speed differences between Flash and
Websocket using just 3.7.0 would be really helpful.



Version: GnuPG v1.4.11 (GNU/Linux)


Archive powered by MHonArc 2.6.16.

Top of Page