Computer networks environment and VMs

Instructions on setting up the “Computer Networks” course environment for the class and the project.

Image credit: Unsplash

The environment for the Computer Network course is centered around the use of the IMUNES (Integrated Multiprotocol Network Emulator/Simulator), which is a versatile tool for creating realistic virtual network topologies. The course utilizes a specific version of IMUNES, identified by the commit 1a9d4834baca6e31743db9e3acd2b461290e00e0, which is significant because it’s the last version to support Open vSwitch, a multilayer virtual switch.

For detailed instructions on how to install and use IMUNES, students should refer to the official IMUNES GitHub repository and the IMUNES manual, which provide comprehensive guides and documentation. Here we provide a short version.

Using a virtual environment for a Computer Network course is an excellent way to provide a consistent and controlled setting for both learning and assessment. In this blog post, we’ll guide you through the process of downloading and configuring a virtual machine (VM). This VM will serve as the primary environment for your Computer Network course and the exam project.

Step 1: Choose Your Virtualization Software:

To begin, select a virtualization platform that supports both x86-64 and ARM64 architectures. QEMU is a versatile and open-source option that fits these requirements. If you are working on a Linux platform, you can use the libvirt to run the VM through KVM. On Windows, software like VirtualBox or VMWare are solid solutions. On a MacOS platform, we found UTM to work as expected.

Step 2: Download the Virtual Machine Images

Download the appropriate VM images for the architectures you need. You can find images with all the required software already installed here. Otherwise, you can download a clean image from the official websites of popular Linux distributions like Ubuntu or Fedora and follow the installation steps shown in the GitHub repository. Make sure to select the correct version for your host architecture.

Step 3: Set Up the Virtual Machines

With your virtualization software installed, you can now set up your VM. We recommend at least 2 virtual cores and 4 GBs of RAM. The provided VM should work both on UEFI and BIOS firmware. Secure Boot may stop the VM from executing, as it lacks a signature.

The default credentials are:

  • Username: user
  • Password: retiunimi

Step 4: Snapshot and Backup

After setting up the VM, take snapshots or backups. This ensures that you can quickly restore the VM to their configured state if needed.


Notes on the provided VM

The VM we provide is based on NixOS and is already configured to use Nix flakes. If you need to use a command that is not already installed in your system you can search for its package using nix search nixpkgs <name of the package> and you can temporarily make it available in you shell using nix shell nixpkgs#<name of the package>.

For example, to use nslookup you can load it using the command nix shell nixpkgs#dnsutils. If a command is missing, the shell should give you a hint no which package contains it, in this case dnsutils or busybox.

Notes for NixOS users

If you are already using NixOS or want to build the images yourself, you can find the relevant NixOS modules and VMs derivations in the SESAR Lab Teaching repository https://github.com/Sesar-Lab-Teaching/Computer-Networks.

Filippo Berto
Filippo Berto
Research Fellow

My research interests include Cybersecurity, Computer Networks, Edge-Cloud Computing and Distributed Systems.