Open a lab in the browser.
Pick a topology from the labs hub. The router console boots in front of you. No install. No signup. No setup.
// Hands-on networking
Real protocols. Real packet flow. No hand-waving. Open a lab, get a topology, type real commands, watch the network respond.
Nine labs. RFC 4271 FSM, RIB, best-path tiebreakers, route reflection, and the timer math wired through end-to-end. No install. No signup. Open the page and start typing.
// The lab
The lab is not a video. You type real router commands, watch BGP state change in front of you, and decode every packet that crossed the wire.
Enter Lab 01 →// What you'll actually learn
Each lab is built around one counter-intuitive fact about how routing actually behaves. Click any card to see it run.
It means the router gave up calling and is waiting to be called. RFC 4271 §8.2.2. Most juniors get this wrong on day one.
Lab 02The OPEN exchange validates remote-as. When it doesn't match, the protocol screams. Read the wire.
Lab 03KEEPALIVE every 60s with a 9-second negotiated hold? You will flap forever. The numbers have to agree.
Lab 04Step 2 of best-path beats step 3. A route-map applying LOCAL_PREF=200 makes a 5-hop path beat a 3-hop path. Every time.
Lab 07Six routers in full mesh is fifteen sessions. Six routers behind a reflector is five. The math gets ugly fast.
Lab 08Default: 90 seconds before BGP notices a dead link. With fast-external-fallover: under a second. The flag is free.
// Labs
Three parts, nine labs. A working mental model of BGP from first session bring-up through production triage.
One BGP session is dead between Vancouver and Calgary. Type neighbor 10.255.1.2 remote-as 65002. Watch the WAN heal.
Both sides have neighbor config. They reach each other. The session still dies in OpenSent. Decode the NOTIFICATION, find the fat-fingered ASN.
Enter the lab →The session establishes. Three minutes later it dies. Then it does it again. NOTIFICATION code 4. Walk through the timer math.
Enter the lab →Two paths to Toronto. The shorter one should win. It does not. Find the LOCAL_PREF override that beats AS_PATH length.
Enter the lab →Lower MED should win. It does not. Welcome to BGP folklore. Two interacting tiebreaker steps, one default behavior that surprises everyone.
Read the brief →Customer routes are leaking to peers. Stop the leak with community-based egress filters. The way every Tier-1 carrier actually does it.
Read the brief →Six routers in AS 65001. Full mesh would be fifteen sessions. Build a route reflector instead. Five sessions, full reachability.
Enter the lab →A link fails. Traffic drops for 90 seconds. Why? Enable fast-external-fallover, cut the link again, and watch the same failure converge in under a second.
3am. PagerDuty woke you up. Four faults at once. Triage by customer impact, not by what feels broken first. Write the post-mortem.
Read the brief →// How it works
Pick a topology from the labs hub. The router console boots in front of you. No install. No signup. No setup.
Not buttons. Not multiple choice. The same FRR-style CLI you would touch on a real router in production. Type the command, the protocol responds.
Every lab has a goal and a hint trail. The protocol does not care about your feelings. That is the point.
// About
From hands-in-the-rack and pulling cable to hyperscaler-grade networking to advising national telcos. The labs are written from every layer of that stack, not from a textbook.
Most networking courses are written by people who have not touched a real outage at 3am. RouterBaba is the opposite. The pedagogy comes from incidents, not slides. From watching what actually fails in a production data center, what Tier-1 carriers actually run on their backbones, and what cloud-scale networking actually demands when a single bad route-map can move terabits.
That perspective shapes every lab. Real protocols. Real packet flow. No multiple choice. Every lab is a broken topology you fix by typing real router commands. The protocol responds the way it actually responds, because the engine is RFC 4271 with the FSM, RIB, best-path tiebreakers, route reflectors, and timer math wired through end-to-end. When the lab spec says NOTIFICATION code 2 subcode 2, the wire log shows you that exact byte.
Built in public. Free. No accounts. No paywall on Lab 09. Source on GitHub. Roadmap, commit history, and the engine itself are all open.