USC-NSL / miniNExT

An extension layer that makes it easier to build complex networks in Mininet
Other
44 stars 30 forks source link

Using mininext with quagga installed from source. #8

Open edgar-costa opened 8 years ago

edgar-costa commented 8 years ago

Hi all,

I need to configure quagga to add multipath and snmp support, and therefore I need to install it from source. However, when I install it from source all the executables and configuration files are not placed where they are placed when you install quagga from the repository (apt-get install quagga).

For example : /etc/quagga is not created, /etc/init.d/quagga script does not even exist, etc.

I checked a little bit the code of mininext, and it seems that it depends heavily on quagga being installed from the repository.

I tried to somehow replicate the structure in which the executables (zebra, ospf, etc) are placed with the normal installation but I don't manage to make it work.

Is there a way to use mininet with my setup, or can you guide me a little bit so I can make it work.

Thanks, Edgar

bschlinker commented 8 years ago

When you install Quagga using the Makefile in the official repo, many of the OS / distribution dependent scripts (such as init.d scripts) are not going to be installed. The Quagga service config in mininext relies on these files (although it could be modified to call the binaries directly).

Instead of compiling the source directly from the Quagga repository, I'd recommend modifying the source used to create the package in Ubuntu's repos. You can then create another dpkg and install that.

Here's an example of how I created a Quagga dpkg with SNMP support. I suppose you'll just need to add additional flags for multipath support:

# install packages needed for quagga compile
echo "Installing build dependencies"
apt-get install dpkg-dev -y
apt-get build-dep quagga -y

# make a temporary directory for us to work in, enter it
SRCTMP=$(mktemp -d)
echo "Downloading and compiling Quagga srcs in $SRCTMP"
cd $SRCTMP

# pull quagga sources
apt-get source quagga || (echo "Ensure deb-src entires in sources.list"; exit 1)

# move into quagga source directory
cd quagga-*/

# build a package with SNMP support enabled
USE_SNMP="--enable-snmp=agentx" fakeroot dpkg-buildpackage -us -uc 

# move into the parent directory, where the package should now be
cd $SRCTMP

# install the package
# force installation of any dependencies, if needed
dpkg --install quagga*.deb || apt-get -f install -y

Alternative options include: (1) install the Quagga package from the Ubuntu repos and then reinstall your custom compiled Quagga over it (watch out, the Quagga binaries may be placed in different paths) or (2) modifying the Quagga service config.