User Tools

Site Tools


Virtual CONFINE Testbed (VCT)

The Virtual CONFINE Testbed (VCT) provides an environment to quickly create a virtual network of CONFINE nodes with the following objectives:

  • become familiar with confine-dist
  • test and facilitate development of software and components
  • emulate virtual topologies (to be done, currently all nodes are connected to all others)
  • prepare experiments for CONFINE networks
  • extend/increase real confine network (testbed) with emulated links.

This is achieved through virtualization of CONFINE hardware and networks using virsh/qemu and other Linux virtualization tools.

For a pre-packaged and ready to use version of VCT see:


Install latest testing branch:

git clone confine-bare-bones
cd confine-bare-bones/utils/vct
git checkout testing
./vct_system_cleanup # only needed when updating existing installations
./vct_system_install tinc,server,node,slice # the directives (tinc,server,node,slice) are optional and overwrite existing settings

Updating to latest testing branch:

cd confine-bare-bones/utils/vct
git checkout testing
./vct_system_install tinc,server,node,slice
# The directives (tinc,server,node,slice) are optional and overwrite existing settings.
# Using all of them puts you on the safe side.
# However, often you only want to update a new node image, so only use the node directive.
# Or to a new server/controller version, then only use the server directive.

Logging into the controller

Now you should be able to browse to http://localhost/admin:

  • User: vct
  • Password: vct

Define and build a node's firmware


  • Create a node (only provide a name and use the defaults)
    • Group: vct
    • Architecture: i686
    • Local interface: eth0
    • Sliver public IPv6: None
    • Sliver Public IPv4: DHCP
    • Sliver public IPv4 range: #8
    • Set state: PRODUCTION
  • Save and continue
  • Download firmware (enable all 3 optional files)
  • Remember the node ID of this node as it is needed in the next step

Deploying and starting a previously built node

Back in your shell under the utils/vct directory:

./vct_node_create <node-id> # deploy your node using the image created in the previous step
./vct_node_start <node-id> # start the node
./vct_node_ssh <node-id> # optionally log into the node

Monitoring and changing node state from the controller

Your node should be listed in the http://localhost/admin/nodes/node/ nodes page and the node status should be reported in the state column. By following the link on the state keyword (the fields in the State link column) of a node more detailed information is revealed. Be aware that the VCT server polls the node every 10 seconds, so expect some delay and reload the page to get the latest status.

Creating OpenWRT-based slices


  • Select openwrt-slice-example (use defaults):
    • Name: test
    • Descripton: test
    • Template: openwrt-backfire-example (openwrt-backfire)
    • exp_data: —
    • Exp. data SHA256: 21ae296006185c7110b80632f3d8e69961b56dc6a859223ea6afe6c5e73c1def (it can be calculated with coreutils tools as: sha256sum exp-data-hello-world-openwrt.tgz)
    • Set state: REGISTER
    • Request VLAN: enable
    • Save and continue editing
    • Set state: START
    • Save and continue editing
    • Add sliver
      • Enable the checkbox of a node where the sliver should be created and click “Create sliver”

Creating Debian-based slices

Proceed as described for OpenWRT based slivers except:

  • Select debian-slice-example (use defaults):

Creating slivers


  • Put some description
  • Optional fields (to overwrite slice defaults from above):
    • Template: openwrt-backfire-example
    • exp_data: leave untouched (—-)
    • Exp. data SHA256: 21ae296006185c7110b80632f3d8e69961b56dc6a859223ea6afe6c5e73c1def (it can be calculated with coreutils tools as: sha256sum exp-data-hello-world-openwrt.tgz)
    • Set state: —
  • Sliver interface:
    • priv: Private, —
    • mgmt0: Management, —
    • iso0: Isolated, eth1
  • Save and continue editing

Stopping and undeploying a node

./vct_node_stop # stop the node 
./vct_node_remove # remove the node (needed before building/creating/starting a new node image)

In order to add a realistic link error model and a complex network topology, please refer to Documentation of best practices where a link error model for VCT is described and scripts are provided.

soft/vct.txt · Last modified: 2014/11/21 13:59 by m00dy