xDPd-Virtualization is a modified version of xDPd (Extended datapath daemon) with a virtualization module (Virtualization Agent). Like other virtualization approaches (FlowVisor and VeRTIGO), the VA’s main objective is to allow multiple parallel experiments to be executed on the same physical substrate without interfering each other. The VA has been designed with the following goals:
- avoid Single Point of Failures (SPoF) through a distributed slicing architecture,
- provide an OpenFlow version agnostic slicing mechanism and
- minimize the latency overhead caused by the slicing operations.
Main characteristics of this virtualization technique are:
- Distributed slicing: virtualization operations are performed directly on the nodes
- Protocol agnostic: it does not inspect the control protocol
- Latency overhead: neither inspects the OpenFlow protocol nor needs to establish additional TLS connections
This software is based on rofl-core (https://github.com/bisdn/rofl-core) and xdpd (https://github.com/bisdn/xdpd).
The version of both is 0.3
This revision is based on rofl-core and xdpd master-0.3, so install rofl-core 0.3.
This software uses libjson-rpc-cpp (https://github.com/cinemast/libjson-rpc-cpp). Compilie and install it before compiling xDPd-Virtualization
sudo apt-get install libcurl4-openssl-dev cmake
git clone https://github.com/cinemast/libjson-rpc-cpp
cd libjson-rpc-cpp
git checkout 57026a236af2cbf54e4526f8952e1a0672567973
cd build
cmake .. && make
sudo make install
sudo ldconfig
git clone https://github.com/fp7-alien/xDPd-Virtualization.git
cd xDPd-Virtualization
checkout v0.3.1
sh autogen.sh
cd build
../configure
make
With virtualization-agent active
sudo ./xdpd -c configFileVirtualization.cfg
Without virtualization-agent. Note that in this case all configuration regarding virtualization-agent will be ignored.
sudo ./xdpd -n -c configFileVirtualization.cfg
The section config is the same and unchanged respect to xdpd. The only differences is that in this section if virtualization agent is active all controllers settings will be ignored.
In the section virtual-agent there are the general parameters for Virtualization Agent, as the virtual agent ip and port.
Slice section includes all slices with theri name, ip:port and a list of datapath where the slice will be installed. Each datapath is an array of ports. If no ports are specified, the Virtual Agent includes all ports of that switch.
Flowspace section contains the list of flowspace rules (at the moment only vlan_vid is valid). The number of priority means: bigger the number, less rule importance.
Two examples are avaible in folder ConfigFile. In the examples there are 2 tap port used to connect virtual-machine with xdpd
- 2switch.cfg: two datapaths connected each other. 3 slices and 3 flowspaces with no topology change
- 4switch-topology.cfg: 4 datapaths. 3 slices with different topology. 3 flowspaces
In the config file there are the comments that explain the different parameters.