BGP Labs: Improvements (September 2024)
I spent a few days in a beautiful place with suboptimal Internet connectivity. The only thing I could do whenever I got bored (without waiting for the Internet gnomes to hand-carry the packets across the mountain passes) was to fix the BGP labs on a Ubuntu VM running on my MacBook Air (hint: it all works).
Big things first. I added validation to these labs:
- MD5 Passwords and GTSM
- Use BGP Timers and BFD to Speed Up BGP Convergence
- BGP Route Aggregation
- EBGP Sessions over IPv6 LLA Interfaces
- Establish an IBGP Session
- Build a Transit Network with IBGP
- Use BGP Route Reflectors
- Using No-Export Community to Filter Transit Routes
More (behind the scenes) validation goodies: I changed the old validation tests to use the new(er) validation plugin architecture. That made them easier to maintain and will result in better diagnostics once I fix a few additional things in netlab release 1.9.1.
The next thing that has been stuck on my to-do list for way too long: the labs should not rely on router loopback prefixes advertised as IBGP routes. FRRouting hates that idea, forcing me to use an ancient FRRouting version in the lab exercises. As it’s bad form to advertise /32 prefixes into BGP anyway, I decided to redo all labs that relied on that feature. Now you can run BGP labs with the latest FRRouting release and get cool stuff like BGP debugging printouts in the vtysh shell.
While cleaning things up, I also removed the old topologies using custom device configurations to configure Cumulus Linux devices, giving you more options for the external routers. Most labs now require netlab release 1.6.4. That release has been around for almost a year, and it makes no sense to support older releases.
Finally, as I had to redo most labs with FRRouting containers (I’m not fluent enough in SR Linux; FRRouting is my only option if I want to run labs on a Macbook), I discovered nasty bugs in the Use BGP Timers and BFD to Speed Up BGP Convergence, Build a Transit Network with IBGP, and BGP-Free Core in a Transit Network labs. The FRRouting daemons needed to implement the required device configuration were not started, making it (almost) impossible to complete the lab exercise. That should be fixed now; all labs should work with FRRouting containers (apart from the TCP-AO lab where we’re probably still waiting for Linux kernel support).
On a personal note, the “missing daemons” bug made me sad. It’s been around for at least a year, and nobody reported it. Does that mean that nobody is using the labs, that everyone gave up before getting to IBGP, that nobody is running the labs with GitHub Codespaces (where FRRouting is the best option), or that you simply didn’t find it worthwhile to report the bug?
I think the first one.
Fair enough. Thanks for letting me know.
I'm going with Option 5: Still on my to-do list. I've done a bunch of the older labs but have not had the time to get to any lately. I appreciate everything you're doing with these labs.
I have just started the labs. I used to work with one of the vendors earlier and had access to various labs to play around. But since I switched jobs, it was really difficult to practice and keep up with networking and I was desperately looking for something preferably opensource to get started with along with a directed approach. These labs really are a blessing in an industry where most of the information is hidden behind paywalls. It had taken me some time to setup the labs, but once that barrier was crossed it was such a smooth experience where I could focus on the topics at hand and seldom worried about the underlying infra. I really hope the labs continue even though I might have a lot of catching up to do. Thanks for doing what you do, Ivan :)
Thank you! Will keep them coming ;)