Built around the concept, not the config.

Most labs teach you to follow steps. Adjacency Labs drops you into a broken network and asks you to figure out what's wrong before it tells you.

Test your troubleshooting instincts, sharpen your protocol knowledge, or just see if you can solve it.

Vendor-neutral Containerlab + FRR Runs locally No vendor images
r1 (vtysh)

These labs teach you to notice what's wrong.

A lab that hands you a script to run doesn't build the instinct you need on a real network. These are built the other way around: something is broken, you investigate, and the explanation only shows up after you've formed a theory.

Broken first

Every lab deploys already misconfigured. You diagnose it the way you'd work a ticket, with no walkthrough waiting at the bottom of the page.

The concept, not just the fix

The write-up doesn't stop at "change this line." It explains why the protocol behaves that way, so the lesson carries to configs you haven't seen yet.

Small and specific

Each lab isolates one behavior: one LSA type, one best-path rule, one redistribution trap. Three or four routers, not a sprawling topology.

Built for engineers who troubleshoot.

See exactly what a lab looks like

This is Lab 01, the same one running in the terminal above. It's free, so you can check the format and quality before buying anything.

topology.yml (3 nodes, 2 areas)
area 0 area 1 10.0.12.0/30 10.0.23.0/30 r1 r2 r3 10.3.1.0/24 10.3.2.0/24 10.3.3.0/24 should summarize to 10.3.0.0/22 AL·01

Every lab ships with the topology file, a startup config per router, and the scenario doc shown here. Deploy in one command.

scenario.md

Symptom

r3 advertises three /24 subnets into area 1. They should reach area 0 as a single summarized route. They don't.

expected10.3.0.0/22 actual10.3.1.0/24, 10.3.2.0/24, 10.3.3.0/24

Investigate before reading on

  1. Which router is actually the ABR here? Which has interfaces in more than one area?
  2. What does summarization require of the router it's configured on?
  3. Which router originates the inter-area LSAs carrying these prefixes into area 0?
  4. Where is area range configured right now?
Get Lab 01 free

Delivered by Gumroad to your email. Full scenario doc, topology, and configs.

Routing Pack 1

What's in the pack

Ten challenges, five OSPF and five BGP. Each one isolates a single behavior that trips people up in both exam labs and real troubleshooting.

OSPF
CHALLENGE 01free3 routers

OSPF Area Boundary Trap

OSPFAreasSummarizationBeginner10-20 min
INCIDENT

Three /24s arrive in area 0 where one summary route was expected.

CHALLENGE 024 routers

Stub Area Misclassification

OSPFStub AreasAdjacencyIntermediate15-25 min
INCIDENT

One router's neighbor table is empty while its interface is up and its hellos are going out.

CHALLENGE 034 routers

Stuck in ExStart

OSPFAdjacencyMTUAdvanced25-40 min
INCIDENT

Two routers can see each other, but the adjacency never reaches Full.

CHALLENGE 044 routers

Network Type Mismatch

OSPFNetwork TypesSPFAdvanced25-40 min
INCIDENT

The adjacency is Full at both ends, and nothing ever crosses the link.

CHALLENGE 054 routers

Mutual Redistribution Loop

OSPFBGPRedistributionExpert40-60 min
INCIDENT

Traffic bounces between two routers, gets through, then bounces again.

BGP
CHALLENGE 064 routers

Missing Route Reflector

BGPiBGPRoute ReflectionIntermediate15-25 min
INCIDENT

Every session is up and the hub holds every route, yet passes none of them on.

CHALLENGE 074 routers

Unreachable Next Hop

BGPiBGPNext HopAdvanced20-35 min
INCIDENT

The route arrives, sits in the BGP table, and never reaches the routing table.

CHALLENGE 084 routers

AS-Path Prepend That Does Nothing

BGPBest PathLocal PreferenceAdvanced25-40 min
INCIDENT

The customer prepends toward its backup link, and the traffic keeps arriving there anyway.

CHALLENGE 094 routers

Local Preference vs MED

BGPLocal PreferenceMEDExpert35-55 min
INCIDENT

Traffic leaves over the primary link and comes back over the backup.

CHALLENGE 104 routers

Network Statement That Won't Advertise

BGPRoute OriginationNetwork StatementIntermediate15-30 min
INCIDENT

The site networks are up, the session is Established, and BGP announces nothing.

Routing Pack 2

Ten more, numbered on from the first

Labs 11 to 20, in the same shape: virtual links, authentication, filter lists, reference bandwidth and default origination on the OSPF side; aggregation, communities, conditional advertisement, AS path loop prevention and administrative distance on the BGP side.

OSPF
CHALLENGE 114 routers

Virtual Link Across the Transit Area

OSPFVirtual LinksAreasAdvanced30-45 min
INCIDENT

The remote site can still reach head office, but nothing at head office can reach the remote site.

CHALLENGE 123 routers

Authentication Half Applied

OSPFAuthenticationAdjacencyBeginner10-15 min
INCIDENT

One router dropped off the network after a security change, and its interface never went down.

CHALLENGE 133 routers

Filter List Pointing the Wrong Way

OSPFFilter ListsAreasIntermediate15-25 min
INCIDENT

A test subnet everyone thought was hidden is reachable from production, and the test rack has lost its route back.

CHALLENGE 143 routers

Two Links, One Cost

OSPFReference BandwidthCostIntermediate15-25 min
INCIDENT

Half the traffic to the data centre is slow, and it changes which half from one day to the next.

CHALLENGE 154 routers

The Default From the Dead Edge

