QUIC is much slower than HTTP/2 during experiments

1,042 views
Skip to first unread message

Suk Hwan Hong

unread,
Apr 12, 2016, 10:53:14 PM4/12/16
to QUIC Prototype Protocol Discussion group
Hi, I am currently doing a project for my network class, and the project topic is a performance comparison between QUIC and HTTP/2.

We've set up 2 Ubuntu virtual boxes (server and client) connected to each other via virtual internal network.

Server is running Apache (serving HTTP/2) and a QUIC toy server (build from source), and client is running chromium to load the web page from the server.

I've created a simple test webpage with a single large image (~15MB) and replicated it to both Apache and QUIC servers.

However, when I tested the web page using chromium, the page load time is SIGNIFICANTLY slower with QUIC than HTTP/2.

QUIC takes at least ~15 seconds to load the page ("Load time" in developer console), whereas HTTP takes only ~3 seconds to load the page. (I've disabled the cache).

When I look at the "bytes received" graph in chrome://net-internals timeline, HTTP/2 reaches up to ~10MB/s, but QUIC only reachs up to 1MB/s, an astonishing ten-fold difference.

Is there any reason why this may be happening? (Am I missing something???)

Why is QUIC not sending the data as fast as HTTP/2?

(When I wiresharked the packets, QUIC is sending much larger number of UDP packets with smaller size (~1350 bytes), but HTTP/2 is sending much smaller number of TCP packets with larger size (~20000 bytes). But this is expected behavior as specified by the protocol....)


I would appreciate any insights into this issue.

Thanks.

Amit Srivastava

unread,
Apr 13, 2016, 12:14:05 AM4/13/16
to QUIC Prototype Protocol Discussion group

I had the exact same issue when I was using the toy client but when I switched to chrome browser I saw improvement in the performance.

I can share the commands that I use.


--
You received this message because you are subscribed to the Google Groups "QUIC Prototype Protocol Discussion group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to proto-quic+...@chromium.org.
To post to this group, send email to proto...@chromium.org.
For more options, visit https://groups.google.com/a/chromium.org/d/optout.
Message has been deleted

Chetan Ahuja

unread,
May 6, 2016, 2:59:03 PM5/6/16
to QUIC Prototype Protocol Discussion group
Hi Amit,
   Did you actually do a side-by-side comparison with HTTP(1.1/2) against QUIC. Mind sharing the results?
Thanks
Chetan

Dev Sam

unread,
Jun 17, 2016, 3:52:05 AM6/17/16
to QUIC Prototype Protocol Discussion group, hwan...@gmail.com
Hi!

I am getting the same results.
Are we actually able to get good performance using the toy server?
Is it meaningful to use the toy server for performance comparison with HTTP/1.1/2?

Thanks


2016년 4월 13일 수요일 오전 11시 53분 14초 UTC+9, Suk Hwan Hong 님의 말:

Ian Swett

unread,
Jun 20, 2016, 2:25:01 PM6/20/16
to proto...@chromium.org, hwan...@gmail.com
On Fri, Jun 17, 2016 at 3:52 AM, Dev Sam <sboos...@gmail.com> wrote:
Hi!

I am getting the same results.
Are we actually able to get good performance using the toy server?

If by good performance, you're thinking of high bandwidths, then no.  If you want to see how QUIC does at a few Mbps and with a few % loss, I would expect it to be more indicative.

--

Dev Sam

unread,
Jun 21, 2016, 9:34:55 PM6/21/16
to QUIC Prototype Protocol Discussion group, hwan...@gmail.com
Thanks Ian.
Yes I was thinking of testing with high bandwidths.
But what is the reason for not being able to achieve high bandwidths?


2016년 6월 21일 화요일 오전 3시 25분 1초 UTC+9, Ian Swett 님의 말:

Ian Swett

unread,
Jun 21, 2016, 10:04:40 PM6/21/16
to proto...@chromium.org, Suk Hwan Hong
I don't know the exact reasons, but I know we've spent almost no time time optimizing it and there are multiple internal and external reports indicating the test client and server are slower than Chrome against our production servers.  If you or anyone else would like to make optimizations, feel free to send us a Chromium CL.

Povilas Balciunas

unread,
Jun 22, 2016, 7:10:22 AM6/22/16
to proto...@chromium.org
Does your production server use the same QUIC code from chromium repo?

Ian Swett

unread,
Jun 22, 2016, 7:48:16 AM6/22/16
to proto...@chromium.org
Most of it is shared, but some code is adapted for Chromium, which runs on many platforms.

As an example, I don't believe the Chromium code uses recvmmsg by default, because MMSG_MORE is defined to 0, I believe for platform compatibility reasons.

Dev Sam

unread,
Jun 27, 2016, 10:08:52 PM6/27/16
to QUIC Prototype Protocol Discussion group
Hi Ian,

According to our tests QUIC's throughput is does not reach higher than 150Mbps. 
If we set the link capacity below this, the capacity is reached. 
For example, 100 Mbps is measured on a 100Mbps link but only 150Mbps is measured for a 1Gbps link. 
It is not degrading gradually but instead it is clipped. 
You might not have done a lot of tests on high bandwidths but would you know any reason why throughput will be clipped at 150Mbps?

Thanks!

2016년 6월 22일 수요일 오후 8시 48분 16초 UTC+9, Ian Swett 님의 말:

Ian Swett

unread,
Jun 28, 2016, 2:48:55 PM6/28/16
to proto...@chromium.org
That does match some previous results, and I think it's due to implementation details of the client and server, but I don't know what the current bottleneck is.

It's possible to get higher bandwidths with Chrome and our production server in my experience. 

Amit Srivastava

unread,
Jun 28, 2016, 2:54:45 PM6/28/16
to QUIC Prototype Protocol Discussion group
This looks like an interesting task. I will look into it. And I might ask more questions as I read the code.

Amit Srivastava

unread,
Jun 28, 2016, 3:08:51 PM6/28/16
to QUIC Prototype Protocol Discussion group
Hi Chetan ,

I did not do a web page load time comparison. What I am doing is comparing QUIC to TCP as general purpose transport protocols. Like many  people
I got slower data rates with the toy client and server. So I used a chrome browser pointing at the toy server. My main concern was data rates at higher
RTT values which were partially addressed by switching to Chrome code.

Regards,
Amit Srivastava
Reply all
Reply to author
Forward
0 new messages