IPv6 diagnostic CLI for analyzing extension-header filtering on the path.
Project description
flarex
A command-line diagnostic tool for evaluating IPv6 Extension Header (EH) support across Internet paths.
flarex lets you probe IPv6 destinations with arbitrary EH configurations, perform traceroute-style hop-by-hop path discovery, and localise the network node responsible for filtering EH-bearing packets. It was developed as part of an undergraduate research project at the University of Southampton evaluating the current state of IPv6 EH support on the public Internet.
Features
- Three core operations:
ping,trace, anddiagnose. - Configurable Extension Header chains of up to three EHs per packet.
- Supported EH types: Hop-by-Hop Options (
hop/hbh), Destination Options (dst), Fragment (frag). Routing, Authentication, ESP, and Mobility are recognised by the parser; full implementation is planned. - Seven transport protocols: ICMPv6, UDP, DNS, TCP, SSH, HTTP, HTTPS.
- Two diagnostic methods:
confirm-last(efficient boundary detection) andhop-scan(full per-hop scan with hop-counting algorithm). - Optional Path MTU Discovery integrated into
ping.
Installation
pip install flarex
flarex requires Python 3.10 or newer. Because it sends raw packets via Scapy, it must be run as root (sudo flarex …) or as Administrator on Windows.
From source
git clone https://github.com/WankaIbrahim/flarex.git
cd flarex
pip install -e .
Quick start
# Plain IPv6 ping
sudo flarex ping google.com
# Ping carrying an 8-byte Hop-by-Hop Options header over TCP/443
sudo flarex --eh hop --transport https ping google.com
# Traceroute carrying a Destination Options header
sudo flarex --eh dst trace google.com
# Diagnose where a Fragment-bearing packet is being dropped
sudo flarex --eh frag --transport https diagnose google.com
# Diagnose using the more thorough hop-scan method
sudo flarex --eh frag --transport https diagnose google.com --method hop-scan
# Chain two EHs (with auto-ordering per RFC 8200)
sudo flarex --eh hop,dst --eh-auto-order ping google.com
For full help on any subcommand:
flarex ping --help
flarex trace --help
flarex diagnose --help
Subcommands
ping
Tests end-to-end reachability with the configured packet structure. Reports per-probe round-trip time and a summary of packet loss. Supports optional Path MTU Discovery via the --pmtud flag (combine with --pmtu-size to set the initial probe size, minimum 1280 bytes). PMTUD is not supported with the TCP-family transports (tcp, ssh, http, https), since those probes carry no resizable payload.
trace
Performs traceroute-style hop-by-hop path discovery. Sends probes with incrementally increasing hop limits, terminating when the destination responds, when the maximum hop count is reached, or when a routing loop is detected.
diagnose
Determines whether EH-bearing packets are being filtered on the path to a destination, and identifies the responsible hop. Operates in three phases:
- A short ping burst — exits early if no packet loss is detected.
- A clean traceroute (no EH) — discovers the path.
- A locate phase — probes individual hops with paired baseline (no-EH) and test (configured EH) packets to find the filtering node.
Two locate methods are available:
confirm-last(default): forward-scans the path, stopping at the first filtering hop and re-probing the previous hop to confirm the boundary.hop-scan: probes every hop and processes the results using a hop-counting algorithm derived from De Boer and Bosma's PMTU black hole detection method.
Project structure
flarex/
cli/ # Typer CLI commands, models, validators
net/ # utils.py, ping.py, traceroute.py, diagnose.py
output/ # render.py
tests/net/ # pytest suite
Testing
pytest
The test suite uses mocking to replace Scapy's send() and sniff() with controlled stubs, so it does not require network access or root privileges.
Citing
If you use flarex in academic work, please cite:
Wanka, I. (2026). Evaluating IPv6 Extension Header Support. BSc Computer Science Project, University of Southampton.
License
Released under the MIT License. See LICENSE for the full text.
Acknowledgements
Developed under the supervision of Dr. Graeme Bragg at the School of Electronics and Computer Science, University of Southampton. Built on top of Scapy, Typer and pytest.
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 flarex-0.1.1.tar.gz.
File metadata
- Download URL: flarex-0.1.1.tar.gz
- Upload date:
- Size: 18.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d897c24e584a13dd568d64f50db97c16ea78acfd84ea54dee7705ccca2f50921
|
|
| MD5 |
b157fc4f7153fd2fce949dbebc680aba
|
|
| BLAKE2b-256 |
c0879d7f8c2b129fc0ae83cdd1fae595c836caea6cc6a6e2b258698b98595bc4
|
File details
Details for the file flarex-0.1.1-py3-none-any.whl.
File metadata
- Download URL: flarex-0.1.1-py3-none-any.whl
- Upload date:
- Size: 23.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46f8b1c1bdda7d743da2fedc6dcc9121b32538c29e0a029b3a1acb8edae7fd88
|
|
| MD5 |
ba921a6327a219dd9d2a930e8a0479e0
|
|
| BLAKE2b-256 |
85e8c0b53a22fe75a63c156a3b493031242b84fe7193b767ecea496ce4f09882
|