Quagga routing on RHEL 7.x

Quagga has become the dominant open source routing software for all Linux / Unix installations. Its success is due to its support for a wide range of both interior and exterior routing protocols. It provides implementations for RIP, OSPF and BGP.

An Internet search for routing protocol questions related to Redhat invariably will result in answers that are based on Quagga solutions. This includes answers provided by the Redhat support site itself, making Quagga the definitive solution.

Installing Quagga on Redhat 7.x

There are three mechanisms to install Quagga; 1) yum(8) from the Redhat repo, 2) yum(8) from the Carroll-Net repo and 3) compile Quagga from source.

Install Quagga with yum from Redhat’s Repo

In the Redhat world, yum install quagga is the canonical way to quickly install the software. In the case of Quagga, as of April, 2019, this will give you Quagga version 0.99.4.

The 0.99.4 version of Quagga has a limitation that impacts your ability to work with the ripd(8) daemon. Specifically, the vtysh(1) command line utility does not permit creating distribute lists to control which addresses you share with neighbor routers.

If you need distribute lists and choose the 0.99.4 branch, you’ll need to edit the change into the /etc/quagga/ripd.conf file and restart the service after each edit. Alternatively, you can use the ripd(8) management interface. ripd(8) uses TCP port 2602 by default which can be accessed with telnet; e.g., telnet localhost 2602.

To install a more modern version of Quagga that resolves the distribute list limitation use either of the next two procedures.

Install Quagga with yum from Carroll-Net’s Repo

Carroll-Net has put together an RPM package of Quagga 1.2.3 and made it public.  You can easily install with the command:

yum install http://carroll.net/redhat/pkgs/quagga-1.2.3.el7.x86_64.rpm

This will install the software, man pages and initscripts you need to run Quagga.  After you’ve created the Quagga configuration files in /etc/quagga/, you can selectively choose which daemons to start.

# If you are running modern systemd
	systemctl enable zebra
	systemctl enable ripd
	systemctl enable ospfd
	etc…

# To start services
	systemctl start zebra
	systemctl start ripd
	systemctl start ospfd

# If you are running and older style init.d
	chkconfig zebra on
	chkconfig ripd on
	chkconfig ospfd on
	etc …

# You can then start the daemons
	service zebra start
	service ripd start
	service ospfd start

Install Quagga from source

This procedure is a bit more complex, but has the advantage of installing the latest version of Quagga. It requires installing a few pre-requisites, but this should not be much of a challenge for most capable administrators.

First, clone the github repo

# git clone https://github.com/Quagga/quagga.git

The instructions for building the source are in quagga/redhat/README.rpm_build.md

To get the initscripts installed, follow the full set of directions. This includes performing the rpmbuild(8) step.  Afterwards, you can then yum install your created *.rpm which will deploy LSB style initscripts.


Carroll-Net was founded in 1994 with the singular goal of providing datacenter services our clients require at a price they can afford, delivered everywhere they need them. The industry now calls this cloud services — we call it common sense.