quinn icon indicating copy to clipboard operation
quinn copied to clipboard

any benchmark against cloudflare quiche / lsquic and https://github.com/mozilla/neqo?

Open hiqsociety opened this issue 2 years ago • 13 comments

any benchmark against cloudflare quiche / lsquic and https://github.com/mozilla/neqo?

hiqsociety avatar Mar 02 '22 22:03 hiqsociety

We have some benchmarks in the repository but I'm not aware of any in-depth comparisons to other implementations. It's possible the interop runner has some basic benchmarks though.

djc avatar Mar 02 '22 23:03 djc

You may want to see this, https://interop.seemann.io/

dzvon avatar Mar 03 '22 04:03 dzvon

Just came across this (@dzvon thanks for the link). At first glance, it appears that many implementations (e.g. quic-go, quiche) show significantly higher throughput.

@djc any thoughts?

nmittler avatar Apr 20 '23 18:04 nmittler

What numbers are you looking at specifically? We haven't had the resources to keep that image very up to date, but at a glance it looks like even the old build that's up there is reasonably competitive.

Ralith avatar Apr 20 '23 18:04 Ralith

I don't have any comments, no. However, right now @aochagavia is doing a bunch of performance-oriented work. Quinn likely just needs more investment on the performance front, which is unlikely to come from @Ralith or me in the current situation. Obviously we're always happy to provide guidance to folks interested in benchmarking and improving performance.

Don't forget, too, that Quinn is mainly maintained by two volunteers whereas some of these other implementations have had much more time spent on them.

djc avatar Apr 20 '23 18:04 djc

@Ralith

What numbers are you looking at specifically?

Under the measurement section, just picking one out of a hat:

quic-go->quiche ~ 9443 kbps quic-go->quinn ~ 7943 kbps

So around 16% lower throughput for quinn.

For the same row, all of the following servers show > 9000 kbps: quic-go, ngtcp2, quiche, picoquic, aioquic, nginx, xquic, lsquic, haproxy, s2n-quic (so 10 out of 16, with 2 that failed that particular test)

nmittler avatar Apr 20 '23 19:04 nmittler

@djc understood, thanks. Maybe we can at least update the image so we know the current state of things?

nmittler avatar Apr 20 '23 19:04 nmittler

quic-go->quiche ~ 9443 kbps quic-go->quinn ~ 7943 kbps

Ah, I see. If I understand the test, it looks like that benchmark is showing quinn performing competitively as a client (receiver), but a bit slow as a server (sender). If the issue still exists with current versions, https://github.com/quinn-rs/quinn/pull/1543 might be a significant help.

Ralith avatar Apr 20 '23 19:04 Ralith

Actually, PMTUD (#1510) might already fully account for this discrepancy, since it's a sender-side optimization that should give 1452/1200 = ~21% more bandwidth at a given packet rate (with per-packet costs likely dominating).

Ralith avatar Apr 20 '23 21:04 Ralith

Ah nice! @Ralith would it be possible to update the image used by https://interop.seemann.io/ to see the new results?

nmittler avatar Apr 21 '23 13:04 nmittler

Ah nice! @Ralith would it be possible to update the image used by https://interop.seemann.io/ to see the new results?

It seems that the current performance of quinn is still at the bottom. Did you know that their latest tests use the latest version of quinn?

edit:

Just found the rusult, the test is still using the older version of quinn which define here: https://github.com/marten-seemann/quic-interop-runner/blob/master/implementations.json

https://hub.docker.com/r/stammw/quinn-interop/tags

moranno avatar Jun 26 '23 03:06 moranno

A while back I worked on an upgrade to the quinn-interop repo, just turned it into a PR:

https://github.com/quinn-rs/quinn-interop/pull/3

If anyone was able to test that this stuff actually works, we can maybe update it upstream?

djc avatar Jun 26 '23 08:06 djc

Yeah, we should update this. I've never managed to get docker to work right on my machine, unfortunately.

Ralith avatar Jul 02 '23 01:07 Ralith