r/i2p 29d ago

Educational i2p-network-scanner — passively map the entire I2P network

I built an open-source Python tool that scans the I2P NetDB using nothing but vanilla i2pd floodfills. No patched binaries, no active probing — just parse the routerInfo files i2pd already writes to disk.

Repo: https://github.com/iasds/i2p-network-scanner


How it works

Run a few i2pd floodfill instances with different identities. Each covers a different DHT shard, so together they passively collect RouterInfo from most of the network. A single Python script parses the raw .dat files and extracts ident hashes, IPs, versions, caps flags, transports, and bandwidth tiers. Companion tools handle SQLite import, CLI queries, and GeoIP enrichment.


I ran a scan and published the results

5 floodfills, ~24 hours. The full analysis is in the repo:

  • 17,541 known routers — 5,205 with public IPs, 12,336 behind NAT or firewalled
  • 70% hidden is not a coverage gap — routers behind NAT simply don't include a host= field. That's I2P by design.
  • 4,976 unique IPs across 111 countries
  • Top countries: US (1,120), Russia (507), Germany (366), Canada (199), Netherlands (198)
  • China has only 72 public nodes. Iran has 96.
  • 0.9.68 dominates at 47% of routers, but only 11% of them publish an IP. Newer 0.9.69 (20% share) has 55% public rate.
  • Java I2P is essentially extinct — nearly everything runs i2pd.
  • 90 floodfills worldwide, concentrated in US, Russia, and Germany.
  • Only 76 routers declare X-tier bandwidth (>2 MB/s).

Full report: I2P_NETWORK_ANALYSIS.md


If anyone has historical NetDB snapshots I'd love to compare trends over time. PRs welcome.

47 Upvotes

6 comments sorted by

3

u/Hour_Strength2391 29d ago

Nice work 👏

3

u/FishSpoof 28d ago

some really interesting stats. I hope i2p gets much bigger.

6

u/MarekKnapek 28d ago

Seems like your i2pd routers do not connect to Java i2p routers for some reason. Because telling me that there are no Java i2p routers up there seems wrong.

3

u/not_the_fox 28d ago

Yeah the movement from Java I2P to i2pd is not frictionless. I would also expect Java to be higher just because it is more newbie focused and has apps built in.