Frr

Quagga is a free software routing suite. Quagga supports static routing, and dynamic routing protocols.

The Quagga routing suite consists of 2 parts:
 * zebra daemon
 * routing processes (RIP,OSPF,BGP,IS-IS,Babel,OLSR,LDP,BFD)

The zebra daemon is a abstraction layer between the kernel and the running routing processes. Each routing protocol has its own specific daemon.

Quagga installed on a physical host acts as a dedicated router. Quagga updates the kernel routing table. It modifies interface IP addressing, sets static routes and enables dynamic routing.

Quagga can modify, add and change the physical host interface configuration and routing table, without the need user having privileged root access to a dedicated machine. Quagga is basically a another tool for iproute2 and, with advanced IP networking functionalities.

All routing daemons listed communicate with the zebra daemon, not directly with the kernel.

OpenRC
Add quagga to the default runlevel:

Before starting zebra you have to configure it, by creating a file:

Start zebra daemon:

Verify zebra is running:

Usage
Following section describes a very basic configuration example, how to configure a additional IP address  on a loopback interface , then finally to test in using iproute2.

A short overview of commands used:

Following IP networking settings have been used:

Display configured IP settings using iproute2:

Show the Linux IP routing table:

Login
The default quagga configuration has following user credentials for login:

Use these credentials to Login to local zebra daemon:

Using help
Show basic mode commands, use the key for help:

After choosing initial entry command, continue using  key to display further possible commands:

The help function is setup like a tree, where using the key displays further levels of commands.

Show routing table
Compare output shown below to the Linux, shows exactly the same IP routing table:

In the upper example some lines have been skipped. The additional Codes line is shown below:

Privileged mode
The privileged mode is used to add, change, modify interface IP settings. To get into privileged mode use, the default password zebra:

Run once again help in privileged mode, notice different commands available in this mode:

Show configuration
To display current configuration use the  command:

Configure IP address
Get into edit mode:

Chose the IP loopback interface:

Configure the IP address 192.168.0.100/32 on loopback interface:

Exit configure mode
End the edit mode mode session:

Verify configuration
Show running configuration:

Show loopback interface configuration:

Show routing table:

Save configuration
Save running configuration:

Exit router
Exit quagga:

Test connectivity
Verify IP configuration using iproute2. Notice the additional IP address setup on loopback interface:

Now you can verify this IP address is reachable in the network:

Review the file:

Advanced usage
Each dynamic routing protocol (BGP,RIP,OSPF,...) has a separate startup script in

List services available in

Initial configuration
For each routing protocol extract initial configuration:

Management
Each routing deamon can be accessed on different TCP/UDP port for management purposes like for configuration changes, adding new routing information etc:

Start local management session with the routing daemon:

Using help
Inspect the internal help, use the key:

External resources

 * http://www.nongnu.org/quagga/docs/docs-multi/Command-Index.html#Command-Index Quagga command index