OSPFDefault OriginationExternal LSAsAdvanced25-40 min
INCIDENT

Nothing at the site can reach the internet, and both internet routers say their configuration is unchanged.

BGP
CHALLENGE 163 routers

The Aggregate That Leaked

BGPRoute AggregationPrefix LimitsAdvanced25-40 min
INCIDENT

The provider session keeps dropping and coming back, and the site is unreachable from outside while it is down.

CHALLENGE 173 routers

The No-Export That Exported

BGPCommunitiesRoute MapsExpert35-55 min
INCIDENT

A partner says they can see a prefix of ours that is supposed to stop at our provider.

CHALLENGE 183 routers

The Backup That Never Stops Advertising

BGPConditional AdvertisementRoute MapsAdvanced25-40 min
INCIDENT

Traffic from outside is arriving over the backup circuit while the primary is up and healthy.

CHALLENGE 193 routers

Two Sites, One AS Number

BGPVPNAS-Path Loop PreventionAdvanced20-35 min
INCIDENT

Two sites of the same customer stopped being able to reach each other, and the provider says it is advertising both.

CHALLENGE 203 routers

The Two Tables Disagree

BGPAdministrative DistanceRIBIntermediate15-25 min
INCIDENT

A neighboring network became unreachable, and BGP says the route to it is fine.

Routing Pack 2 in full

Sold separately from the first pack, and neither needs the other.

How each lab works

Same six-step shape every time, so you spend your time on the networking, not on the format.

1

Deploy

One command spins up the topology in Containerlab, already broken.

2

Observe

Check the routing table or adjacency state and compare it to what's expected.

3

Investigate

Work through the scenario doc's questions. No answers given yet.

4

Fix

Change the configuration you think is wrong, on the router you think owns it.

5

Verify

./labctl verify tests the behavior rather than the config text, and names the condition still unmet.

6

Understand

The reveal explains the mechanism, why it behaves that way, and how the same concept appears on production network platforms.

What this isn't

A configuration lab and a troubleshooting challenge ask for different work, even when the topology looks the same. Here is what changes at each stage.

Traditional configuration lab Adjacency challenge
Build the topology Topology is already broken
Follow configuration steps Decide where to investigate
Expected commands provided Expected behavior provided
Match the configuration Restore the behavior
Learn the syntax Understand the mechanism

Pricing

One price per pack, everything included. No account, no subscription. The two packs are sold separately and neither needs the other.

$29 one-time

All ten labs, yours to keep.

  • 10 Containerlab scenario labs (5 OSPF, 5 BGP)
  • Topology files and broken starting configs for every router
  • Scenario docs with investigation questions before the reveal
  • Concept write-ups that explain the mechanism, not just the fix
  • Instant download after checkout
Get the pack, $29
what you download
routing-pack-1/
├── README.md
├── LICENSE.txt
├── lab-01-area-boundary-trap/
│ ├── topology.yml
│ ├── topology.svg
│ ├── scenario.md
│ ├── reveal.md
│ ├── lab.html
│ ├── labctl
│ ├── configs/
│ └── faults/
├── lab-02-stub-misclassification/
│ └── ...
├── ...
└── lab-10-network-statement-mismatch/
└── ...
$29 one-time

Routing Pack 2: labs 11 to 20, yours to keep.

  • 10 more Containerlab scenario labs (5 OSPF, 5 BGP)
  • Topology files and broken starting configs for every router
  • Scenario docs that give away as much as the difficulty allows, and no more
  • A verifier that checks the routing tables and then sends traffic
  • Concept write-ups that explain the mechanism, not just the fix
  • Instant download after checkout
Get Routing Pack 2, $29
what you download
routing-pack-2/
├── README.md
├── LICENSE.txt
├── lab-11-virtual-link-through-stub/
│ └── ...
├── ...
└── lab-20-rib-failure-static-wins/
└── ...

Questions

What is needed to run these?

Docker and Containerlab on any Linux host or VM. On a Mac that is a small Ubuntu VM through Multipass, which the Mac track in Getting started sets up. A laptop with 4 GB of free RAM is enough. No physical gear, no EVE-NG license, no vendor images to source.

Does this work on Windows?

Yes, through WSL2, in ten to twenty minutes; longer the first time on a machine that has never had WSL2 or a VM. WSL2 runs a real Linux kernel, so Docker and Containerlab behave as they do on a Linux host, and Docker Desktop is not required. The Windows track in Getting started walks through it.

Is prior OSPF and BGP knowledge assumed?

Basic familiarity helps. These assume you know what the protocols are and roughly how they work. The labs are aimed at the gap between passing the exam module and catching this on a real network.

Is this useful for CCNP or CCIE study?

Yes. The scenarios are chosen because they're the kind of behavior that trips people up in both exam labs and production troubleshooting, not exam trivia.

Why FRR instead of Cisco IOS?

FRR runs in a plain Docker container with no licensing, so the labs work on anything. The underlying protocol mechanics are standards-based and transfer directly across platforms, while exact syntax and some implementation details differ between FRR, IOS, Junos, EOS, and other network operating systems. The labs pin FRR 10.4.5 (quay.io/frrouting/frr:10.4.5), which runs on Intel and Apple Silicon alike.

Do you add new labs over time?

New scenario packs are released separately as they're built. This page lists what's current.

Built by a network engineer, for network engineers.

Adjacency Labs grew out of the way real network problems are solved: start with the symptom, inspect the state, form a theory, make a change, and verify the result. The goal is to build troubleshooting judgment, not teach another sequence of commands.