Software Installation and Lab Setup

It’s easiest to use the IS-IS labs with netlab. Still, you can use most of them (potentially with slightly reduced functionality) with any other virtual lab environment or on physical gear. For the rest of this document, we’ll assume you decided to use netlab; if you want to set up your lab in some other way, read the Manual Setup section of the BGP Labs documentation.

Warning

IS-IS labs work best with netlab release 1.8.4 or later. If you’re using an earlier netlab release, please upgrade with pip3 install --upgrade networklab.

Select the Network Devices You Will Work With

You can run FRRouting in all netlab-supported virtualization environments (VirtualBox, libvirt, or Docker)2, and if you want to start practicing IS-IS with minimum hassle, consider using FRRouting for all lab devices. You can even run FRRouting containers on Macbooks with Apple silicon.

If you’d like to use a more traditional networking device, use any other netlab-supported device for which we implemented basic IS-IS configuration as the device to practice with1. I recommend Arista cEOS or Nokia SR Linux containers; they are the easiest ones to install and use.

Tip

If you plan to run the labs in free GitHub Codespaces, you MUST use container-based network devices like Arista cEOS, FRR, Nokia SR Linux, or Vyos.

Select the Additional Devices in Your Lab

Some labs use additional routers – preconfigured devices with which your routers exchange routing information. You won’t configure those devices, but you might have to log into them and execute show commands.

The default setup uses FRRouting for additional routers; we also generated all the show printouts with FRRouting. Alternatively, you can use any other device for which we implemented basic IS-IS configuration as additional routers. Additional limitations (should they exist) are listed under the Device Requirements section of individual lab exercises.

Select the Virtualization Environment

Now that you know which network device to use, check which virtualization environment you can use. Running IS-IS labs in a free GitHub Codespace is an excellent starting point, but if you decide to build your own infrastructure, containerlab is easier to set up than libvirt, with virtualbox being a distant third.

Now for a few gotchas:

  • You can use virtualbox if you want to run the lab devices as virtual machines on your Windows- or MacOS laptop with Intel CPU, but even then, I’d prefer running them in a Ubuntu VM.
  • Your hardware and virtualization software (for example, VirtualBox or VMware Fusion) must support nested virtualization if you want to use libvirt on that Ubuntu VM.
  • You don’t need nested virtualization to run Docker containers unless you’re using the crazy trick we’re forced to use for Juniper vMX or Nokia SR OS – they’re running as a virtual machine within a container.

Software Installation

Based on the choices you made, you’ll find the installation instructions in one of these documents:

Once you have completed the software installation you have to deal with the stupidities of downloading and installing network device images (Virtualbox, libvirt, containers) unless you decided to use FRR, Nokia SR Linux, or Vyos.

I would love to simplify the process, but the networking vendors refuse to play along. Even worse, their licenses prohibit me from downloading the images and creating a packaged VM with preinstalled network devices for you3. Fortunately, you only have to go through this colossal waste of time once.

Setting Up the Labs

We finally got to the fun part – setting up the labs. If you’re not using GitHub Codespaces:

  • Select a directory where you want to have the IS-IS labs
  • Clone the isis GitHub repository with git clone https://github.com/bgplab/isis.git. GitHub UI gives you other options in the green Code button, including Download ZIP

After you get a local copy of the repository:

  • If needed, edit the defaults.yml file in the top directory to set your preferred network device and virtualization environment. For example, I’m using the following settings to run the labs with Arista EOS containers while using FRRouting as the external IS-IS routers:
device: eos             # Change to your preferred network device
provider: clab          # Change to virtualbox or libvirt if needed

groups:
  external:
    device: frr         # Change to your preferred external router
  • In a terminal window, change the current directory to one of the lab directories (for example, basic/1-simple-ipv4), and execute netlab up.
  • Wait for the lab to start and use netlab connect to connect to individual lab devices
  • Have fun.
  • When you’re done, collect the device configurations with netlab collect (if you want to save them) and shut down the lab with netlab down
  • Change the current directory to another lab directory and repeat.
  • Once you run out of lab exercises, create a new one and contribute it with a pull request ;)

  1. Most network devices require an x86 CPU. You must run the labs on a device with an x86 CPU (Intel or AMD) to use them. 

  2. There is no official FRR virtual machine image – netlab has to download and install FRR on a Ubuntu VM whenever you start an frr node as a virtual machine. Using FRR containers is faster and consumes way less bandwidth or memory. 

  3. I’m not going to pay a lawyer to read their boilerplate stuff, and I’m definitely not going to rely on my amateur understanding of US copyright law.