{"id":50309582,"url":"https://github.com/LF3551/Open-IPv8-Lab","last_synced_at":"2026-06-14T11:00:30.542Z","repository":{"id":357825895,"uuid":"1238696990","full_name":"LF3551/Open-IPv8-Lab","owner":"LF3551","description":"Open-IPv8-Lab is an experimental Python userspace IPv8 research toolkit for address parsing, packet building, routing simulation, PCAP/Wireshark integration, Docker testbeds, and draft-thain-ipv8 experiments.","archived":false,"fork":false,"pushed_at":"2026-05-27T13:56:47.000Z","size":2628,"stargazers_count":9,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T15:22:54.882Z","etag":null,"topics":["asn","cli","draft-thain-ipv8-02","internet-protocol","ipv4","ipv6","ipv8","networking","packet-parser","protocol","python","routing","simulation","userspace-networking"],"latest_commit_sha":null,"homepage":"https://open-ipv8-lab.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LF3551.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json","notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"buy_me_a_coffee":"aleksei_aleinikov"}},"created_at":"2026-05-14T11:13:08.000Z","updated_at":"2026-05-22T13:21:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/LF3551/Open-IPv8-Lab","commit_stats":null,"previous_names":["lf3551/open-ipv8-lab"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/LF3551/Open-IPv8-Lab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LF3551%2FOpen-IPv8-Lab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LF3551%2FOpen-IPv8-Lab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LF3551%2FOpen-IPv8-Lab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LF3551%2FOpen-IPv8-Lab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LF3551","download_url":"https://codeload.github.com/LF3551/Open-IPv8-Lab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LF3551%2FOpen-IPv8-Lab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34318525,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asn","cli","draft-thain-ipv8-02","internet-protocol","ipv4","ipv6","ipv8","networking","packet-parser","protocol","python","routing","simulation","userspace-networking"],"created_at":"2026-05-28T20:00:31.626Z","updated_at":"2026-06-14T11:00:30.529Z","avatar_url":"https://github.com/LF3551.png","language":"Python","funding_links":["https://buymeacoffee.com/aleksei_aleinikov"],"categories":["Software and Tools"],"sub_categories":["Network simulators and emulators"],"readme":"# Open-IPv8-Lab\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/LF3551/Open-IPv8-Lab/main/assets/logo.png\" alt=\"Open-IPv8-Lab\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)\n[![SPDX](https://img.shields.io/badge/SPDX-Apache--2.0-brightgreen.svg)](https://spdx.org/licenses/Apache-2.0.html)\n[![Tests](https://github.com/LF3551/Open-IPv8-Lab/actions/workflows/tests.yml/badge.svg)](https://github.com/LF3551/Open-IPv8-Lab/actions/workflows/tests.yml)\n[![PyPI](https://img.shields.io/pypi/v/open-ipv8-lab.svg)](https://pypi.org/project/open-ipv8-lab/)\n[![Docs](https://readthedocs.org/projects/open-ipv8-lab/badge/?version=latest)](https://open-ipv8-lab.readthedocs.io)\n[![codecov](https://codecov.io/gh/LF3551/Open-IPv8-Lab/graph/badge.svg)](https://codecov.io/gh/LF3551/Open-IPv8-Lab)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.20201237.svg)](https://doi.org/10.5281/zenodo.20201237)\n\nExperimental userspace toolkit implementing [draft-thain-ipv8-02](https://www.ietf.org/archive/id/draft-thain-ipv8-02.html) — the Internet Protocol Version 8 specification. **58 modules**, **35 CLI commands**, **1827 tests**.\n\n\u003e **Educational project.** Not an official IPv8 implementation, not production networking software.\n\nCreated and maintained by **Aleksei Aleinikov** ([@LF3551](https://github.com/LF3551)).\n\n---\n\n## Demo\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eCLI Overview\u003c/b\u003e — address parsing, packet building, hex dump\u003c/summary\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/demo-overview.gif\" alt=\"CLI Overview Demo\" width=\"100%\"\u003e\n\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails open\u003e\n\u003csummary\u003e\u003cb\u003eTraceroute8\u003c/b\u003e — linear, diamond, loop detection, multi-path\u003c/summary\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/demo-traceroute.gif\" alt=\"Traceroute Demo\" width=\"100%\"\u003e\n\u003c/p\u003e\n\u003c/details\u003e\n\n---\n\n## Quick Start\n\n```bash\n# Install with Homebrew (macOS)\nbrew tap LF3551/open-ipv8-lab https://github.com/LF3551/Open-IPv8-Lab\nbrew install LF3551/open-ipv8-lab/open-ipv8-lab\n\n# Install\npython -m venv .venv \u0026\u0026 source .venv/bin/activate\npip install -e \".[dev]\"\n\n# Parse an IPv8 address\nipv8lab addr parse 64496.192.0.2.1\n\n# Build a packet\nipv8lab packet build --src 64496.192.0.2.1 --dst 64497.198.51.100.7 --payload \"hello\"\n\n# Routing simulation\nipv8lab route simulate --config examples/two_asn_demo.yaml\n\n# Zone Server lifecycle\nipv8lab zone init --prefix 127.1.0.0\nipv8lab zone status --json\n\n# Security filtering\nipv8lab ilinkprot bgp8 64496.222.0.0.1\nipv8lab prefixenf check 64496.10.1.0.0 24 --peer-asn 64497\n\n# WHOIS8 registry\nipv8lab whois8 register 64496 \"Example Corp\" --rir ARIN\nipv8lab whois8 lookup 64496\n\n# Export to Wireshark\nipv8lab pcap demo -o demo.pcap\nipv8lab pcap dissector -o ipv8_dissector.lua\n\n# JSON output on any command\nipv8lab addr parse 64496.192.0.2.1 --json\n```\n\n➜ **[More examples](docs/examples.md)** — 10 step-by-step walkthroughs\n\n---\n\n## Features\n\n### Core Protocol Stack\n\n| Feature | CLI | Spec |\n|---------|-----|:----:|\n| IPv8 64-bit addressing (ASN prefix + host) | `ipv8lab addr` | §3, 4, 6 |\n| 28-byte packet header | `ipv8lab packet` | §5.1 |\n| Packet fragmentation / reassembly | `ipv8lab frag` | §5.1 |\n| Two-tier routing with VRF | `ipv8lab route` | §8.7, 8.8 |\n| ICMPv8 (Echo, Unreachable, Redirect) | — | §9 |\n| Multicast / anycast / broadcast | — | §10–12 |\n| 8to4 tunnelling | — | §13.3 |\n| DNS A8 records (even/odd pair) | — | §7 |\n\n### Zone Server \u0026 Services\n\n| Feature | CLI | Spec |\n|---------|-----|:----:|\n| Zone Server (OAuth8, ACL8, DHCP8) | `ipv8lab zone` | §1.3, 1.4 |\n| Multi-zone simulation | `ipv8lab multizone` | — |\n| mTLS encryption layer | `ipv8lab mtls` | — |\n| Cloud Provider VPC mapping | `ipv8lab vpc` | §17 |\n\n### Routing \u0026 Traffic\n\n| Feature | CLI | Spec |\n|---------|-----|:----:|\n| BGP8 path selection with CF metric | `ipv8lab bgp8` | §8.4 |\n| Cost Factor (7-component metric) | `ipv8lab cf` | §1.6 |\n| XLATE8 north-south traffic flow | `ipv8lab xlate8` | §1.4 |\n| XLATE8 Even/Odd Load Balancing | `ipv8lab xlate8lb` | §15.1 |\n| NAT8 address translation | `ipv8lab nat8` | — |\n| CGNAT Behaviour simulation | `ipv8lab cgnat` | §15 |\n| ARP8-driven version selection | `ipv8lab arp8` | §2 |\n| Inter-Company Interop | `ipv8lab interop` | §4.6–4.7 |\n\n### Security \u0026 Compliance\n\n| Feature | CLI | Spec |\n|---------|-----|:----:|\n| RINE Prefix Protection (100.x.x.x) | `ipv8lab rineprot` | §19.3 |\n| Interior Link Protection (222.0.0.0/8) | `ipv8lab ilinkprot` | §19.4 |\n| /16 Minimum Prefix Enforcement | `ipv8lab prefixenf` | §19.7 |\n| Border router ingress filtering | — | §18 |\n| Device compliance tiers | — | §17.1–17.3 |\n| PVRST spanning tree | — | §17.4 |\n| NIC rate limits | — | §17.5 |\n\n### Companion Protocols\n\n| Feature | CLI | Draft |\n|---------|-----|-------|\n| WHOIS8 protocol (server, client, HMAC signing) | `ipv8lab whois8` | whois8-00 |\n| NetLog8 protocol (wire framing, collector, relay) | `ipv8lab netlog8proto` | netlog8-00 |\n| BGP8, OSPF8, IS-IS8, RINE, ARP8, XLATE8, WiFi8, SNMPv8 | — | 7 companion drafts |\n\n### Operations \u0026 Tooling\n\n| Feature | CLI |\n|---------|-----|\n| PCAP export for Wireshark | `ipv8lab pcap` |\n| Traceroute8 diagnostic | `ipv8lab traceroute` |\n| NetFlow8 flow monitoring | `ipv8lab netflow8` |\n| QoS / traffic shaping | `ipv8lab qos` |\n| Packet fuzzer | `ipv8lab fuzz` |\n| Docker multi-node testbed | `ipv8lab docker` |\n| TUI dashboard (Textual) | `ipv8lab tui` |\n| Web dashboard | `ipv8lab dashboard` |\n| Performance benchmarks | `ipv8lab bench` |\n| Packet capture / replay | `ipv8lab capture` |\n| Socket API mock (AF_INET8) | `ipv8lab socket` |\n| Address Usage Model table | `ipv8lab usage` |\n| Interior Link Convention | `ipv8lab ilink` |\n\n---\n\n## Example Output\n\n```\n$ ipv8lab addr parse 64496.192.0.2.1\n\nInput                64496.192.0.2.1\nFormat               ASN dot notation\nASN                  64496\nRouting prefix       0.0.251.240\nHost part            192.0.2.1\nFull notation        0.0.251.240.192.0.2.1\n```\n\n---\n\n## Testing\n\n```bash\npytest -v\n```\n\n1827 tests covering all 58 modules.\n\n---\n\n## Documentation\n\n| Doc | Description |\n|-----|-------------|\n| **[Examples](docs/examples.md)** | 10 step-by-step walkthroughs |\n| **[CLI Reference](docs/cli-reference.md)** | All 35 commands with usage examples |\n| **[Python API](docs/python-api.md)** | Using ipv8lab as a Python library |\n| **[Spec Coverage](docs/spec-coverage.md)** | Full draft-thain-ipv8-02 mapping |\n| **[Architecture](docs/architecture.md)** | Module categories \u0026 dependencies |\n| [Overview](docs/overview.md) | Project overview |\n| [Addressing](docs/addressing.md) | IPv8 address format (Sections 3, 4, 6) |\n| [Packet Format](docs/packet-format.md) | 28-byte header (Section 5.1) |\n| [Routing Simulator](docs/routing-simulator.md) | Two-tier routing (Sections 8.7, 8.8) |\n| [Testbed](docs/testbed.md) | Local testbed setup |\n| [Glossary](docs/glossary.md) | Key terms and abbreviations |\n| [FAQ](docs/faq.md) | Frequently asked questions \u0026 troubleshooting |\n| [Roadmap](docs/roadmap.md) | Version history \u0026 future plans |\n| [Changelog](CHANGELOG.md) | Release-by-release changes |\n\n---\n\n## License\n\n[Apache License 2.0](LICENSE) · SPDX: `Apache-2.0`\n\n## Attribution\n\n```\nIPv8 Lab — Copyright 2026 Aleksei Aleinikov\nhttps://github.com/LF3551/Open-IPv8-Lab\n```\n\nUse, modification, and distribution are permitted under the Apache License 2.0,\nprovided that the original copyright notice and the [NOTICE](NOTICE) file are preserved.\nAttribution to **Aleksei Aleinikov** ([@LF3551](https://github.com/LF3551)) must remain intact.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLF3551%2FOpen-IPv8-Lab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLF3551%2FOpen-IPv8-Lab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLF3551%2FOpen-IPv8-Lab/lists"}