Inter-Process Communication in a Virtualized Environment Inter Process

Selecting the correct inter-process communication method is an important aspect of ensuring effective inter-vm and intercontainer process communication. We will conduct a study of IPC methods which might be useful and fits the Qemu/KVM virtual machine and Docker container environments, and select those that fit our criteria. After implementing our chosen methods we will benchmark them in a test suite to find the ones with highest performance in terms of speed. Our results show that, at the most common message sizes, Unix Domain Sockets work best for containers and Transparent Inter Process Communication has the best performance between virtual machines out of the chosen methods. INTRODUCTION A decade ago the most you did on your mobile-phone was to make calls and send text messages to your friends. Today, the 4G network is used for everything from making calls and texting to streaming videos and playing multiplayer games. As a result, the amount of data a single user needs has increased by a huge amount[1]. Smart-phones, tablets and laptops all contribute to an increased pressure on the 4G network to handle all the data[1]. As figure 1 shows, video streaming is the largest consumer of bandwidth by a large margin. All the while, more and more devices are developed with internet connectivity which places a higher burden on a network that is not always designed for all of these devices. Figure 1. Mobile traffic forecast from Ericsson Mobility Report 2017 Motivation A 4G node consists of a number of different components to handle the connections. Depending on the traffic type some components will suffer more of the load than others, which will lead to certain components reaching their limit before the remaining components. Currently, the solution is to add a new node containing all the same components even though most of them are unnecessary at the time. To remedy this, Ericsson has decided to move certain components to virtual environments and at the same time redesign the components so they can be individually and dynamically started or stopped, depending on the current load. While this will allow for easy scaling, it may also cause issues with the communication between the components, mainly decreased data transfer rate and higher instability. In order to maintain effective communication between the virtual components, we utilize a technique called Inter-Process Communication. Purpose The primary goal of this study is to provide a good choice of Inter-Process Communication for Ericsson, that can be utilized for effective inter-vm and inter-container communication on a Linux host. Research Approach The aim of this thesis is to evaluate different Inter-Process communication (hereafter called IPC) methods. Our research question is: Which among our chosen IPC methods is the most effective, in regards to message rate and latency, when compared to TCP across: • Docker containers • Qemu/KVM virtual machines We will accomplish this by first conducting a study of what kind of IPC methods could be useful. Ericsson has provided a messaging framework called XCM with certain specifications that our methods must follow. The selected methods will be reduced down to the three best, where at least one method will be usable by a container and another by a virtual machine. We will then implement the methods in XCM and benchmark them in a test suite. Limitations Ericsson requested that we only look at IPC methods that suits Docker containers and virtual machines virtualized by Qemu/KVM.