research: add range-based global IP registry

This commit is contained in:
2026-07-22 10:42:37 +00:00
parent ced31f7d8b
commit 77cad98d56
6 changed files with 141 additions and 5 deletions
+6 -4
View File
@@ -7,10 +7,11 @@ A source-backed address book and evolving map of the organizations, coordination
## Start here
1. Read the [first-round investigation](docs/02-first-round-investigation.md).
2. Browse the human-readable [address book](address-book/README.md).
3. Start the IP-level map with [0.0.0.0 and 1.1.1.1](address-book/ip-addresses.md).
4. Use [`data/entities.csv`](data/entities.csv) and [`data/ip-addresses.csv`](data/ip-addresses.csv) for machine-readable records.
5. Review the [next research round](research/next-round.md) and [IP network roadmap](research/ip-network-roadmap.md).
2. Browse the [human-readable address book](address-book/README.md).
3. Browse the range-based [`registry-ips/`](registry-ips/README.md), currently covering the investigated `0.0.0.0/8` and `1.1.1.0/24` ranges.
4. Start the exact-address map with [0.0.0.0 and 1.1.1.1](address-book/ip-addresses.md).
5. Use [`data/entities.csv`](data/entities.csv) and [`data/ip-addresses.csv`](data/ip-addresses.csv) for machine-readable records.
6. Review the [next research round](research/next-round.md) and [IP network roadmap](research/ip-network-roadmap.md).
## What “global network” means here
@@ -34,6 +35,7 @@ It deliberately maps institutions and trusted public directories before attempti
├── address-book/ # concise human-readable directories
├── data/ # canonical entity and IP address datasets
├── docs/ # scope, method, findings, taxonomy
├── registry-ips/ # range-based global IP knowledge registry
├── research/ # unanswered questions and next rounds
├── scripts/validate.py # dependency-free data/link-shape checks
├── sources/ # provenance policy
+1 -1
View File
@@ -21,4 +21,4 @@ For every address, investigate these independently:
6. **Infrastructure relationships** — IXPs, facilities, upstreams, cables, and geography where evidence permits.
7. **Time and provenance** — registry and routing facts can change, so every claim needs a source and verification date.
The canonical structured records are in [`data/ip-addresses.csv`](../data/ip-addresses.csv).
The canonical structured records are in [`data/ip-addresses.csv`](../data/ip-addresses.csv). Range-level knowledge is indexed in [`registry-ips/`](../registry-ips/README.md), using filenames such as `apnic--1-1-1-0--24.md`.
+46
View File
@@ -0,0 +1,46 @@
# Global IP range registry
This folder is the human-readable registry of IP knowledge collected by this repository. It is organized by **network range**, not by one file for every individual address: IPv4 alone contains 4,294,967,296 addresses, and registration and routing facts normally apply to prefixes.
## Filename convention
```text
<registry>--<network-address-with-hyphens>--<prefix-length>.md
```
Examples:
```text
iana--0-0-0-0--8.md
apnic--1-1-1-0--24.md
```
The parts mean:
- `registry`: authoritative number registry currently responsible for the record (`iana`, `afrinic`, `apnic`, `arin`, `lacnic`, or `ripe-ncc`);
- `network-address-with-hyphens`: canonical network address with dots replaced by hyphens;
- `prefix-length`: CIDR range number without `/`.
IPv6 filenames use the same rule, with colons replaced by hyphens and compressed notation expanded to avoid ambiguous names.
## Current coverage
| Range | Registry | Classification | Known exact addresses | Record |
|---|---|---|---|---|
| `0.0.0.0/8` | IANA | Special-purpose | `0.0.0.0` | [record](iana--0-0-0-0--8.md) |
| `1.1.1.0/24` | APNIC | Public unicast | `1.1.1.1` | [record](apnic--1-1-1-0--24.md) |
This is **not yet a list of all global ranges**. It contains the two ranges investigated so far. The expansion plan is in [`research/ip-network-roadmap.md`](../research/ip-network-roadmap.md).
## Required contents
Every range file must distinguish:
1. registry and registered resource holder;
2. special-purpose classification, where applicable;
3. observed BGP announcement and origin ASN;
4. operator and service relationships;
5. exact addresses already investigated inside the range;
6. sources and verification dates.
Do not compress these into a single misleading “owner” field. Registration, routing, operation, and service responsibility can belong to different organizations.
+46
View File
@@ -0,0 +1,46 @@
# APNIC range: 1.1.1.0/24
- **Registry:** APNIC
- **Range:** `1.1.1.0/24`
- **RDAP name/type:** `APNIC-LABS` / `ASSIGNED PORTABLE`
- **Registered resource holder:** APNIC Research and Development
- **Observed route origin:** `AS13335` — Cloudflare, Inc.
- **Classification:** Public unicast
- **Globally routed:** Yes
- **Verified:** 2026-07-20
## Range knowledge
APNIC RDAP describes `1.1.1.0/24` as APNIC research space and documents the APNIC–Cloudflare DNS Resolver project. Current routing evidence observed during the investigation showed Cloudflare's `AS13335` originating the prefix.
This means “ownership” must be separated into relationships:
- **Registration:** APNIC Research and Development is the published registrant.
- **Routing:** Cloudflare `AS13335` originates the covering prefix.
- **Operation:** Cloudflare operates the public resolver service.
- **Project relationship:** APNIC and Cloudflare publicly document their collaboration.
## Investigated addresses
### 1.1.1.1
`1.1.1.1` is Cloudflare's public recursive DNS resolver address within the registered range.
Detailed address page: [`address-book/ip/1.1.1.1.md`](../address-book/ip/1.1.1.1.md)
## Relationship summary
| Axis | Finding |
|---|---|
| Registration | APNIC `APNIC-LABS` resource |
| Registered holder | APNIC Research and Development |
| Announced prefix | `1.1.1.0/24` |
| Route origin | `AS13335`, Cloudflare, Inc. |
| Operator | Cloudflare |
| Known service | 1.1.1.1 public recursive DNS resolver |
## Sources
- [APNIC RDAP record](https://rdap.apnic.net/ip/1.1.1.1), checked 2026-07-20
- [RIPEstat prefix overview](https://stat.ripe.net/data/prefix-overview/data.json?resource=1.1.1.1), checked 2026-07-20
- [Cloudflare launch announcement](https://blog.cloudflare.com/announcing-1111/)
+39
View File
@@ -0,0 +1,39 @@
# IANA range: 0.0.0.0/8
- **Registry:** IANA
- **Range:** `0.0.0.0/8`
- **IANA name:** This network
- **Classification:** Special-purpose IPv4 space
- **Organizational holder:** None; reserved by the IP protocol
- **Globally reachable:** No
- **Verified:** 2026-07-20
## Range knowledge
IANA reserves `0.0.0.0/8` as “This network.” It is not an ordinary public allocation to an ISP, cloud provider, company, or person. IANA marks the block as not usable as a destination, not forwardable, and not globally reachable.
No normal BGP origin or global network operator should be inferred for this block.
## Investigated addresses
### 0.0.0.0
The exact `0.0.0.0/32` entry means “This host on this network.” It is used as an unspecified source address in limited host-initialization contexts and must not be treated as a normal destination.
Detailed address page: [`address-book/ip/0.0.0.0.md`](../address-book/ip/0.0.0.0.md)
## Relationship summary
| Axis | Finding |
|---|---|
| Registration | IANA special-purpose reservation |
| Registered holder | Not organizationally assigned |
| Route origin | None expected |
| Operator | None |
| Service | Protocol-defined unspecified/this-network semantics |
## Sources
- [IANA IPv4 Special-Purpose Address Space](https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml), checked 2026-07-20
- [RFC 1122, section 3.2.1.3](https://www.rfc-editor.org/rfc/rfc1122.html#section-3.2.1.3)
- [RFC 791](https://www.rfc-editor.org/rfc/rfc791.html)
+3
View File
@@ -120,6 +120,9 @@ def main() -> int:
ROOT / "address-book" / "README.md",
ROOT / "address-book" / "ip-addresses.md",
ROOT / "docs" / "04-ip-address-model.md",
ROOT / "registry-ips" / "README.md",
ROOT / "registry-ips" / "iana--0-0-0-0--8.md",
ROOT / "registry-ips" / "apnic--1-1-1-0--24.md",
ROOT / "research" / "next-round.md",
]
for path in required_docs: