wiki:NOX

Version 1 (modified by Josh Smift, 9 years ago) (diff)

--

Overview

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 http://noxrepo.org/noxwiki/index.php/NOX_Installation.

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 http://openflowswitch.org/downloads/debian/nox.list
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://noxrepo.org/nox
cd nox
./boot.sh
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
svn export http://groups.geni.net/svn/syseng/trunk/gposw/nox/noxctl/noxctl.sh nox
chmod 544 nox

mkdir ~/pkgbuild/root/DEBIAN
cd ~/pkgbuild/root/DEBIAN
echo "Package: nox" > control
echo "Version: 0.9.0.20101110-0ubuntu1" >> control
echo "Architecture: i386" >> control
echo "Maintainer: GPO Ops <gpo-ops@geni.net>" >> 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 ..
ctlfile="root/DEBIAN/control"
pkgname=$(grep "^Package:" ${ctlfile} | awk '{print $2}')
version=$(grep "^Version:" ${ctlfile} | awk '{print $2}')
arch=$(grep "^Architecture:" ${ctlfile} | awk '{print $2}')
tgtfile="${pkgname}_${version}_${arch}.deb"

dpkg -b root $tgtfile