# Placement algorithm for NFV orchestrators

## Introduction

Network function virtualization introduces the different way to architect networks. This technology aims to convert different network hardware with specific functions as a virtual services that are running on the general purpose servers, network nodes such that those services could be moved to a different locations in the network instead of needing the installation of new equipment. To make available the transition from the various complex proprietary hardware to easy managed software (virtual functions/services) on the servers, Network Function Virtualization platforms as OpenStack appeared. Frequently automation of NFV operations closely relates to an orchestration. And in this post you may find the program that performs the placement of orchestrators in the specific topology.

## Link to download:

## In this post we provide a link for an implementation of placement algorithm for VNF orchestrators.

In practice, the most common approach to solve the type of such problems, is described in method that iscalled “Lloyd’s Algorithm”. This method could give an optimal solution with NP-hard complexity. On each iteration the the center of mass of the k domains that are represented by k orchestrators is a solution. These centers are used for a re-clustering. The iterations repeat until the algorithm is converged. We combine “Voronoi iteration” solution with the Relative Point Centrality (RPC). Where:

- “Voronoi iteration” – is a partitioning of a plane into regions based on distance to points in a specificsubset of the plane.
- relative point centrality was suggested by Beauchamp.

## How to choose the topology:

The program can generate a topology based on the described in the paper(Augmenter la disponibilité des orchestrateurs VNF-Dmytro Shytyi et Luigi Iannone) model or you may feed the topology in the csv file in the next format:

*Note that nodes (NODE1 and NODE2) can have as digits as characters in the name. Latency between nodes is a numeric value.

## Dependecies:

ARCHLINUX:

– pacman -S tk

– yaourt python-networkx-1.11 1.11-1

– yaourt install decorator

– yaourt python-numpy

– sudo pip install “matplotlib<3"

UBUNTU:

– #apt-get install python3-tk

– #apt-get install python3-networkx

– #apt-get install python3-venv

– #pip install “matplotlib<3"

## Screenshots

Initial window where we set the parameters:

The topology is displayed in the screen below:

Result of the placement is presented below. In the appeared rectangle you may find the place(name of the nodes) where you should place the orchestrators:

Thank you for reading!