The QUIC Classification API

We aim to provide a simple user- and research-friendly API to analyze the configuration of QUIC servers in the wild.

How to probe a server

You can initiate a measurement by sending an HTTPS request to our measurement probe understanding-quic.net.


  Required
    domain: The domain name of the server you want to analyze.

  Optional
    port: Port number of the QUIC service. Default is 443.
    alpn: The application layer protocol negotiation string of the QUIC service. Default is "H3".
        

You do not need to authentication to use this API.

We cache results to reduce measurement traffic. The result set delivered by our API includes a timestamp (ts) that indicates when the measurement has been performed.

Examples

Measuring the QUIC connection setup to the HTTP/3 service on google.com:

curl -X POST https://understanding-quic.net -d '{"domain": "google.com"}' -H "Content-type: application/json"

Measuring the QUIC connection setup to the DNS over QUIC service on ns1.xdp.cz:

curl -X POST https://understanding-quic.net -d '{"domain": "ns1.xdp.cz", "port": 853, "alpn": "doq"}' -H "Content-type: application/json"

Response if QUIC is supported

{
  "classification": [
    {
      "complianceLevel": 50,
      "handshakeClass": "Multi-RTT Handshake (inefficient)",
      "handshakeData": {
        "amplification": "3.3x",
        "dataReceived": "8264",
        "dataSent": "2500",
        "packetsReceived": "7",
        "packetsSent": "3"
      },
      "handshakeEvents": {
        "RTT": "18.904",
        "timeHandshake": "40.718",
        "timeInitial": "19.476"
      },
      "sentInitialSize": 1278
    },
    {
      "complianceLevel": 50,
      "handshakeClass": "Multi-RTT Handshake (inefficient)",
      "handshakeData": {
        "amplification": "3.1x",
        "dataReceived": "8365",
        "dataSent": "2700",
        "packetsReceived": "7",
        "packetsSent": "3"
      },
      "handshakeEvents": {
        "RTT": "18.895",
        "timeHandshake": "39.484",
        "timeInitial": "19.441"
      },
      "sentInitialSize": 1378
    }
  ],
  "compression": [
    {
      "algorithm": "zlib",
      "enabled": false
    },
    {
      "algorithm": "zstd",
      "enabled": false
    },
    {
      "algorithm": "brotli",
      "compressedSize": 3899,
      "decompressedSize": 6403,
      "enabled": true
    }
  ],
  "domain": "google.com",
  "quicSupport": true,
  "ts": "Tue, 08 Nov 2022 13:05:38 GMT"
}
        

Response if QUIC is not supported

Requests about servers that do not support QUIC will take up to 12s to deliver a response.

It is best to first verify QUIC support and then query our API.

{
  "classification": [],
  "compression": [
    {
      "algorithm": "zlib",
      "enabled": false
    },
    {
      "algorithm": "zstd",
      "enabled": false
    },
    {
      "algorithm": "brotli",
      "enabled": false
    }
  ],
  "domain": "heise.de",
  "quicSupport": false,
  "ts": "Tue, 08 Nov 2022 13:12:49 GMT"
}