This chapter will cover the possibilities of virtualization of network devices for development, testing or teaching purposes. Gradually, tools from the simplest information and learning to professional tools that will be used for analysis and the production of productive resources.
Mininet is a computer network emulator capable of creating virtual end stations, virtual switches, virtual lines and software-defined network controllers. Yippee available only for a Linux operating system whose kernel is dependent.
Virtual switches, which it creates, supports the OpenFlow protocol, whereby software-controlled network controllers control overrides in overrides.
2.1.1 Principle of operation
It is a very simple and powerful tool designed primarily for research, development, testing or teaching software-defined networks, since it focuses primarily on virtualization of Open vSwitch and OpenFlow.
In its area, however, it delivers high performance with very little system resources. It was tested, it can run up to 4096 virtual switch instances on one physical host. However, it is not designed to run in production environments.
Mininet is developed by the community as open-source software available on Github. Its predominant part is written in the Python programming language, except some utilities written in C. Additionally, it provides an application program interface (API) for Python, which is easily expandable with new specific modules.
To create virtual switches, use the Linux operating system names or LXC linux containers, if available. The minimum system requirement is only the 10.0.0.1 Linux kernel that supports namespaces. For each end station has a special user namespace or LXC container. The switches are typically located in the main namespace.
Only using the User-space switch can be placed in separate names spaces. When using Open vSwich switches, this is not allowed. All virtuals switches and terminals are connected by virtual ethernet lines (veth).
2.1.2 Practical use
Mininet’s main advantages are its easy installation and very simple operation. The installation options are three: a pre-configured virtual machine with Ubuntu operating system and installed by Minette, which can be run on almost any current hypervisor; installation as a package on the Ubuntu operating system, the repositories of which are available as standard, or the downloaded source code from Github and its subsequent compilation.
After installation, the minitower is immediately ready to run without the need for additional configuration. For the first test, just run the following command, which it automatically creates a simple network topology consisting of one switch and two endpoints stations.
There are two ways to create network topology in Mininet. The first way is determine the type and size of the topology using its name and the numbers passed to the parameter at starting Mininet.
The basic topology when running without a parameter has already been described. You can also choose from three topologies: single, tree and linear. Picture no. 2.1 are these topology shown.
The topology of the single creates one override and the number of guests N, and this number is passed in the parameter. All end stations are connected to this switch.
In addition to these basic topologies, we can of course define our own and much more specific, which are created as Python classes. In addition to the layout, various line characteristics such as, for example, permeability or delay. Following The code contains a short demo of your own topology.
Any SDN controller that supports Open Flow can be connected to the Mininet. Specify which controller to use is done by setting the appropriate parameter to its IP address and port when running Mininet. If no controller is specified, the default NOX controller, which is included in the Mininet, is used.
For users who do not have Python programming experience, Mininet provides a graphical utility called Miniedit that can build a custom topology by placing network elements on the desktop and then linking them to virtual lines with just dragged mice. This tool generates the appropriate Python code corresponding to the graphics.
2.2 Virtual network on the hypervisor
This chapter is focused on creating virtual network devices and lines called own fist “with the help of a hypervisor for virtualization of end and network devices and operating system tools for creating virtual lines.
2.2.1 Network elements operating systems
Network devices are basically also hosts on which the operating system is running. Their the hardware, as with desktop desktops or servers, consists of a processor, operating memory, storage, and above all from fast network interfaces.
The biggest difference rests on the used operating system optimized on network devices only for network communication tasks.
Unlike desktop or server operating systems on which user applications of different types are operated, operating systems on network elements focus only on network communication services, such as packet switching, routing, firewall, load distribution etc.
It is often the operating system of these devices intended only for a small part or even just one of these rollers.
Because the virtualization of server and desktop operating systems is the last years has moved very forward, bringing considerable improvements, especially in the area of performance virtual machines and also the overall loss of power when used, they began also to deploy operating systems for virtual network devices where there is sufficient performance critical for fast network operation.
Custom operating systems for virtual network devices offer both large players in the field Cisco and Juniper network technologies, as well as various small and development communities open software. Cisco provides an operating system for the virtual router CSR 1000v and virtual ASAv firewall.
In this virtual experiment experiment, its designer is practically free hand is limited only by hardware resources, or by licenses for proprietary software. It is also important to choose the right technologies that are compatible with the platform used.
Some tools are compatible with more platforms, such as for example VMWare Workstation or Open vSwitch. Others are for a specific platform, such as KVM-QEMU in Linux or the proprietary Hyper-V hypervisor for Microsoft Windows.
As a tool for the following demonstration, the following technologies were chosen: host operating Linux system in Ubuntu 16.04 distribution, KVM-QEMU for end-server virtualization and routers, Open vSwich to create virtual switches and virtual technology Ethernet lines included in Linux.
As already mentioned in chapter 1.3.1, hypervisors are divided into two types: running under the operating system and the routine of the operating system. Kernel-based technology However, Virtual Machine (KVM) falls into both of these categories. After installation, KVM is in the kernel of the Linux operating system introduced the kvm.ko module, which converts it into a hypervisor, which is able to run virtual machines as separate Linux processes.
However, the core of the system is able to manage only some system resources, therefore you must use the QEMU user program that provides hardware emulation and virtual machine management. The Linux kernel-based Linux operating system and in cooperation with the QEMU program can already be referred to as a hypervisor.
KVM technology supports only one way of software virtualization, which is hardware-assisted virtualization. For this reason, KVM-QEMU is not included the Linux operating system is also required by a processor that supports it.
Since KVM performs host-level host-level virtualization, QEMU takes care of virtualization management in the user environment and can be operational the system may continue to be used for purposes other than virtualization, this technology can not be do not even fit into one of the hypervisor categories.
This feature is great if it is the need for high performance virtualized devices and the host system other specific requirements that a conventional bare metal hypervisor does not support.
For example, the OpenStack cloud platform, which is used in the operation of private cloud data centers, is used by the KVMQEMU hypervisor for virtualization. Examples of using OpenStack will be described in more detail in the following chapter.