Open-IPv8-Lab
Experimental userspace toolkit implementing draft-thain-ipv8-02 — the Internet Protocol Version 8 specification. 58 modules, 35 CLI commands, 1827 tests.
Educational project. Not an official IPv8 implementation, not production networking software.
Created and maintained by Aleksei Aleinikov (@LF3551).
Demo
CLI Overview — address parsing, packet building, hex dump
Traceroute8 — linear, diamond, loop detection, multi-path
Quick Start
# Install with Homebrew (macOS)
brew tap LF3551/open-ipv8-lab https://github.com/LF3551/Open-IPv8-Lab
brew install LF3551/open-ipv8-lab/open-ipv8-lab
# Install
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
# Parse an IPv8 address
ipv8lab addr parse 64496.192.0.2.1
# Build a packet
ipv8lab packet build --src 64496.192.0.2.1 --dst 64497.198.51.100.7 --payload "hello"
# Routing simulation
ipv8lab route simulate --config examples/two_asn_demo.yaml
# Zone Server lifecycle
ipv8lab zone init --prefix 127.1.0.0
ipv8lab zone status --json
# Security filtering
ipv8lab ilinkprot bgp8 64496.222.0.0.1
ipv8lab prefixenf check 64496.10.1.0.0 24 --peer-asn 64497
# WHOIS8 registry
ipv8lab whois8 register 64496 "Example Corp" --rir ARIN
ipv8lab whois8 lookup 64496
# Export to Wireshark
ipv8lab pcap demo -o demo.pcap
ipv8lab pcap dissector -o ipv8_dissector.lua
# JSON output on any command
ipv8lab addr parse 64496.192.0.2.1 --json
➜ More examples — 10 step-by-step walkthroughs
Features
Core Protocol Stack
| Feature | CLI | Spec |
|---|---|---|
| IPv8 64-bit addressing (ASN prefix + host) | ipv8lab addr |
§3, 4, 6 |
| 28-byte packet header | ipv8lab packet |
§5.1 |
| Packet fragmentation / reassembly | ipv8lab frag |
§5.1 |
| Two-tier routing with VRF | ipv8lab route |
§8.7, 8.8 |
| ICMPv8 (Echo, Unreachable, Redirect) | — | §9 |
| Multicast / anycast / broadcast | — | §10–12 |
| 8to4 tunnelling | — | §13.3 |
| DNS A8 records (even/odd pair) | — | §7 |
Zone Server & Services
| Feature | CLI | Spec |
|---|---|---|
| Zone Server (OAuth8, ACL8, DHCP8) | ipv8lab zone |
§1.3, 1.4 |
| Multi-zone simulation | ipv8lab multizone |
— |
| mTLS encryption layer | ipv8lab mtls |
— |
| Cloud Provider VPC mapping | ipv8lab vpc |
§17 |
Routing & Traffic
| Feature | CLI | Spec |
|---|---|---|
| BGP8 path selection with CF metric | ipv8lab bgp8 |
§8.4 |
| Cost Factor (7-component metric) | ipv8lab cf |
§1.6 |
| XLATE8 north-south traffic flow | ipv8lab xlate8 |
§1.4 |
| XLATE8 Even/Odd Load Balancing | ipv8lab xlate8lb |
§15.1 |
| NAT8 address translation | ipv8lab nat8 |
— |
| CGNAT Behaviour simulation | ipv8lab cgnat |
§15 |
| ARP8-driven version selection | ipv8lab arp8 |
§2 |
| Inter-Company Interop | ipv8lab interop |
§4.6–4.7 |
Security & Compliance
| Feature | CLI | Spec |
|---|---|---|
| RINE Prefix Protection (100.x.x.x) | ipv8lab rineprot |
§19.3 |
| Interior Link Protection (222.0.0.0/8) | ipv8lab ilinkprot |
§19.4 |
| /16 Minimum Prefix Enforcement | ipv8lab prefixenf |
§19.7 |
| Border router ingress filtering | — | §18 |
| Device compliance tiers | — | §17.1–17.3 |
| PVRST spanning tree | — | §17.4 |
| NIC rate limits | — | §17.5 |
Companion Protocols
| Feature | CLI | Draft |
|---|---|---|
| WHOIS8 protocol (server, client, HMAC signing) | ipv8lab whois8 |
whois8-00 |
| NetLog8 protocol (wire framing, collector, relay) | ipv8lab netlog8proto |
netlog8-00 |
| BGP8, OSPF8, IS-IS8, RINE, ARP8, XLATE8, WiFi8, SNMPv8 | — | 7 companion drafts |
Operations & Tooling
| Feature | CLI |
|---|---|
| PCAP export for Wireshark | ipv8lab pcap |
| Traceroute8 diagnostic | ipv8lab traceroute |
| NetFlow8 flow monitoring | ipv8lab netflow8 |
| QoS / traffic shaping | ipv8lab qos |
| Packet fuzzer | ipv8lab fuzz |
| Docker multi-node testbed | ipv8lab docker |
| TUI dashboard (Textual) | ipv8lab tui |
| Web dashboard | ipv8lab dashboard |
| Performance benchmarks | ipv8lab bench |
| Packet capture / replay | ipv8lab capture |
| Socket API mock (AF_INET8) | ipv8lab socket |
| Address Usage Model table | ipv8lab usage |
| Interior Link Convention | ipv8lab ilink |
Example Output
$ ipv8lab addr parse 64496.192.0.2.1
Input 64496.192.0.2.1
Format ASN dot notation
ASN 64496
Routing prefix 0.0.251.240
Host part 192.0.2.1
Full notation 0.0.251.240.192.0.2.1
Testing
pytest -v
1827 tests covering all 58 modules.
Documentation
| Doc | Description |
|---|---|
| Examples | 10 step-by-step walkthroughs |
| CLI Reference | All 35 commands with usage examples |
| Python API | Using ipv8lab as a Python library |
| Spec Coverage | Full draft-thain-ipv8-02 mapping |
| Architecture | Module categories & dependencies |
| Overview | Project overview |
| Addressing | IPv8 address format (Sections 3, 4, 6) |
| Packet Format | 28-byte header (Section 5.1) |
| Routing Simulator | Two-tier routing (Sections 8.7, 8.8) |
| Testbed | Local testbed setup |
| Glossary | Key terms and abbreviations |
| FAQ | Frequently asked questions & troubleshooting |
| Roadmap | Version history & future plans |
| Changelog | Release-by-release changes |
License
Apache License 2.0 · SPDX: Apache-2.0
Attribution
IPv8 Lab — Copyright 2026 Aleksei Aleinikov
https://github.com/LF3551/Open-IPv8-Lab
Use, modification, and distribution are permitted under the Apache License 2.0, provided that the original copyright notice and the NOTICE file are preserved. Attribution to Aleksei Aleinikov (@LF3551) must remain intact.
Metadata
Release files for open-ipv8-lab 0.13.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| open_ipv8_lab-0.13.0.tar.gz | 254.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| open_ipv8_lab-0.13.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 476.7 kB
Release files / open_ipv8_lab-0.13.0.tar.gz
| Download URL | open_ipv8_lab-0.13.0.tar.gz |
|---|---|
| Size | 254.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
97bbc30da6fb3dedb14f703478a34a9817dc5d4eb06bd68eb6917952f86cdcdf
|
|
BLAKE2b-256 checksum How to use checksums |
222a779b47df7965e46f71f333aa6177883fe51cb607dd83a03fd0bec5c9c4e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 17, 2026.
Transparency logRelease files / open_ipv8_lab-0.13.0-py3-none-any.whl
| Download URL | open_ipv8_lab-0.13.0-py3-none-any.whl |
|---|---|
| Size | 221.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ebe1d8d0c53351135e64657fa0e1326db976a444595062a401788f5e2ef6eef7
|
|
BLAKE2b-256 checksum How to use checksums |
91f83fc20f3a89c682b6ee84e91579330f614883434d1ad0012197e3a3da32b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 17, 2026.
Transparency log