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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions