This tutorial presents some of the basic ideas being software-defined networking (SDN) programming with OpenFlow and Frenetic. It is divided into two sections:
This is a hands-on tutorial with several programming exercises. We recommend using the virtual machine we’ve prepared that has all the necessary software that you need pre-installed. To run this, you need the following open source software package applicable for your host computer:
The Frenetic Tutorial VM runs Ubuntu 16.04 as the guest OS. It has OCaml, OPAM, Mininet, Wireshark, and Frenetic itself pre-installed. The standard VIM, Emacs, and Nano editor packages are installed, but you can install your own through the normal Ubuntu package mechanisms.
The Frenetic tutorial VM is stored on Amazon Web Services S3 cloud storage, and installing it requires very little effort. First, launch the VirtualBox GUI on your Windows, Linux, or Mac OS host PC. Then:
File > Import Appliance...
. This will open a modal
dialog instructing you to import the appliance.Next
.Import
. This imports the OVA file into VirtualBox, and the Frenetic
VM should now appear in your VirtualBox GUI.To write Ox and NetKAT programs, it will be useful to be familiar with the OCaml language. Chapters 1–8 and 18 should cover the necessary background material.
This specification describes OpenFlow switches and configuration protocol in detail. You’ll find that most of the Ox Platform Reference simply reflects the OpenFlow messages and data types into OCaml.
This webpage describes Mininet, a system we will use to run controllers on a simulated network of switches.
This web page provides documentation for the Ox and NetKAT libraries, as well as other supporting libraries used in this tutorial.