research: establish global network address book baseline
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
# Contributing
|
||||
|
||||
## Add or change an entity
|
||||
|
||||
1. Confirm the entity from an official source.
|
||||
2. Add or update one row in `data/entities.csv`.
|
||||
3. Update the appropriate human-readable address-book page.
|
||||
4. Set `verified_at` to the UTC date you checked the source.
|
||||
5. Run `make validate`.
|
||||
6. Explain the evidence and scope in the commit message or pull request.
|
||||
|
||||
## Editorial rules
|
||||
|
||||
- Prefer concise, neutral descriptions.
|
||||
- Use role-based public contact or directory links, not private personal data.
|
||||
- Do not call a commercial dataset exhaustive unless its publisher establishes that claim.
|
||||
- Mark uncertainty explicitly.
|
||||
- Keep category names aligned with `docs/03-taxonomy.md`.
|
||||
|
||||
## Definition of done
|
||||
|
||||
A change is done when the structured record validates, the readable directory agrees with it, the source is primary where possible, and limitations are documented.
|
||||
@@ -0,0 +1,7 @@
|
||||
Creative Commons Attribution 4.0 International
|
||||
|
||||
This work is licensed under the Creative Commons Attribution 4.0 International License.
|
||||
To view a copy of this license, visit:
|
||||
https://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
You are free to share and adapt the material for any purpose, provided appropriate credit is given, a link to the license is supplied, and changes are indicated.
|
||||
@@ -0,0 +1,7 @@
|
||||
.PHONY: validate summary
|
||||
|
||||
validate:
|
||||
python3 scripts/validate.py
|
||||
|
||||
summary:
|
||||
@python3 -c "import csv,collections; r=list(csv.DictReader(open('data/entities.csv', encoding='utf-8'))); print(f'{len(r)} entities'); [print(f'{n:3} {k}') for k,n in sorted(collections.Counter(x['category'] for x in r).items())]"
|
||||
@@ -1,3 +1,61 @@
|
||||
# network-v1
|
||||
|
||||
A source-backed address book and first-round map of the global Internet ecosystem.
|
||||
A source-backed address book and evolving map of the organizations, coordination systems, datasets, and infrastructure that make the global Internet work.
|
||||
|
||||
> **Round 1 status:** ecosystem baseline, verified 2026-07-20. This is not yet an exhaustive directory of every carrier, exchange, cable, data center, or national regulator.
|
||||
|
||||
## 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. Use [`data/entities.csv`](data/entities.csv) for machine-readable records.
|
||||
4. Review the [next research round](research/next-round.md).
|
||||
|
||||
## What “global network” means here
|
||||
|
||||
The repository begins with the public Internet as a network of networks:
|
||||
|
||||
- governance and unique-identifier coordination;
|
||||
- standards and protocol development;
|
||||
- number-resource registries;
|
||||
- DNS and root-server coordination;
|
||||
- interconnection, routing, and measurement;
|
||||
- physical transport and submarine-cable information;
|
||||
- operational and security coordination.
|
||||
|
||||
It deliberately maps institutions and trusted public directories before attempting to enumerate individual people. Public role-based contact points are preferred over personal details.
|
||||
|
||||
## Repository map
|
||||
|
||||
```text
|
||||
.
|
||||
├── README.md # orientation and status
|
||||
├── address-book/ # concise human-readable directories
|
||||
├── data/entities.csv # canonical round-1 structured dataset
|
||||
├── docs/ # scope, method, findings, taxonomy
|
||||
├── research/ # unanswered questions and next rounds
|
||||
├── scripts/validate.py # dependency-free data/link-shape checks
|
||||
├── sources/ # provenance policy
|
||||
├── CONTRIBUTING.md
|
||||
└── Makefile
|
||||
```
|
||||
|
||||
## Quick commands
|
||||
|
||||
```bash
|
||||
make validate
|
||||
make summary
|
||||
```
|
||||
|
||||
## Research principles
|
||||
|
||||
- Prefer primary, official sources.
|
||||
- Record when a source was checked.
|
||||
- Distinguish verified entries from hypotheses and leads.
|
||||
- Describe roles neutrally; do not imply hierarchy where the Internet has none.
|
||||
- Keep the prose useful to humans and the CSV useful to tools.
|
||||
- Never publish private or sensitive contact details.
|
||||
|
||||
## License
|
||||
|
||||
Repository content is provided under [CC BY 4.0](LICENSE). Individual linked sources retain their own terms.
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# Address book
|
||||
|
||||
This is the readable view of the canonical records in [`data/entities.csv`](../data/entities.csv).
|
||||
|
||||
| Directory | What it covers |
|
||||
|---|---|
|
||||
| [Governance, identifiers, and standards](governance-and-standards.md) | ICANN/IANA, open standards, number-resource coordination |
|
||||
| [Regional Internet Registries](regional-registries.md) | The five RIR service regions and public resource directories |
|
||||
| [Infrastructure and operations](infrastructure-and-operations.md) | DNS root, IXPs/peering, routing visibility, physical transport, operator communities |
|
||||
| [Security and resilience](security-and-resilience.md) | Incident-response directories and routing-security coordination |
|
||||
|
||||
## How to use it
|
||||
|
||||
Start with the coordinating body or directory for the function you need. For example:
|
||||
|
||||
- IP address or ASN registration → the appropriate RIR;
|
||||
- protocol specification → IETF Datatracker/RFC system;
|
||||
- interconnection discovery → PeeringDB, IXP member lists, or IX-F exports;
|
||||
- root-zone or protocol registry → IANA;
|
||||
- incident-response team discovery → FIRST or Trusted Introducer;
|
||||
- BGP visibility → Route Views or RIPE RIS;
|
||||
- submarine cable discovery → TeleGeography map, followed by operator/regulator verification.
|
||||
@@ -0,0 +1,15 @@
|
||||
# Governance, identifiers, and standards
|
||||
|
||||
| Entity | Scope | Primary role | Official entry point |
|
||||
|---|---|---|---|
|
||||
| ICANN | Global | Multistakeholder coordination and policy around unique identifiers | [icann.org](https://www.icann.org/) |
|
||||
| IANA | Global | DNS root-zone, number-resource, and protocol-parameter registries | [iana.org](https://www.iana.org/) |
|
||||
| IETF | Global | Open Internet protocol standards and RFCs | [ietf.org](https://www.ietf.org/) · [Datatracker](https://datatracker.ietf.org/) |
|
||||
| Internet Society | Global | Internet policy, community, technical, and chapter network | [internetsociety.org](https://www.internetsociety.org/) |
|
||||
| ITU | Global | UN telecommunications/ICT coordination and standards activities | [itu.int](https://www.itu.int/) |
|
||||
| W3C | Global | Open standards for the Web platform | [w3.org](https://www.w3.org/) |
|
||||
| NRO | Global | Joint coordination of the five RIRs | [nro.net](https://www.nro.net/) |
|
||||
|
||||
## Interpretation
|
||||
|
||||
These organizations overlap but are not one hierarchy. IETF develops Internet protocol standards; IANA maintains designated registries; ICANN hosts identifier-related multistakeholder policy processes; RIRs administer number resources regionally; ITU is intergovernmental; and W3C focuses on the Web platform.
|
||||
@@ -0,0 +1,39 @@
|
||||
# Infrastructure and operations
|
||||
|
||||
## DNS
|
||||
|
||||
| Entity/system | Function | Entry point |
|
||||
|---|---|---|
|
||||
| Root Server System | Distributed service for the DNS root, operated by multiple independent organizations | [root-servers.org](https://root-servers.org/) |
|
||||
| DNS-OARC | DNS operations, analysis, research, and community coordination | [dns-oarc.net](https://www.dns-oarc.net/) |
|
||||
|
||||
The familiar 13 root-server letters are logical identifiers, not merely 13 physical machines; deployments are distributed globally.
|
||||
|
||||
## Interconnection and exchange points
|
||||
|
||||
| Directory/community | Function | Entry point |
|
||||
|---|---|---|
|
||||
| PeeringDB | Participant-maintained records for networks, facilities, and IXPs | [Advanced Search](https://www.peeringdb.com/advanced_search) |
|
||||
| Euro-IX | IXP association and public IXP directory | [IXP list](https://www.euro-ix.net/en/forixps/ixp-list/) |
|
||||
| IX-F | Common schema for IXPs to publish operational data | [ix-f.net](https://www.ix-f.net/) |
|
||||
|
||||
These sources are complementary. They are excellent discovery tools but are not guaranteed to contain every network, facility, session, or current commercial relationship.
|
||||
|
||||
## Routing visibility and operations
|
||||
|
||||
| Entity/system | Function | Entry point |
|
||||
|---|---|---|
|
||||
| Route Views | Public BGP collectors and routing archives | [Collectors](https://www.routeviews.org/routeviews/index.php/collectors/) |
|
||||
| RIPE RIS | Distributed routing collectors and data services | [RIS](https://www.ripe.net/analyse/internet-measurements/routing-information-service-ris/) |
|
||||
| NANOG | North American operator knowledge-sharing community | [nanog.org](https://www.nanog.org/) |
|
||||
|
||||
Collector data shows what participating vantage points observe; it is not a complete ground truth of every route or traffic path.
|
||||
|
||||
## Physical connectivity
|
||||
|
||||
| Source | Function | Entry point |
|
||||
|---|---|---|
|
||||
| TeleGeography Submarine Cable Map | Discovery map for cable systems and landing points | [submarinecablemap.com](https://www.submarinecablemap.com/) |
|
||||
| TeleGeography | Specialist telecom research and network maps | [Network maps](https://www2.telegeography.com/network-maps) |
|
||||
|
||||
Cable ownership, construction, ready-for-service dates, outages, and landing-station details change. Use the map to find candidates, then corroborate with cable-system operators, landing parties, regulators, and current filings.
|
||||
@@ -0,0 +1,15 @@
|
||||
# Regional Internet Registries
|
||||
|
||||
| Registry | Published service region | Public starting point |
|
||||
|---|---|---|
|
||||
| AFRINIC | Africa | [afrinic.net](https://www.afrinic.net/) |
|
||||
| APNIC | Asia-Pacific | [apnic.net](https://www.apnic.net/) |
|
||||
| ARIN | Canada, many Caribbean and North Atlantic economies, and the United States | [ARIN service region](https://www.arin.net/about/welcome/region/) |
|
||||
| LACNIC | Latin America and parts of the Caribbean | [lacnic.net](https://www.lacnic.net/) |
|
||||
| RIPE NCC | Europe, the Middle East, and parts of Central Asia | [ripe.net](https://www.ripe.net/) |
|
||||
|
||||
The [NRO RIR overview](https://www.nro.net/about/rirs/) is the best global starting point. RIR databases and RDAP services help identify the registered holder and public contact channels for IP address and ASN resources; they do not prove who currently routes, physically operates, or beneficially controls a network.
|
||||
|
||||
## Round-2 priority
|
||||
|
||||
Document each RIR's RDAP endpoint, delegated-statistics feed, transfer policy, service-region boundary, and current governance status. AFRINIC needs specific governance and continuity review rather than assumptions based on historical descriptions.
|
||||
@@ -0,0 +1,15 @@
|
||||
# Security and resilience
|
||||
|
||||
| Entity/initiative | Scope | Function | Public directory |
|
||||
|---|---|---|---|
|
||||
| FIRST | Global | Community and standards for incident response and security teams | [Member teams](https://www.first.org/members/teams/) |
|
||||
| Trusted Introducer | European community | Trust/accreditation services and CSIRT directory | [Team directory](https://www.trusted-introducer.org/directory/teams.html) |
|
||||
| MANRS | Global | Practical routing-security norms and participant recognition | [Participants](https://manrs.org/participants/) |
|
||||
| Route Views | Global measurement | Public BGP visibility for analysis | [Collectors](https://www.routeviews.org/routeviews/index.php/collectors/) |
|
||||
| RIPE RIS | Global measurement | Routing data and distributed collectors | [RIS](https://ris.ripe.net/) |
|
||||
|
||||
## Important distinction
|
||||
|
||||
A directory entry is not an authorization to send sensitive incident data. Follow each team's published reporting policy, use role-based channels, validate cryptographic identity where provided, and respect traffic-light/protected-sharing rules.
|
||||
|
||||
Routing security is also broader than route observation: later rounds should map RPKI trust anchors, ROA publication, validator software, ASPA deployment, IRR databases, and operational adoption metrics.
|
||||
@@ -0,0 +1,22 @@
|
||||
# Data directory
|
||||
|
||||
`entities.csv` is the canonical round-1 structured address book.
|
||||
|
||||
## Columns
|
||||
|
||||
| Column | Meaning |
|
||||
|---|---|
|
||||
| `id` | Stable lowercase identifier |
|
||||
| `name` | Published entity or system name |
|
||||
| `category` | Controlled taxonomy value |
|
||||
| `scope` | `global`, `regional`, or `regional-community` |
|
||||
| `region` | Service/community region, not merely headquarters |
|
||||
| `homepage` | Official or canonical public homepage |
|
||||
| `directory_url` | Best public contact, membership, data, or discovery entry point |
|
||||
| `role` | Concise functional description |
|
||||
| `source_url` | Primary evidence for the role |
|
||||
| `status` | Evidence status defined in the method document |
|
||||
| `verified_at` | Date checked, UTC (`YYYY-MM-DD`) |
|
||||
| `notes` | Important caveat; blank when none |
|
||||
|
||||
CSV was chosen for round 1 because it is inspectable in Git, opens in spreadsheets, and requires no custom parser. If nested relationships become central, introduce versioned YAML or JSON without deleting CSV history.
|
||||
@@ -0,0 +1,26 @@
|
||||
id,name,category,scope,region,homepage,directory_url,role,source_url,status,verified_at,notes
|
||||
icann,Internet Corporation for Assigned Names and Numbers,governance-identifiers,global,global,https://www.icann.org/,https://www.icann.org/community,"Coordinates policy processes around the Internet's unique identifier systems.",https://www.icann.org/resources/pages/welcome-2012-02-25-en,verified,2026-07-20,"Official site blocked this automated client with HTTP 403 during link check; retain for browser/manual verification."
|
||||
iana,Internet Assigned Numbers Authority,governance-identifiers,global,global,https://www.iana.org/,https://www.iana.org/domains/root/db,"Maintains registries for DNS root zones, IP number resources, and protocol parameters under its published functions.",https://www.iana.org/about,verified,2026-07-20,
|
||||
ietf,Internet Engineering Task Force,standards,global,global,https://www.ietf.org/,https://datatracker.ietf.org/,"Develops open Internet standards through working groups and the RFC process.",https://www.ietf.org/about/,verified,2026-07-20,
|
||||
internet-society,Internet Society,governance-identifiers,global,global,https://www.internetsociety.org/,https://www.internetsociety.org/chapters/,"Supports an open, globally connected, secure Internet through policy, community, and technical programs.",https://www.internetsociety.org/about-internet-society/,verified,2026-07-20,
|
||||
itu,International Telecommunication Union,standards,global,global,https://www.itu.int/,https://www.itu.int/en/about/Pages/contact.aspx,"UN specialized agency for information and communication technologies and international telecommunication coordination.",https://www.itu.int/en/about/Pages/default.aspx,verified,2026-07-20,
|
||||
w3c,World Wide Web Consortium,standards,global,global,https://www.w3.org/,https://www.w3.org/groups/,"Develops open standards for the Web platform.",https://www.w3.org/about/,verified,2026-07-20,
|
||||
nro,Number Resource Organization,governance-identifiers,global,global,https://www.nro.net/,https://www.nro.net/about/rirs/,"Coordinates the five Regional Internet Registries and represents their joint interests.",https://www.nro.net/about/,verified,2026-07-20,
|
||||
afrinic,AFRINIC,registry,regional,Africa,https://www.afrinic.net/,https://www.afrinic.net/membership/list,"Regional Internet Registry serving Africa.",https://www.afrinic.net/about,verified,2026-07-20,"Organizational and governance developments require dedicated follow-up in round 2."
|
||||
apnic,APNIC,registry,regional,Asia-Pacific,https://www.apnic.net/,https://www.apnic.net/about-apnic/organization/contact/,"Regional Internet Registry serving the Asia-Pacific region.",https://www.apnic.net/about-apnic/,verified,2026-07-20,
|
||||
arin,American Registry for Internet Numbers,registry,regional,Canada-Caribbean-North Atlantic-United States,https://www.arin.net/,https://www.arin.net/resources/registry/whois/,"Regional Internet Registry for its published service region.",https://www.arin.net/about/welcome/region/,verified,2026-07-20,
|
||||
lacnic,Latin American and Caribbean Internet Addresses Registry,registry,regional,Latin America-Caribbean,https://www.lacnic.net/,https://www.lacnic.net/1004/2/lacnic/contact,"Regional Internet Registry serving Latin America and parts of the Caribbean.",https://www.lacnic.net/966/2/lacnic/about-lacnic,verified,2026-07-20,
|
||||
ripe-ncc,RIPE Network Coordination Centre,registry,regional,Europe-Middle East-parts of Central Asia,https://www.ripe.net/,https://www.ripe.net/membership/member-support/contact/,"Regional Internet Registry for its published service region and operator of measurement services.",https://www.ripe.net/about-us/,verified,2026-07-20,
|
||||
root-server-system,Root Server System,dns,global,global,https://root-servers.org/,https://root-servers.org/,"The globally distributed root DNS service operated by multiple independent organizations.",https://root-servers.org/,verified,2026-07-20,"The 13 named root server identifiers are logical identities backed by many instances."
|
||||
dns-oarc,DNS Operations Analysis and Research Center,dns,global,global,https://www.dns-oarc.net/,https://www.dns-oarc.net/oarc/members,"Coordinates DNS operational analysis, research, data, and community activity.",https://www.dns-oarc.net/oarc,verified,2026-07-20,
|
||||
peeringdb,PeeringDB,interconnection,global,global,https://www.peeringdb.com/,https://www.peeringdb.com/advanced_search,"Community-maintained interconnection database for networks, facilities, and Internet exchanges.",https://docs.peeringdb.com/,verified,2026-07-20,"Records are contributed and maintained by participants; completeness varies."
|
||||
euro-ix,European Internet Exchange Association,interconnection,regional-community,Europe and affiliated regions,https://www.euro-ix.net/,https://www.euro-ix.net/en/forixps/ixp-list/,"Association and public directory for Internet exchange points and related communities.",https://www.euro-ix.net/en/about-us/,verified,2026-07-20,
|
||||
ix-f,IX-F Member Export Schema,interconnection,global,global,https://www.ix-f.net/,https://www.ix-f.net/,"Community schema that lets IXPs publish machine-readable operational data.",https://www.ix-f.net/ixp-database.html,verified,2026-07-20,
|
||||
manrs,Mutually Agreed Norms for Routing Security,routing-security,global,global,https://manrs.org/,https://manrs.org/participants/,"Industry initiative defining and recognizing practical routing-security actions.",https://manrs.org/about/,verified,2026-07-20,
|
||||
route-views,University of Oregon Route Views Project,routing-security,global,global,https://www.routeviews.org/,https://www.routeviews.org/routeviews/index.php/collectors/,"Collects and publishes BGP routing views for research and operational analysis.",https://www.routeviews.org/routeviews/,verified,2026-07-20,
|
||||
ripe-ris,RIPE Routing Information Service,routing-security,global,global,https://www.ripe.net/analyse/internet-measurements/routing-information-service-ris/,https://ris.ripe.net/,"Collects and provides Internet routing data from distributed collectors.",https://www.ripe.net/analyse/internet-measurements/routing-information-service-ris/,verified,2026-07-20,
|
||||
first,Forum of Incident Response and Security Teams,incident-response,global,global,https://www.first.org/,https://www.first.org/members/teams/,"Global forum and directory for incident response and security teams.",https://www.first.org/about/,verified,2026-07-20,
|
||||
trusted-introducer,Trusted Introducer,incident-response,regional-community,Europe,https://www.trusted-introducer.org/,https://www.trusted-introducer.org/directory/teams.html,"Trust and accreditation services plus a directory for security and incident response teams.",https://www.trusted-introducer.org/about-ti,verified,2026-07-20,
|
||||
submarine-cable-map,TeleGeography Submarine Cable Map,physical-infrastructure,global,global,https://www.submarinecablemap.com/,https://www.submarinecablemap.com/,"Public specialist map and starting dataset for international submarine cable systems and landing points.",https://www.submarinecablemap.com/,verified,2026-07-20,"Commercial specialist source; verify ownership and operational status against operators and regulators in deeper rounds."
|
||||
telegeography,TeleGeography,physical-infrastructure,global,global,https://www.telegeography.com/,https://www2.telegeography.com/network-maps,"Specialist telecommunications research publisher and source of network maps.",https://www2.telegeography.com/about-us,verified,2026-07-20,"Not a neutral registry; use as a discovery source and corroborate material claims."
|
||||
nanog,North American Network Operators' Group,operator-community,regional-community,North America,https://www.nanog.org/,https://www.nanog.org/events/,"Operator community for exchange of Internet engineering knowledge and operational practice.",https://www.nanog.org/about/,verified,2026-07-20,"Official site blocked this automated client with HTTP 403 during link check."
|
||||
|
@@ -0,0 +1,47 @@
|
||||
# Scope and method
|
||||
|
||||
## Research question
|
||||
|
||||
Who coordinates, standardizes, operates, measures, interconnects, and protects the global Internet, and where can authoritative information about those actors be found?
|
||||
|
||||
## Round 1 boundary
|
||||
|
||||
This round establishes an ecosystem-level address book. It does **not** claim to catalog:
|
||||
|
||||
- every autonomous system, ISP, carrier, cloud, CDN, IXP, cable, landing station, or data center;
|
||||
- every national regulator or ministry;
|
||||
- private individuals or non-public incident contacts;
|
||||
- commercial rankings or market share.
|
||||
|
||||
## Method
|
||||
|
||||
1. Define a functional taxonomy rather than a single organizational hierarchy.
|
||||
2. Select globally or regionally significant coordinating bodies and public directories.
|
||||
3. Prefer official homepages, registries, and operator-maintained datasets.
|
||||
4. Check that listed URLs resolve on the verification date.
|
||||
5. Capture scope, category, region, relevance, and provenance in `data/entities.csv`.
|
||||
6. Mark limitations and queue deeper enumeration as explicit future work.
|
||||
|
||||
## Evidence levels
|
||||
|
||||
| Status | Meaning |
|
||||
|---|---|
|
||||
| `verified` | Official source was reachable and the entity/category relationship is established by its public role. |
|
||||
| `partial` | Core identity is established, but contacts, coverage, or details need more work. |
|
||||
| `lead` | Candidate for investigation; not yet suitable for the canonical address book. |
|
||||
| `stale` | Previously valid entry whose source or role can no longer be confirmed. |
|
||||
|
||||
Round 1 canonical entries are `verified`; this does not mean their datasets are complete or independently audited.
|
||||
|
||||
## Contact policy
|
||||
|
||||
This address book stores institutional links and public, role-based directories. It avoids personal phone numbers, personal email addresses, credentials, member-only data, and inferred contacts.
|
||||
|
||||
## Update policy
|
||||
|
||||
Every material change should include:
|
||||
|
||||
- a primary source URL;
|
||||
- a UTC verification date;
|
||||
- a concise explanation in the commit message;
|
||||
- a move to `partial` or `stale` if the claim can no longer be verified.
|
||||
@@ -0,0 +1,67 @@
|
||||
# First-round investigation
|
||||
|
||||
**Investigation date:** 2026-07-20
|
||||
**Canonical dataset:** 25 verified ecosystem-level entries in [`data/entities.csv`](../data/entities.csv)
|
||||
|
||||
## Executive view
|
||||
|
||||
The global Internet should not be modeled as one organization or one centrally owned network. It is better understood as several interdependent layers:
|
||||
|
||||
1. **Identifiers and registries** — IANA, ICANN-related processes, the NRO, and five RIRs coordinate globally unique names, numbers, and protocol parameters.
|
||||
2. **Open technical standards** — IETF and W3C publish core protocol and Web standards, while ITU provides intergovernmental telecommunications standardization and coordination.
|
||||
3. **Distributed operations** — thousands of autonomous networks interconnect through private links and IXPs; PeeringDB, Euro-IX, and IX-F expose useful but participant-dependent views.
|
||||
4. **Naming infrastructure** — the DNS root is a globally distributed service with multiple independent operators; DNS-OARC provides an operational research community.
|
||||
5. **Physical transport** — terrestrial fiber, submarine cables, landing stations, facilities, spectrum, and power form a changing physical substrate. Round 1 identifies a discovery source, not a complete asset register.
|
||||
6. **Security and resilience** — routing norms, BGP collectors, RPKI/IRR systems, CSIRT communities, and operator groups provide overlapping coordination rather than a single control center.
|
||||
|
||||
## Round-1 findings
|
||||
|
||||
### 1. Build an “address book of authoritative directories” first
|
||||
|
||||
Trying to list every network directly would become stale immediately. The scalable foundation is to map authoritative registries and maintained community datasets, then ingest or link to their records with provenance. The RIRs, PeeringDB, IX-F, FIRST, Root Server System, Route Views, and RIPE RIS are key anchor points.
|
||||
|
||||
### 2. Governance, standards, ownership, and operation are different axes
|
||||
|
||||
An organization can define a standard without operating infrastructure; register a resource without owning the underlying network; or operate a service without governing the global policy around it. Records therefore need functional categories and relationships, not a simplistic parent/child tree.
|
||||
|
||||
### 3. Public datasets represent different kinds of truth
|
||||
|
||||
- RIR registration data identifies registered resource holders and contacts, not necessarily current traffic operators or beneficial owners.
|
||||
- BGP collectors observe selected vantage points, not every path.
|
||||
- PeeringDB is maintained by participants and may be incomplete or temporarily stale.
|
||||
- Cable maps are discovery tools; ownership, operational state, and route details require corroboration.
|
||||
- CSIRT directories establish public identity and trust context, not permission to share sensitive data.
|
||||
|
||||
### 4. Geographic language must describe service scope
|
||||
|
||||
Headquarters location is often misleading. RIR regions, IXP associations, operator groups, and incident-response communities have specific service or membership boundaries. The dataset records service/community region separately from global/regional scope.
|
||||
|
||||
### 5. The next useful unit is a relationship
|
||||
|
||||
Future analysis should connect:
|
||||
|
||||
- organization → autonomous system;
|
||||
- autonomous system → IP prefixes and RPKI objects;
|
||||
- network → IXP/facility/peering presence;
|
||||
- cable system → owner/operator/landing station/country;
|
||||
- DNS root identity → operator → sites;
|
||||
- CSIRT → constituency → country/sector;
|
||||
- source → claim → verification date.
|
||||
|
||||
This graph should be derived from versioned source records rather than manually asserted as fact without evidence.
|
||||
|
||||
## URL verification notes
|
||||
|
||||
The official/canonical URLs in the dataset were checked with automated HTTP requests on 2026-07-20. Most returned successful responses. ICANN and NANOG returned HTTP 403 to the automated client while remaining canonical official links; this is recorded as a transport caveat. Packet Clearing House timed out during this pass and remains a round-2 lead rather than a canonical record.
|
||||
|
||||
## Current limits
|
||||
|
||||
- No country-by-country regulator or ministry directory yet.
|
||||
- No exhaustive ASN, ISP, cloud, CDN, carrier, IXP, facility, or cable inventory.
|
||||
- No graph database or automated ingestion yet.
|
||||
- No assessment of market concentration, dependency, geopolitical exposure, or outage risk.
|
||||
- No independent audit of every third-party dataset's completeness.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Round 1 establishes a defensible navigation layer: 25 organizations, systems, and public directories spanning identifiers, standards, regional registries, DNS, interconnection, routing, physical transport, operator communities, and incident response. It is intentionally a map of where trustworthy investigation begins—not a claim that the world network has been fully enumerated.
|
||||
@@ -0,0 +1,23 @@
|
||||
# Taxonomy
|
||||
|
||||
The Internet is decentralized, so this repository classifies entities by function rather than pretending there is one chain of command.
|
||||
|
||||
| Category | Definition | Typical examples |
|
||||
|---|---|---|
|
||||
| `governance-identifiers` | Coordination of names, protocol parameters, IP/AS number systems, or multistakeholder policy | ICANN, IANA, NRO |
|
||||
| `standards` | Open technical or telecommunications standards development | IETF, W3C, ITU |
|
||||
| `registry` | Regional allocation/registration of IP addresses and autonomous-system numbers | AFRINIC, APNIC, ARIN, LACNIC, RIPE NCC |
|
||||
| `dns` | DNS root operations, research, and operational coordination | Root Server System, DNS-OARC |
|
||||
| `interconnection` | Public directories or associations for peering and Internet exchanges | PeeringDB, Euro-IX, IX-F |
|
||||
| `routing-security` | Routing hygiene, routing visibility, or routing-security coordination | MANRS, Route Views, RIPE RIS |
|
||||
| `incident-response` | Trusted communities and directories for CSIRT/CERT coordination | FIRST, Trusted Introducer |
|
||||
| `physical-infrastructure` | Public sources describing long-haul physical connectivity | TeleGeography Submarine Cable Map |
|
||||
| `operator-community` | Communities where network operators exchange operational practice | NANOG and future regional NOGs |
|
||||
|
||||
## Geographic scope
|
||||
|
||||
Use `global`, a named service region, or `regional-community`. Regional scope describes service responsibility, not headquarters location.
|
||||
|
||||
## Stable identifiers
|
||||
|
||||
`id` values are lowercase kebab-case and should survive branding changes where practical. Names and URLs may change; IDs should not be recycled.
|
||||
@@ -0,0 +1,36 @@
|
||||
# Next research rounds
|
||||
|
||||
## Round 2 — canonical registries and machine-readable feeds
|
||||
|
||||
- [ ] Record RDAP bootstrap and endpoints for all five RIRs.
|
||||
- [ ] Add RIR delegated-statistics feeds and source licenses/terms.
|
||||
- [ ] Map IANA registries relevant to DNS, IPv4/IPv6, ASNs, and protocol parameters.
|
||||
- [ ] Map RPKI trust anchors, repositories, validators, ROAs, and ASPA status.
|
||||
- [ ] Review AFRINIC's current governance and registry-continuity position from primary legal/organizational sources.
|
||||
- [ ] Retry and assess Packet Clearing House as an IXP/operational data source.
|
||||
|
||||
## Round 3 — networks and interconnection
|
||||
|
||||
- [ ] Define records for ASNs, organizations, networks, IXPs, facilities, and relationships.
|
||||
- [ ] Evaluate PeeringDB API ingestion with attribution, timestamps, and rate limits.
|
||||
- [ ] Evaluate IX-F member exports and reconcile identifiers with PeeringDB.
|
||||
- [ ] Add regional IXP associations and network operator groups beyond Euro-IX/NANOG.
|
||||
- [ ] Compare Route Views and RIPE RIS collector coverage.
|
||||
|
||||
## Round 4 — physical infrastructure
|
||||
|
||||
- [ ] Define cable-system, landing-station, terrestrial-route, data-center, and owner/operator schemas.
|
||||
- [ ] Corroborate submarine cable records with operator sites, regulators, permits, and filings.
|
||||
- [ ] Track announced, under-construction, ready-for-service, operational, and retired states separately.
|
||||
- [ ] Investigate public satellite, spectrum, and terrestrial backbone sources.
|
||||
|
||||
## Round 5 — countries, policy, and resilience
|
||||
|
||||
- [ ] Build a country index of regulators, ministries, ccTLD managers, national CERTs, and major IXPs.
|
||||
- [ ] Add outage/measurement sources such as RIPE Atlas and other transparent observatories.
|
||||
- [ ] Model dependencies and concentration without equating registration with control.
|
||||
- [ ] Define a reproducible freshness report and scheduled source checks.
|
||||
|
||||
## Data-model evolution trigger
|
||||
|
||||
Stay with CSV until records need repeated nested relationships or automated merges. Then introduce versioned JSON/YAML source records and generate CSV/Markdown views. Do not add a database merely for presentation.
|
||||
@@ -0,0 +1,95 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Validate the round-1 network address book without third-party dependencies."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import csv
|
||||
import re
|
||||
import sys
|
||||
from collections import Counter
|
||||
from datetime import date
|
||||
from pathlib import Path
|
||||
from urllib.parse import urlparse
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
DATA = ROOT / "data" / "entities.csv"
|
||||
REQUIRED = [
|
||||
"id", "name", "category", "scope", "region", "homepage",
|
||||
"directory_url", "role", "source_url", "status", "verified_at", "notes",
|
||||
]
|
||||
CATEGORIES = {
|
||||
"governance-identifiers", "standards", "registry", "dns", "interconnection",
|
||||
"routing-security", "incident-response", "physical-infrastructure", "operator-community",
|
||||
}
|
||||
SCOPES = {"global", "regional", "regional-community"}
|
||||
STATUSES = {"verified", "partial", "lead", "stale"}
|
||||
ID_RE = re.compile(r"^[a-z0-9]+(?:-[a-z0-9]+)*$")
|
||||
|
||||
|
||||
def valid_url(value: str) -> bool:
|
||||
parsed = urlparse(value)
|
||||
return parsed.scheme == "https" and bool(parsed.netloc)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
errors: list[str] = []
|
||||
with DATA.open(newline="", encoding="utf-8") as handle:
|
||||
reader = csv.DictReader(handle)
|
||||
if reader.fieldnames != REQUIRED:
|
||||
errors.append(f"CSV columns differ from required schema: {reader.fieldnames!r}")
|
||||
rows = list(reader)
|
||||
|
||||
ids = Counter(row.get("id", "") for row in rows)
|
||||
for row_number, row in enumerate(rows, start=2):
|
||||
ident = row.get("id", "")
|
||||
prefix = f"row {row_number} ({ident or 'missing-id'})"
|
||||
for field in REQUIRED[:-1]: # notes may be blank
|
||||
if not row.get(field, "").strip():
|
||||
errors.append(f"{prefix}: missing {field}")
|
||||
if not ID_RE.fullmatch(ident):
|
||||
errors.append(f"{prefix}: invalid id")
|
||||
if row.get("category") not in CATEGORIES:
|
||||
errors.append(f"{prefix}: unknown category {row.get('category')!r}")
|
||||
if row.get("scope") not in SCOPES:
|
||||
errors.append(f"{prefix}: unknown scope {row.get('scope')!r}")
|
||||
if row.get("status") not in STATUSES:
|
||||
errors.append(f"{prefix}: unknown status {row.get('status')!r}")
|
||||
for field in ("homepage", "directory_url", "source_url"):
|
||||
if not valid_url(row.get(field, "")):
|
||||
errors.append(f"{prefix}: {field} must be an https URL")
|
||||
try:
|
||||
checked = date.fromisoformat(row.get("verified_at", ""))
|
||||
if checked > date.today():
|
||||
errors.append(f"{prefix}: verified_at is in the future")
|
||||
except ValueError:
|
||||
errors.append(f"{prefix}: verified_at must be YYYY-MM-DD")
|
||||
|
||||
for ident, count in ids.items():
|
||||
if count > 1:
|
||||
errors.append(f"duplicate id {ident!r}: {count} rows")
|
||||
|
||||
required_docs = [
|
||||
ROOT / "README.md",
|
||||
ROOT / "docs" / "02-first-round-investigation.md",
|
||||
ROOT / "address-book" / "README.md",
|
||||
ROOT / "research" / "next-round.md",
|
||||
]
|
||||
for path in required_docs:
|
||||
if not path.is_file():
|
||||
errors.append(f"missing required document: {path.relative_to(ROOT)}")
|
||||
|
||||
if errors:
|
||||
print("Validation failed:")
|
||||
for error in errors:
|
||||
print(f"- {error}")
|
||||
return 1
|
||||
|
||||
counts = Counter(row["category"] for row in rows)
|
||||
print(f"Validated {len(rows)} entities across {len(counts)} categories.")
|
||||
for category, count in sorted(counts.items()):
|
||||
print(f"- {category}: {count}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
@@ -0,0 +1,21 @@
|
||||
# Source and provenance policy
|
||||
|
||||
## Preferred source order
|
||||
|
||||
1. Official registry, standards body, institution, or operator site.
|
||||
2. Official machine-readable API or directory.
|
||||
3. Intergovernmental or regulator publication.
|
||||
4. Reputable specialist research source, clearly labeled.
|
||||
5. Secondary reporting only as a lead for primary-source confirmation.
|
||||
|
||||
## Required fields
|
||||
|
||||
Each canonical record has an official homepage, a more specific source URL when available, a UTC verification date, and a status.
|
||||
|
||||
## Link verification
|
||||
|
||||
A successful HTTP response establishes that a page was reachable; it does not prove every claim on that page. Some legitimate sites block automated clients, so a `403` can be recorded as a transport caveat without treating the organization as invalid.
|
||||
|
||||
## Corrections
|
||||
|
||||
Corrections should cite the replacement source and preserve history through Git. Do not silently rewrite uncertain facts.
|
||||
Reference in New Issue
Block a user