wait what was i doing ✦✦✦ ooh shiny → ← focus focus focus anyway, ✶ ✶ ✶ hyperfocus mode: ON brb forgot what i said !! CAAAATTSSSS task 1 of 47... where was i again
✦ ✶ ✦ yes this is my real name

Bonga Cat

no i won't explain it
Networking Nerd, Carnatic Flautist
& 12 other things
✶ ✦ ✶
totally me btw maybe idk src: trust me
Bonga Cat
My most noble intentions are to indulge in innocuous levels of tomfoolery
RFC 9293 enjoyer ← read it actually though ✶✶ no seriously

I hate abstractions.

not really lol

In fact, I think they're one of the most important ideas in computer science.

The problem is that they work so well that people stop asking what's underneath them. ← THIS. THIS RIGHT HERE.

I have the opposite problem.

I refuse to use an abstraction until I understand what it's abstracting away. every. single. time.

Because:

not because I don't trust it.

Because once I understand it, I get to actually have an opinion on it.

I either keep it. Specialize it. Break it on purpose . Replace it. OR Delete it entirely.

the abstraction isn't the enemy. Not understanding it is.

thinking out loud → ✦ ✶ ✦ ← cleaned up. mostly.
down the rabbit hole... RFC 793 pg.47 → ✦ ✶ ✦ kernel who? still going... bytes all the way down ← not a bug, a feature

The Rabbit Hole


each project is a chapter. each chapter is a reason.
it started with paranoia origin

The Paranoia

"If I was responsible for something real, I needed to understand it completely."

Frontend was fun until it wasn't. Then my friends pulled me into a venture. Handle the backend and infra. I said yes. Then the paranoia hit. Not "I know how to deploy things" understand. I mean, open Wireshark, see an RST packet, and know immediately why the connection terminated. That kind of understanding. So I started at the beginning with Beej's guide. One thing stuck: sockets are endpoints. Bytes go in, bytes come out. That was enough to keep going.

that's where your process touches the network →
Go lied to me chapter 01

CSFTP

"I needed to know what a protocol actually was, from the byte up."

Everyone said learn a language by building something real. So I opened the Go docs and immediately noticed, all the syscalls, the bind, the listen, all of it was gone. One line and you have a listening socket. And then it hit me. If Go is abstracting all of that away, and all a protocol really is is bytes sent and meaningfully parsed... I could just make my own. So instead of building an HTTP server, I built CSFTP — my own file transfer protocol. Not because FTP needed reimplementing. Because I needed to understand what a protocol actually was.

not terrible. educational. okay maybe a little terrible ←
beat redis btw in a very specific way chapter 02

VegoshDB

"I can't beat Redis broadly. So I found a specific constraint where I could win."

I wanted it faster. Faster meant C. CSFTP had disk IO so I wanted a pure networking problem: a KV store. Which is basically Redis. I obviously can't beat Redis broadly. So I found a specific constraint: 64 byte entries, cache aligned to a single cache line, 1 million key static hash table. Deterministic performance. For that specific payload, VegoshDB aims to beat Redis. That's not a limitation. That's the design.

cache lines are beautiful actually →
the rabbit hole within the rabbit hole chapter 02.5

Vegosh Hashmap Rust Zig C++

"Well.... that was a side quest!"

VegoshDB was built around a specific hashmap design: 64 byte slots, 16 byte keys, 32 byte values, robin hood probing, prefetching. This hashmap was me venturing into the rabbit hole of memory. Built it in Rust, Zig, and C++ Now I'm benchmarking it against hashbrown and ABSL.

the engine powering everything ←
Everything userspace, hehe chapter 03
🟣 ongoing

Network Stack in Userspace — Rust

"Why stop at TCP?"

After progressing quite a bit on my TCP implementation over a TUN interface, I realised, why not do more? So, I decided to implement, ICMP, UDP and TCP over a TAP interface. Implementing my own ARP, ping from absolute scratch. As close as to a NIC I could get with minimal abstractions

whaaaaaaaaaaaaaaaat →
chapter 03.5.1

Rawz: A Minimal type safe syscall wrapper

"Wait, why usize?"

While exploring zig, I saw zig's library returning a usize for syscalls. The question why usize led me into deep dive into x86 architecture, understanding syscalls down to the CPU instruction and I came out of the rabbit hole with a minimal type safe wrapper over x86 syscalls.

One heck of a rabbit hole ←
x86 go brrrrrrr 2.5.2

ASMVER

"Assembly, the final abstraction??"

