NETinVM

A tool for teaching and learning about systems, networks and security

Authors: Carlos Perez & David Perez
Date: 2024-03-07

Contents

What is NETinVM?

NETinVM is a single VMware virtual machine image that contains, ready to run, a series of Kernel Virtual Machine (KVM) virtual machines which, when started, conform a whole computer network inside the VMware virtual machine. Hence the name NETinVM, an acronym for NETwork in Virtual Machine. NETinVM has been conceived mainly as an educational tool for teaching and learning about operating systems, computer networks and system and network security, but other uses are certainly possible.

Documentation

NETinVM documentation is readily available as a separate document: "NETinVM-KVM documentation". Additionally, this paper (2016) at Springer Plus and freely available at http://rdcu.be/xxqG describes and analyzes how it has been used in different teaching/learning scenarios. A more focused use case using the newer KVM-based NETinVM is described in "Using a nested virtualization tool for teaching VPN fundamentals" (2024), published in the Cluster Computing journal (open access). Finally, in July 2018, Carlos Pérez has started a personal blog (in spanish) to share experiences about using KVM at the University of Valencia.

Contact Information

You can contact us at: info@netinvm.org

Download

Current version (December 29, 2022)

  • VMware image: 2022-12-29_vmware_zip (ZIP file, 4,3 GB)
    • MD5: 5ba087d258cdbe7560b2c85047b0563f
    • SHA256: 2f9852b814b431398dbcb95c360db3e29de2716320b552183f8800b0833c70d5
  • KVM image (suitable for Libvirt): 2022-12-29_kvm_zip (ZIP file, 4,3 GB)
    • MD5: c701c0197bec8939dbd5a34b9609afcb
    • SHA256: a61e738902e68710f2d7bcb28df407a135ef2645b800534c75bd423b39a4dc45
  • Known issues
    • KVM terminal size changes are not detected automatically. (A simple ENTER is enough to cause detection).
  • Changelog from previous version:
    • Debian 11 is used (instead of Debian 10) for both base and the KVM machines.
    • "virtiofs" is used (instead of "9p") to share the "shared" directory among the KVMs and "base"

Previous version (July 15, 2020)

  • VMware image: kvm_2020-07-15_vmware_zip (ZIP file, 3,4 GB)
    • MD5: a3ca7207eade97e44458b9c0aca3275c
    • SHA256: b1420f9d881d37fe2ed8877ef5c6082142c4eeb85f531a4146e9872af424f281
  • Known issues
    • KVM terminal size changes are not detected automatically. (A simple ENTER is enough to cause detection).
  • Changelog from previous version:
    • Debian 10 is used (instead of Debian 9) for both base and the KVM machines.
    • KSM is now used to make the system more memory efficient.
    • Shortcuts have been updated to honour KDE defaults when possible.

Older versions

July 23, 2018

  • VMware image: kvm_2018-07-23_vmware_zip (ZIP file, 2,8 GB)
    • MD5: d17342c845841786a2d65f531d34a4f8
    • SHA256: 12fd6d2c1517d515cad4110b2ab690a9989b2d6727ab7c73801a015c9583a4ec
  • Known issues
    • KVM terminal size changes are not detected automatically. (A simple ENTER is enough to cause detection).
    • Rebooting a KVM machine gets the machine paused. So, it is recommended to shutdown KVM machines and then start them again.
  • Changelog from previous version:
    • Open vSwitch is used (instead of Linux bridges) for NETinVM networks.
    • Debian 9 is used (instead of Debian 8) for both base and the KVM machines.
    • KDE 5 is used in base (instead of KDE 4).
    • 'fw' KVM machine no longer does SNAT.
    • KVM machines now use a second disk for swap, so that back up and restore is more efficient.

November 3, 2016

  • VMware image: 2016-11-03_vmware_zip (ZIP file, 2,2 GB)
    • MD5: 3396d92f07d52471fa65b614086de396
    • SHA256: 922c5674f27bbc4612c3c1558ffc89c922077cbebdc682cf827a919bcdf514a1
  • Warning
    • This version (and all previous ones) use User-mode Linux for nested virtualization. For this reason, current documentation is no longer applicable. Documentation for UML versions of NETinVM is still available: NETinVM-UML documentation
  • Known issues
    • It is not recommended to use "shutdown -r now" in the UML machines. Instead, it is recommended to use "shutdown -h now" and, then, start the UML machine with "uml.sh".
    • When UML terminals are resized, it is necessary to execute "resize" in the corresponding terminal.
  • Changelog from previous version:
    • UML operating system is now Debian 8
    • base operating system is Debian 8
    • "Kill all" added to facilitate cleanup when "Shutdown all" leaves UML processes running.