A Python tool for testing HTTP/3 websites' support for QUIC connection migration by analyzing connection parameters and simulating network changes.
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quic_migration_tester-0.1.0.tar.gz.
File metadata
- Download URL: quic_migration_tester-0.1.0.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac02759702a2d3aac80f24ef71e5ce9cae42813a5aaa5f5224a2a1e44033e818
|
|
| MD5 |
191dedb1f3ae05c442207fc671b766fe
|
|
| BLAKE2b-256 |
17c813c62c1d791d7ecb6eaf590fe36d684102be8f4b48646fba1a2e9a983a20
|
File details
Details for the file quic_migration_tester-0.1.0-py3-none-any.whl.
File metadata
- Download URL: quic_migration_tester-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4b2bd21c13d336fb020b975ce8f052981a6eed909f9ac783d5ed8fecce3e1b0
|
|
| MD5 |
1389daddfe7768bfd3a217a212fc3466
|
|
| BLAKE2b-256 |
5cac85d5d4db8281dd89191978320485a4145bbe6226cf9ef1ec1a3e3bc5cdbc
|