If I understood syscalls down to the CPU instruction, the next obvious but unhinged step had to be to write a server in x86 assembly. So I wrote a really basic TCP echo server.

No more scared of assembly →
nc was wrong actually chapter 04
🟣 ongoing

MinLab + chaos mode

"nc doesn't do a proper 4 way teardown. that bothered me enough to write a TCP impl tester"

A simple nc implementation turned into a deterministic protocol testing tool. I was using nc to test my TCP implementation. Quit the process and my impl got stuck in the last ACK state. So I started with writing a nc clone with a terminate command that completes the handshake correctly. Then I thought, why stop there? Why not send packets at completely wrong states? SYN during ESTABLISHED. RST when the connection is half open. See if the implementation actually holds. So I added chaos mode. Because WHY NOT.. Brutally test your TCP implementation.

hehe →
Wait, how do kernel's speak networking? chapter 05
🟠 planned

MUDP

"Well, why does a socket need a syscall?."

MUDP or My UDP. I wanted to know how kernels implemented networking, because you can't bypass something you truly don't understand After understanding the sockets down to the instruction level, I wanted to know what is even a syscall like socket(), bind() even doing... My own UDP implementation which is a kernel module and can be called via socket().

One step closer to the final boss ←
Hopefully the last step? chapter 06
🟠 planned

Load Balancer — AF_XDP

"Well... I don't have a NIC....."

DPDK requires specialized Poll Mode Drivers (PMDs) to talk directly to the hardware. My laptop can't do that.... So XDP is just me fiddling around until I get access to an enterprise grade NIC.

what even is a NIC (i know now) chapter 07
🟠 planned

QEMU NIC Driver

"Understanding TCP wasn't enough."

TCP from scratch got me far. But I needed to understand everything the kernel does silently before a single byte reaches your application. So I am writing virtual NIC driver in QEMU. Now epoll and io_uring aren't fast paths I'm blindly following. They're things I actually understand from underneath.

layers all the way down ←
the whole point chapter 08
⚡ the goal

DPDK

"The original goal. Still the horizon."

This was always where it was heading. Kernel bypass networking. The point where the abstraction doesn't just get thin — it disappears entirely. I spent six chapters making sure I actually understand what I'm bypassing. That's the whole point.

story isn't over →
phew, made it out ← receipts ✦ ✶ ✦ no really, they work ✶✶ not just theory →

Projects that escaped the rabbit hole

Actually cool stuff ngl
speeeeeeeeeeddd

VegoshDB

A key-value store built for ONE specific workload

Well... now you get what a KV Store is...

64B entries cache-aligned 1M keys
Zig
side quest that stuck around

Vegosh Hashmap

Rust Zig C++

The engine underneath VegoshDB: 64-byte slots, robin hood probing, built three times over.

understanding memory layout well enough to argue with it, in three languages, then benchmark the argument.

vs hashbrown vs ABSL
powers VegoshDB ↑
man i wish this existed

Rawz

A minimal, type-safe wrapper over Linux syscalls for Zig

a raw usize return value wasn't good enough once I understood what was actually being thrown away at the ABI boundary.

x86 ABI type-safe
Zig
chaos mode: on

MinLab

A TCP implementation tester with a chaos mode that fires packets at your stack in states it shouldn't survive.

Needed a way to test my TCP implementation bruh....

chaos mode replaces nc
actively growing
carnatic × chaos ♩ ♪ ♫ ♬ shouldn't work. does anyway. 8000 people btw →

Also, I play music.

wasnt nervous at all...
Samsara · Opening Act

Revels '24 Pro-Show Night

Opened for Salim–Sulaiman, Javed Ali & KR$NA in front of 8000+ people. MIT Manipal.

opening. for that lineup. →
Samsara · 1st Place

Revels '24

Beat 20+ bands at one of India's largest student-run cultural fests.

then opened the pro-show night. same festival. ←
Samsara · Semi-finalist

Sea Rock, BITS Pilani

One of India's largest semi-professional band competitions. Waves, BITS Goa.

semi-pro. we were students. →
actually me btw
Vaibhav Anand
Samsara Moksha 7.84
Moksha · Runners-up

Invictus '25

Intercollegiate cultural fest of KMC Manipal, MAHE.

7.84 · 1st Place

Sentia '25, MITE

Took home ₹50,000.

won. went home. →

I'm a Carnatic flautistIndian classical music from southern India. University threw me into collabs, which slowly became fusion work. Carnatic music getting mixed with metal, prog rock, jazz and basically everything that probably shouldn't work together. It does anyway.