Copyright (C) Marouen Mechtri marouen.mechtri@it-sudparis.eu
Marouen Mechtri marouen.mechtri@it-sudparis.eu
Djamal Zeghlache djamal.zeghlache@it-sudparis.eu
- Introduction
The CNG Manager provides connectivity between resources acquired from distributed cloud providers and hides heterogeneity in networking technologies. The CNG Manager controls and configures virtual gateways called CNGs. The CNG Manager manages a list of OCCI categories to configure connectivity. Since the CNG Manager is based on the OCCI specification and service model, we have used PyOCNI as the OCCI server.
The CNG Manager has a northbound interface towards client requesting connectivity and a southbound interface interacting with transport technologies through drivers.
-
The northbound interface is composed of 3 elements responsible for the configuration of gateways and links between these gateways. These elements are OCCI categories (cng, linkcng and intercng).
-
The southbound interfaces towards the underlying networking technologies require technology specific drivers (such as OpenVPN, GRE, IPsec, NAT, OpenFlow ... drivers). The CNG Manager relies on the designed drivers to remotely configure the gateways (CNGs) deployed in the infrastructure layer.
If you want to use/test the CNG Manager framework, you have to download the CNG image (qcow2 format) and to download CNG Manager source code. Use:
git clone https://github.com/MarouenMechtri/CNG-Manager.git
- Getting the CNG image file
In fact, the CNG is a virtual appliance that provides a set of network technologies and functions. The CNG also provides a RESTful interface to enable the configuration and the programmability of its features by the CNG Manager.
Download CNG image file from:
http://sourceforge.net/projects/cngmanager/files/cngimages/cngImage.qcow2/download
Download a contextualized CNG image file prepared for OpenNebula from:
http://sourceforge.net/projects/cngmanager/files/cngimages/cngImage-OpenNebula.qcow2/download
- Installing CNG Manager
sudo apt-get install python-setuptools
sudo apt-get install python-all-dev
sudo apt-get install couchdb
sudo python setup.py install
- Starting CNG Manager
sudo python start.py
sudo python start_CNG-M.py
- Network configuration example
In the example below, we aim to interconnect VMs in site 1 with VMs in site 2. Todo we have to deploy one CNG per site and after we configure them using CNG Manager framework.
As depicted in the figure below, the CNG Manager configures two gateways CNG 1 and CNG 2 deployed respectively in site 1 and site 2.
The most important information needed for configuration is:
- External IP address of CNG 1 (1.1.1.1): publicaddrCNGsrc
- Private IP address of CNG 1 (192.168.1.1): privateaddrCNGsrc
- Network address of VMs connected to CNG 1 (192.168.1.0/24): privateNetToCNGsrc
- External IP address of CNG 2 (2.2.2.2): publicaddrCNGdst
- Private IP address of CNG 2 (10.10.10.1): privateaddrCNGdst
- Network address of VMs connected to CNG 2 (10.10.10.0/24): privateNetToCNGdst
- The type of network between CNGs which can be "openvpn, ipsec and openflow": linkType
-
Configuration file: intercng.json:
{ "resources":[ { "kind":"http://schemas.ogf.org/occi/infrastructure#intercng", "attributes":{ "occi":{ "intercng":{ "name":"First Network Configuration Example", "publicaddrCNGsrc":"1.1.1.1", "privateaddrCNGsrc":"192.168.1.1", "privateNetToCNGsrc":"192.168.1.0/24", "ethernameCNGsrc":"eth0", "providerCNGsrc":"site1", "publicaddrCNGdst":"2.2.2.2", "privateaddrCNGdst":"10.10.10.1", "privateNetToCNGdst":"10.10.10.0/24", "ethernameCNGdst":"eth0", "providerCNGdst":"site2", "linkType":"openvpn", "reusable":"1", "account":"userTest" } } } } ] }
-
Network configuration using cURL commands. The first cURL command instantiates an "intercng" instance and the second command launches the configuration process:
curl -X POST -d@intercng.json -H 'content-type: application/occi+json' -H 'accept: application/occi+json' -v http://127.0.0.1:8085/intercng/ curl -X POST http://127.0.0.1:8085/intercng/8e007fe9-e535-4e1f-9794-b526fdb05d29?action=start
-
Response of the first command:
{ "Location":[ "http://127.0.0.1:8085/intercng/8e007fe9-e535-4e1f-9794-b526fdb05d29" ] }
-
To bring connectivity between CNGs down:
curl -X POST http://127.0.0.1:8085/intercng/8e007fe9-e535-4e1f-9794-b526fdb05d29?action=stop
This appliance development was supported by EASI-CLOUDS and other collaborative projects.