librespeed / librespeed/speedtest-rust

[Feature] Add HTTP/3 (QUIC) Support

Open
#43 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
249
Forks
37
PR merge metrics
No merged PRs in 30d

Description

Summary

Add HTTP/3 support using QUIC protocol to enable faster speed tests on modern connections.

Description

Currently, librespeed-rust only supports HTTP/1 (with optional TLS). This issue proposes adding HTTP/3 (QUIC) support for:

  1. Faster connection establishment - No TCP handshake, 0-RTT resumption
  2. Better latency - UDP-based, no head-of-line blocking
  3. Future-proofing - HTTP/3 is the next standard
Implementation
Backend
  • Add noq crate for QUIC server (based on Quinn + rustls)
  • Run HTTP/1 and HTTP/3 servers concurrently on different ports
  • Add config options:
    • quic_port: HTTP/3 listen port (default: 8080 plain, 8443 TLS)
    • enable_quic: Enable HTTP/3 server
  • Reuse existing route handlers for both servers
Frontend
  • Modified servers list to dynamically generate both HTTP/1 and HTTP/3 server entries
  • Modified index.html to allow protocol selection via dropdown
  • Modified JS.
  • Both servers share same endpoints (/empty, /garbage, /getIP, etc.)
Benefits
  • Users can test both HTTP/1 and HTTP/3 performance
  • Same server handles both protocols
  • No special client needed
Questions
  1. Is this feature of interest?
  2. Should the servers run concurrently on different ports, or should we have a single server/port ?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the existing HTTP/1 server, configuration, route handlers, servers list, index.html, and frontend JS. Resolve whether HTTP/3 should use separate ports and how protocol selection works; done means concurrent HTTP/1 and HTTP/3 support with shared endpoints and configuration for enabling QUIC.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend, frontend, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.