Add New Page: You are not allowed to add pages Select section/namespace. New page title.

VirtualBox and Virtual Meshing

These instructions cover how to deploy Commotion as multiple guest VMs under a single VirtualBox host, with a virtual mesh between the nodes. Simulating mesh-level operation effectively requires a bare minimum of 2 nodes deployed on the same virtual network, with one node operating as logical gateway to the Internet and the other node as a repeater. 3 nodes is ideal, however, for broader test coverage of mesh-level operations.

Furthermore, you can create an additional VM (or VMs) to simulate a user's device (Windows, Linux, etc) connecting to a virtual Access Point (AP) on one of the nodes.

Under VirtualBox, a shared private network between multiple VMs can be accomplished via the “Internal Networking”: or “Host-only Networking”: modes. The instructions provided below will use the “Internal Networking” mode.

Do note that VirtualBox only supports guests compiled for the *x86* platform. Furthermore, and as of this writing, it is only possible to simulate meshes as a virtual _wired network_ between guest VMs under a single VirtualBox host. Each Commotion node must then be manually configured as gateway or repeater, since the auto-configuration tool meshconfig doesn't (yet) support VirtualBox's virtual network adapters.

Commotion-OpenWRT with a Virtual Mesh

The instructions below describe how to deploy multiple “Commotion-OpenWRT”:/projects/commotion-openwrt nodes as a guest VMs under VirtualBox, with a virtual mesh connecting them together.

Compatible images, VirtualBox appliance files, and Commotion-OpenWRT config tarballs may be downloaded from

Commotion-OpenWRT gateway node

Below are screenshots of VirtualBox network settings used for a Commotion-OpenWRT gateway node. This node uses the host's Internet connection on its first network adapter as its gateway, and then 3 additional internal networks named *OpenWRT-lan*, *OpenWRT-meshtest*, *OpenWRT-aptest* to represent the LAN, (wired) mesh, and local AP for this node. Under Commotion-OpenWRT, the 1st thru 4th Network Adapters will appear as eth0 thru eth3, respectively.

Note that the General, System, Display, Storage, and Serial Port settings for this gateway node are identical to those described for a “stand-alone node under VirtualBox.”:/projects/commotion/wiki/Virtual-Box#CreateConfigure-the-Commotion-OpenWRT-VM-guest

Net Adapter 1 settings for Commotion-OpenWRT gateway node under VirtualBox

Net Adapter 2 settings for Commotion-OpenWRT gateway node under VirtualBox

Net Adapter 3 settings for Commotion-OpenWRT gateway node under VirtualBox

Net Adapter 4 settings for Commotion-OpenWRT gateway node under VirtualBox

Commotion-OpenWRT repeater node

The repeater node configuration is nearly identical to that described for the gateway node above, with the exception that the repeater's Network Adapter 1 is not connected to the outside Internet via VirtualBox's NAT, but rather to an Internal Network with a unique name like *OpenWRT-nonet2*.

To represent the virtual mesh, the repeater node will share the internal network *OpenWRT-meshtest* with the gateway node on Network Adapter 2. The repeater node will also have its own distinct networks *OpenWRT-lan2* and *OpenWRT-aptest2* on its Network Adapters 3 and 4, respectively, to represent the repeater node's LAN and local AP.

Simulating user clients

An additional VM (or VMs) could be used to test connections to the public or private AP of any of the Commotion-OpenWRT VMs described above, and this VM could run Windows/Linux/OSX/etc to simulate the desktop of a user connecting to a Commotion node.

On this 4th VM, you would enable the 2nd Network Adapter for “Internal Networking” and specify network of the particular node's access point you wish to test, e.g. *OpenWRT-aptest* or *OpenWRT-aptest2*.

Commotion-Android with a virtual mesh


Commotion-Linux with a virtual mesh


Commotion-Windows with a virtual mesh


development_resources/testing/virtualization/virtualbox_and_virtual_meshing.txt · Last modified: 2014/05/12 20:23 (external edit)
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 3.0 Unported