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

Autonomous systems

{fmtInt(asns.length)} networks with anchored targets or BGP attribution ยท engine

{sorted.map((a) => ( ))}
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}
); }