KVM - The Linux Kernel-Based Virtual Machine
News, Blogs and Resources on the Linux (KVM) Kernel-Based Virtual Machine

Cloonix_kvm : Another userspace for KVM

Cloonix KVM is an alternative userspace for KVM designed specifically for simple realtime network topology management.  The killer feature of Cloonix is a GUI WYSIWYG tool that allows you to drag and drop elements in a network topology.  These elements include virtual machines, routers, LAN interfaces and sniffers among others. Networking uses a rewritten slirp userspace library so performance is not great but this is the tradeoff for the convenience of modifying your topology in real time in a graphical way. Cloonix is heavily biased towards debian so installing will be a challenge if you're running a distro other than a debian based one such as Ubuntu.

Cloonix is being developed by two guys who always credit Pekka Enberg , creator of the native KVM tool as cloonix is a fork of this work.  It is designed to be practical  and simple from a code perspective and leverages other open source projects such as UML and KVM tool.

 

Cloonix Logo

 

Architecture

Cloonix is described as a set of C daemon tools and utilities used for managing virtual machines and their underlying networks.  Because this is based on KVM tool, guests must run paravirtual drivers which means that only linux guests can be run.

The uml_cloonix_switch seems to be the centerpiece of the architecture. The cloonix_kvm daemon is actually launched by the uml_cloonix_switch component as a clone. The newly spawned cloonix_kvm daemon is then monitored by the switch to check that it is up. Once the switch determines that the kvm daemon is up then the guest is actually started.  The website provides a diagram describing this on their framework architecture page here.

The other important concept is one of traffic channels of which there are three. These are

Understanding these traffic channels are key to building your network topology and you can read more by clicking on the links for each one above.

There isn't a whole lot of documentation but there's enough to understand how it works and to get started using cloonix. For more on the architecture refer to the framework architecture page.

 

 

Running the Cloonix Demo

The easy way to get started with cloonix is with a demo that's included with the latest version.  I tried this on an ubuntu 12.04 machine and had no trouble getting it up and running. I followed the instructions from the cloonix website which I found were very easy to follow.  All the downloads required for the cloonix demo can be found on this page. I did initially try to get this running on a Fedora machine but compilation failed due to missing libraries that don't exist on Fedora.

Once I had the demo installed, I changed directory to the demo_cloonix_web folder ran the ./start_demo.sh file and it launched immediately without any problems.  Below shows a snapshot of the demo during launch. You can see that virtual machines not yet started are red while the ones already started are blue.

Booting Cloonix

Once all the kvm machines are booted they should all be colored blue as shown below.

Cloonix Demo Booted

 

Once your topology is all up and running you can do things like console into your virtual machines by double clicking on them.  This will bring up a console window as shown in the snapshot below.

Cloonix console

 

You can do many other operations graphically such as drag and drop elements from the left pane into your topology and monitor usage of your network elements by right clicking on them. 

I haven't gotten as far as defining my own topology but that would be the next step after becoming familiar with the demo and how it works.

 

Final Thoughts

Cloonix was born out of a need for testing large networks and this is evident in the way it was designed and works.  If you have a need along these lines then cloonix may be just what you need.  The fact that you can modify your network topology in real time, all graphically by dragging and dropping is a very compelling feature that can save you a lot of time.  There are also plans on integrating openvswitch which would make it a really interesting tool for network testing.  It would be nice to see better support for non debian based hosts ( such as Fedora ) but I'm certain this will be fixed by the community as demand increases.

See Also

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
Type the characters you see in this picture. (verify using audio)
Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated. Not case sensitive.