Version 2 (modified by Josh Smift, 13 years ago) (diff)



NOX is "an open-source OpenFlow controller. Its purpose is to provide a simplified platform for writing network control software in C++ or Python." That second clause is important: "NOX itself" isn't really an OpenFlow controller per se; you always run NOX with one or more modules, and those modules are, more precisely, the OpenFlow controllers. NOX comes with some example controllers, including a C++ learning-switch controller called 'switch'. (Not to be confused with the Python learning-switch controller called 'pyswitch'.)

Building NOX

This is known to work on Ubuntu 10.04.

These steps are based on the docs at

Update the version number below before you start building (in the version and description strings in the Debian manifest).

Install depended-upon packages

cd /etc/apt/sources.list.d
sudo wget
sudo apt-get update
sudo apt-get install nox-dependencies git-core subversion
sudo rm nox.list

Build NOX

mkdir -p ~/src
cd ~/src
rm -rf nox
git clone git://
cd nox
mkdir build
cd build
../configure --prefix=/usr --with-python=yes
make -j 5
make check

Package it up

sudo rm -rf ~/pkgbuild/root
mkdir -p ~/pkgbuild/root/etc/init.d ~/pkgbuild/root/usr
make INSTALL='/usr/bin/install -C' prefix=~/pkgbuild/root/usr install

cd ~/pkgbuild/root/etc/init.d
(obtain the noxctl script, and install it as ~/pkgbuild/root/etc/init.d/nox)
chmod 544 nox

mkdir ~/pkgbuild/root/DEBIAN
cd ~/pkgbuild/root/DEBIAN
echo "Package: nox" > control
echo "Version:" >> control
echo "Architecture: i386" >> control
echo "Maintainer: GPO Ops <>" >> control
echo "Section: misc" >> control
echo "Priority: optional" >> control
echo "Description: NOX Zaku 0.9.0 as of 2010-11-10." >> control
echo "Depends: libboost-filesystem1.40.0,libboost-test1.40.0" >> control

cd ..
sudo chown -Rh root .
sudo chgrp -Rh root .
sudo find . \( -type f -o -type d \) -exec chmod ugo-w {} \;
sudo chmod u+w DEBIAN

cd ..
pkgname=$(grep "^Package:" ${ctlfile} | awk '{print $2}')
version=$(grep "^Version:" ${ctlfile} | awk '{print $2}')
arch=$(grep "^Architecture:" ${ctlfile} | awk '{print $2}')

dpkg -b root $tgtfile