Vagrant for SDN Labs

Part 1 – Introduction

I’ve been experimenting with Vagrant to automate the creation of virtual Software-Defined Networking (SDN) labs. This blog explains how create SDN labs with Vagrant.

Why SDN labs? Maybe you’re a network student or engineer learning new skills. Maybe you want to develop the next killer SDN app. Perhaps you’re doing SDN research. Virtual labs are a great way to test ideas without having to invest in SDN switch hardware, and can be set up quickly.

Vagrant is useful for automating standing up and configuring virtual machines for development environments. It is ideal for virtual SDN labs, as it allows designs to be shared easily, without need for shipping large binaries or manual build instructions. A text file (called a Vagrantfile) is all that is required to stand up a complete virtual lab, with multiple VMs, including networking.

SDN lab architecture, built with Vagrant, looks like this:

vagrant_architecture

How it works (at a very high level)

  • From a command prompt in the directory that the Vagrantfile is in type ‘vagrant up’
  • Vagrant reads it’s configuration from the Vagrantfile
  • Vagrant configures and instructs the hypervisor (provider) to stand up guests, from packaged VM images called boxes. This can include custom network configurations.
  • Vagrant runs any provisioning required inside the new guest(s), as described in Vagrantfile, and associated configuration files (example bootstrap.sh)

I’ve started a repo of Vagrant configurations for SDN labs at https://github.com/mattjhayes/Vagrant

Part 2 of this blog will cover installation.

One thought on “Vagrant for SDN Labs

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s