Skip to content

[Feature] Add HTTP/3 (QUIC) Support #43

@cbeaujoin-stellar

Description

@cbeaujoin-stellar

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 ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions