import type { Metadata } from 'next'; import Link from 'next/link'; import { LevelBadge, PNum, Section } from '@/components/ui/primitives'; import { apiGet } from '@/lib/api'; import { fmt, fmtInt } from '@/lib/format'; import { pressureColor } from '@/lib/pressure'; import { Time } from '@/lib/time'; import type { AsnRow } from '@/lib/types'; export const dynamic = 'force-dynamic'; export const metadata: Metadata = { title: 'Autonomous systems', description: 'Pressure observed per autonomous system: routing churn, latency and availability toward the networks we measure.' }; export default async function AsnsPage() { const { asns, ts } = await apiGet<{ ts: string; asns: AsnRow[] }>('/api/v1/asns'); const sorted = [...asns].sort((a, b) => b.pressure - a.pressure); return (
Index
{fmtInt(asns.length)} networks with anchored targets or BGP attribution ยท engine
| ASN | Name | CC | Pressure | Level | Routing | Latency | Avail. | Targets | Prefixes | Imp. |
|---|---|---|---|---|---|---|---|---|---|---|
| AS{a.asn} | {a.name} | {a.country} |
|
|
{fmt(a.routing, 0)} | {fmt(a.latency, 0)} | {fmt(a.availability, 0)} | {fmtInt(a.targets)} | {fmtInt(a.prefixes_observed)} | {a.importance} |