Show figures of the routing table on the home page (closes #154)
check / check (push) Canceled after 0s

The home page gets cards for the newest and oldest kept route, the newest
and oldest updated AS, the AS with the most prefixes, the ASes with a
single prefix and fifteen well-known networks. Two more cards count the
bogon announcements and the prefixes with several origin ASes. They link
to the new pages /bogons and /multiple-origins, which list up to 1,000
entries each.

The new package internal/bogon tells reserved prefixes and AS numbers,
from the IANA special-purpose and address space registries. Table.Overview
walks the table and lets the read lock go every 10,000 prefixes. The
server works the cards out once a minute and serves that copy. A new index
on asns(last_seen) finds the newest and oldest updated AS.

Model: opus-5-5
This commit was merged in pull request #196.
This commit is contained in:
2026-10-27 18:27:01 +01:00
parent e68be8254a
commit 281d162e27
23 changed files with 2240 additions and 6 deletions
+39
View File
@@ -70,6 +70,44 @@ one of its peers sends an update.
- `GET /` - Home page (HTML): headline figures, lookups by AS number and by IP
address, and a search of AS names. A card shows the `curl` command that looks
up the visitor's own address at `/ip/{addr}`, and that command's live answer.
Other cards show figures of the routing table, with links to the AS and prefix
pages:
- the newest and the oldest kept route, with its prefix, origin AS and time
- the AS last seen in an AS path most recently, and the one last seen
longest ago
- the AS that originates the most prefixes
- how many ASes originate a single prefix, and the most recently updated of
them
- the number of bogon announcements, linked to `/bogons`
- the number of prefixes with more than one origin AS, linked to
`/multiple-origins`
- well-known networks, such as Apple, Google, Cogent and MIT, each with its
number of prefixes and the time of its newest kept route, newest first
RouteWatch works these figures out once a minute, so they can be a minute
old.
- `GET /bogons` - The bogon announcements (HTML): the routes whose prefix or
origin AS is reserved. A prefix is reserved when it lies inside one of these:
- a block that the IANA special-purpose address registries mark as not
globally reachable
- the multicast space, `224.0.0.0/4` and `ff00::/8`, which the IANA IPv4 and
IPv6 address space registries list as Multicast
A reserved AS number is one of these:
- an AS number for private use or for documentation
- `AS23456`
- the last AS number of the 16-bit or the 32-bit range
Address space and AS numbers that the IANA has not handed out yet are not
counted. Each row shows the prefix, the origin AS, the number of peers and
why it is a bogon. The page shows at most 1,000 rows, in prefix order, and
says how many there are in all.
- `GET /multiple-origins` - The prefixes announced by more than one origin AS
(HTML). Each row shows the origin ASes and how many peers carry the prefix
with each. Like `/bogons`, it shows at most 1,000 rows, in prefix order, and
says how many there are in all.
- `GET /status` - HTML status dashboard, which reads `/api/v1/stats`
- `GET /status.json` - JSON statistics: feed, memory, database and route
figures. The route figures come from the routing table. `oldest_route` and
@@ -248,6 +286,7 @@ routewatch/
│ └── streamdumper/ # Debug utility for raw stream output
├── internal/
│ ├── blocklist/ # Public IP blocklists: downloads and lookups
│ ├── bogon/ # Reserved prefixes and AS numbers
│ ├── routewatch/ # Core application logic
│ ├── server/ # HTTP server and handlers
│ ├── database/ # SQLite storage layer