Hi everyone, as a software engineer, I wanted to know more about networking and BGP. So I started implementing BGP about two years ago. But it stalled at a message parser, because I had too much knowledge gap. I stopped. But late last year, I started again, this time with AI. I studied up the RFCs, designed the architecture and Claude did most of typing. I read every RFC and every code, which is where learning happened.
7 months later, it's live and I'm running AS4242423930 on dn42, carrying the full routing table (~2k prefixes) with two eBGP peers. I'm also running two "POPs" in US east and west coast, running iBGP. It doesn't actually program routes to kernel yet (it's just a speaker). I figured it's enough for route servers or software controllers that don't actually forward packets.
As for the project, what I wanted to focus on was observability. This natively emits operational metrics as CloudWatch EMF (for AWS), JSON (for other Cloud), and also Prometheus. Memory-safety and efficiency were also the goal (Rust). And the project is actually not just BGP, but a routing stack. Because I'm also curious about protocols other than BGP.. So I'll implement more routing protocols as I continue learning more. I named it Rogg ("Routing, gg") which consists of bgpgg ("BGP, gg") and ggsh ("gg shell"). I grew up a gamer and couldn't resist. Thanks for checking it out.
stockkid•9h ago
7 months later, it's live and I'm running AS4242423930 on dn42, carrying the full routing table (~2k prefixes) with two eBGP peers. I'm also running two "POPs" in US east and west coast, running iBGP. It doesn't actually program routes to kernel yet (it's just a speaker). I figured it's enough for route servers or software controllers that don't actually forward packets.
As for the project, what I wanted to focus on was observability. This natively emits operational metrics as CloudWatch EMF (for AWS), JSON (for other Cloud), and also Prometheus. Memory-safety and efficiency were also the goal (Rust). And the project is actually not just BGP, but a routing stack. Because I'm also curious about protocols other than BGP.. So I'll implement more routing protocols as I continue learning more. I named it Rogg ("Routing, gg") which consists of bgpgg ("BGP, gg") and ggsh ("gg shell"). I grew up a gamer and couldn't resist. Thanks for checking it out.