Skip to main content

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, and diagnose.
  • 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) and hop-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:

  1. A short ping burst — exits early if no packet loss is detected.
  2. A clean traceroute (no EH) — discovers the path.
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flarex-0.1.1.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flarex-0.1.1-py3-none-any.whl (23.3 kB view details)

Uploaded Python 3

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

Hashes for flarex-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d897c24e584a13dd568d64f50db97c16ea78acfd84ea54dee7705ccca2f50921
MD5 b157fc4f7153fd2fce949dbebc680aba
BLAKE2b-256 c0879d7f8c2b129fc0ae83cdd1fae595c836caea6cc6a6e2b258698b98595bc4

See more details on using hashes here.

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

Hashes for flarex-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 46f8b1c1bdda7d743da2fedc6dcc9121b32538c29e0a029b3a1acb8edae7fd88
MD5 ba921a6327a219dd9d2a930e8a0479e0
BLAKE2b-256 85e8c0b53a22fe75a63c156a3b493031242b84fe7193b767ecea496ce4f09882

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page