Skip to content

Summary

Welcome to the Routing Configuration Lab of Spring 2025.

As you have learned routing protocols (BGP, OSPF, RIP, etc.) in the Computer Network course, we want to give you a chance to practice what you have learned and get some feeling about how to operate a real network.

You have to complete three labs in this course. We provide guidelines and solutions for the first two labs, so they are not mandatory and not graded, but you are expected to finish them to get some familiarity with the lab environment, learn how to configure routers, and review knowledge of routing protocols (BGP and OSPF) in case you have unluckily forgotten them. The third lab is mandatory and graded (10% of the course grade).

In each lab, you are given a network topology consisting of several switches with empty routing configurations. They are disconnected from each other at the beginning. You need to configure them to distribute routing messages, populate routing tables and finally get connected. You have to handle different network topologies and routing protocols in three labs.

  • In lab 1, you need to connect routers within different ASs (Autonomous Systems) using the BGP protocol.
  • In lab 2, you need to connect routers within the same AS using OSPF protocols and tune the routing decisions with custom path costs.
  • In lab 3, you will combine what you have learned in the previous two labs and configure routers in a larger network topology with both inter- and intra-AS links.

ContainerLab

ContainerLab is a useful networking learning and experiment tool. It builds on the mature ecosystem of containers and the growing popularity of containerized Networking Operating Systems. Instead of operating switches and routers connected by physical links, we now operate virtual switches and routers, each of which is encapsulated in a container image, and connected by virtual links emulated by the operating systems.

ContainerLab helps us freely learn and explore network design and administration without the need of buying expensive hardware and cables. Meanwhile, we can easily build any possible topology and configure devices in any way we may imagine and restore the whole system with single one command even if we mess everything up.

Installation

To complete the labs, you need to obtain the following materials:

ContainerLab

Native Installation

  • Linux distributions: You could install Docker and ContainerLab following their official guidelines.

  • Windows Subsystem for Linux (WSL): Despite ContainerLab is claimed to support WSL by its document, students encountered many issues in past years on WSL, so we recommend using virtual machines on Windows.

Virtual Machines

  • Windows or macOS on Intel chips: Use VirtualBox / VMWare / Hyper-V or any virtualization software to create a Linux virtual machine supported by ContainerLab. We prepare a pre-configured Ubuntu 22.04 Virtual Box image which you can download from Tsinghua Cloud.

  • macOS on Apple Silicon: Due to the lack of ARM image for containered Network Operating Systems, ContainerLab doesn't provide a native arm version, making an x86 to arm translator (that is, QEMU) essential. You may have a try on UTM. However, due to the performance penalty of emulation, it is not recommended.

  • You may also use the vagrant file to build a virtual machine if you are familiar with vagrant.

Note

Username and password of the pre-configured images are both vagrant.

Note

You need to assign 4 cores and 8 GB of memory to the virtual machine to work smoothly with ContainerLab. You can add more cores and memory if you have to increase the launch speed of labs.

cEOS image

You need to import the image into docker before using it.

Bash Session
docker import cEOS-lab-4.29.2F.tar ceos:4.29.2

Check that the image is successfully imported.

Bash Session
❯ docker image ls | grep ceos
ceos                                                4.29.2         f2b52de69147   18 hours ago   2.01GB

Warning

Students reported that cEOS 4.29.2F doesn't work on WSL. You may use 4.28.6 (you may download it from Tsinghua Cloud) instead and update the cEOS version specified in the start.clab.yaml file in each lab.

YAML
1
2
3
4
topology:
    kinds:
        ceos:
            image: ceos:4.28.6

Validation

You can download the lab materials from GitHub and try to launch the first lab to validate the environment.

Bash
git clone github.com:minhuw/router-lab-public
cd router-lab-public/bgp && sudo containerlab deploy -t start.clab.yaml

Note

If you are using pre-configured images, you will find the router-lab-public directory on the home directory of the vagrant user. Remember to run git pull origin main to update the repo before you start the lab.

Note

You can monitor the start progress using docker stats.

Please contact TA(s) as soon as possible if you encounter any problems during the installation.

Authors

Contact TA(s) if you have any questions.