# Cellular and Virtualization Technologies for UAVs:
## 3 Testbed Components Description
### Virtualization in UAVs: The Power of Containers in Aerial Networks  
As explained in Section 3.1, UAVs will carry as their payload RPi devices in order to execute their movement instructions (sent from a remote GCS/controller), provide services to the users of the aerial network, such as those mentioned in Section 2 like rural monitoring, or execute specific applications depending on the mission type that has to be carried out. However, RPIs are generally considered resource-constrained devices in the context of NFV environments, since the amount of computational resources that are available to the device are considerably lower as compared to other equipment types such as Mini-ITX or servers. In consequence, it is desirable to save as many resources as possible when providing services and/or running applications in order to increase the available space to run new functionalities and/or scaling up operations without having to increase the number of devices in the network. Moreover, battery constrains are also a source of issues in aerial networks since RPis are forced to use a finite (and small) battery that will drain over time until its depletion, so consuming less resources can increase their operative life-time before requiring a substitution [49]. However, hypervisor-based solutions like Virtual Machines (VM) (frequently used in NFV) are computationally intensive, as they need to imitate a full physical infrastructure to provide a single OS with its own kernel. Therefore, containerization can be regarded as a more adequate solution in these situations, since they run over the host Operating System to build its necessary components through kernel instructions, saving computational resources, as no hypervisor is required for the operation. Hence, aerial networks can benefit from container technology to save resources (and potentially battery life-time), making them good candidates for their implementation for service provisioning. Nevertheless, in order to build an NFV-driven (or close) solution, it is mandatory to have a control plane able to manage and orchestrate all of the containers needed for the softwarization of an application or network service, including their instantiation, life-cycle management, and logical connectivity. In this context, the Kubernetes tool (i.e., K8s) can be considered as an adequate solution for these tasks. As it has been previously described in Section 2.2, Kubernetes is an open-source system for the automatic deployment, management, and scaling of containerized applications. This platform allows its users to easily deploy container images inside a cluster, which can be composed of several hosts that provide the infrastructure and resources to run the containerized applications. This container orchestrator provides several functionalities that assist the deployment of applications inside an infrastructure, including the automatic rollouts and rollbacks, ensuring that newer versions do not leave the application unavailable; self healing abilities, achieved by restoring or re-deploying containers that failed during the execution of an application; IPv4/IPv6 dual stack, horizontal scaling, which can even be automated based on CPU usage, among others. All these functionalities can be achieved thanks to its reliance on container technologies: K8s uses different container runtimes (particularly containerd (Containerd: [[https://containerd.io](https://containerd.io)]([https://containerd.io](https://containerd.io)) (accessed on 27 April 2020)), CRI-O (CRI-O: [[https://cri-o.io](https://cri-o.io)]([https://cri-o.io](https://cri-o.io)) (accessed on 27 April 2020)), and Docker) to instantiate container-based applications, which are usually lighter than VMs since they are built on top of the kernel of an OS (contrary to hypervisor-based solutions where the software fully imitates the physical infrastructure where the VM is running).