Skip to main content

QUIC Connection Migration Tester

A Python tool for testing HTTP/3 websites' support for QUIC connection migration by analyzing connection parameters and simulating network changes.

Overview

QUIC Connection Migration Tester is a specialized diagnostic tool that helps determine whether an HTTP/3 server properly supports connection migration as defined in RFC 9000. Connection migration is a key feature of QUIC that allows connections to survive network path changes, such as NAT rebinding or switching from Wi-Fi to cellular networks.

Features

  • Connection ID Management Testing: Validates server's ability to provide multiple connection IDs
  • Network Change Simulation: Simulates network interface changes by modifying local port bindings
  • Transport Parameter Analysis: Examines QUIC transport parameters related to migration
  • Path Validation Testing: Checks for proper PATH_CHALLENGE/PATH_RESPONSE exchanges
  • RFC 9000 Compliance Checking: Verifies adherence to QUIC connection migration standards
  • Detailed Logging: Provides comprehensive diagnostic output for troubleshooting

Installation

Prerequisites

  • Python 3.13 or higher
  • uv

Install from source

git clone https://github.com/stackia/quic-migration-tester
cd quic-migration-tester
uv sync

Install as package

# Install from local directory
uv pip install .

# Or build and install wheel
uv build
uv pip install dist/quic_migration_tester-*.whl

Usage

Basic Usage

# Run directly with uv
uv run quic-migration-tester https://http3check.net

# Or if installed as package
quic-migration-tester https://http3check.net

Advanced Options

# Enable verbose logging for detailed diagnostics
uv run quic-migration-tester https://cloudflare.com --verbose

# Disable certificate verification
uv run quic-migration-tester https://test-server.com --no-verify

Command Line Arguments

  • url: Target HTTPS URL to test (required)
  • --version: Show program version and exit
  • --verbose, -v: Enable verbose logging for detailed output
  • --no-verify: Disable TLS certificate verification
  • --help, -h: Show help message and exit

Development

Setup development environment

# Install with development dependencies
uv sync --dev

# Run code formatting
uv run black .
uv run isort .

# Run type checking
uv run mypy .

# Run linting
uv run flake8 .

Building

# Build source and wheel distributions
uv build

# The built packages will be in the dist/ directory
ls dist/
# quic_migration_tester-0.1.0.tar.gz
# quic_migration_tester-0.1.0-py3-none-any.whl

How It Works

The tester performs a three-phase connection migration test:

Phase 1: Initial Connection Establishment

  • Establishes QUIC connection with the target server
  • Analyzes transport parameters (active_connection_id_limit, disable_active_migration, etc.)
  • Collects available connection IDs from the server

Phase 2: Network Change Simulation

  • Simulates network interface change by creating a new local socket binding
  • Triggers connection ID change using change_connection_id()
  • Monitors for PATH_CHALLENGE frames from the server

Phase 3: Connection Validation

  • Verifies connection remains functional after migration
  • Confirms connection state remains CONNECTED
  • Performs final connectivity test using ping

Metadata

Release files for quic-migration-tester 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for quic-migration-tester 0.1.0
File Size Uploaded
quic_migration_tester-0.1.0.tar.gz 6.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for quic-migration-tester 0.1.0
File Interpreter ABI Platform
quic_migration_tester-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 14.5 kB

Release files / quic_migration_tester-0.1.0.tar.gz

Download URL quic_migration_tester-0.1.0.tar.gz
Size 6.8 kB
Tags Source
SHA-256 checksum
How to use checksums
ac02759702a2d3aac80f24ef71e5ce9cae42813a5aaa5f5224a2a1e44033e818
BLAKE2b-256 checksum
How to use checksums
17c813c62c1d791d7ecb6eaf590fe36d684102be8f4b48646fba1a2e9a983a20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.14

Release files / quic_migration_tester-0.1.0-py3-none-any.whl

Download URL quic_migration_tester-0.1.0-py3-none-any.whl
Size 7.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d4b2bd21c13d336fb020b975ce8f052981a6eed909f9ac783d5ed8fecce3e1b0
BLAKE2b-256 checksum
How to use checksums
5cac85d5d4db8281dd89191978320485a4145bbe6226cf9ef1ec1a3e3bc5cdbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.14

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page