Frr

Free Range Routing or FRRouting or FRR is aArticle description::a network routing software suite running on Unix-like platforms. It was created as a fork from the Quagga Project.

The FRRouting software consists of 2 basic parts:


 * The zebra daemon
 * The routing process deamons: ripd,ospfd etc.

The zebra daemon is a abstraction layer between the kernel and the running routing processes. It acts like a relay. Each routing protocol, such as as Zebra, BFD, BGP, Babel, OpenFabric, LDP, EIGRP, ISIS, NHRP, OSPFv2, OSPFv3, Segment Routing, PIM, PBR, RIP, RIPng, STATIC, VRRP has its own separate running daemon.

FRRouting can install, add and change, and remove IP routing information, without the user having privileged root access to a dedicated machine. FRRouting is basically a tool for the linux TCP/IP stack as iproute2 and are. FRR is a set of unified tools to configure and manage dynamic routing protocols.

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

All routing daemons listed communicate with directly with zebra daemon only. The zebra daemon alters the linux IP networking information on the host. Packages like iproute2 and nettools alter directly the linux IP networking compared to FRR.

Configuration
Review frr's configuration file to enable optional (advanced) routing protocols. In the default setting all advanced routing protocols are disabled.


 * - Global (system wide) FRR configuration file.

Add larry to frrvty group to be able to use vtysh:

Not sure about the need of frr (verify):

OpenRC
Add frr to the default runlevel:

Start frr daemon:

Usage
Following section describes a basic configuration example for FRR. Configuring a additional IP address  and the IPv6 address   on a loopback interface , then finally to test in using iproute2 tools. The goal of this usage configuration example is to show FRR is only a control plane/management plane tool for the linux kernel IP networking.

A short overview of commands used:

Following IP networking settings have been used:

Display configured IP settings using iproute2:

Display the IPv6 interface configuration using iproute2:

Show the Linux IPv4 routing table:

Show the Linux IPv6 routing table:

Show routing table
Compare output shown below to the Linux, shows exactly same output. Notice the default route has a K prefix which means it is a kernel route:

Now the same, but for the IPv6 protocol:

Show configuration
To display current configuration use the  command:

Configure IP addressing
Get into edit mode:

Choose the  loopback interface:

Configure the IP 192.0.2.100/32 on loopback interface, notice the IP prefix length :

Configure the IPv6 address 2001:db8::100/128 on the loopback interface, notice the  prefix length:

Exit configure mode
End the edit mode mode session:

Verify configuration
Show running configuration:

Show the loopback interface configuration, and notice the configured  and   addresses in the output:

Show the IPv4 routing table, notify both prefixes  and   are in the routing table:

Show the IPv6 routing table, notify both prefixes  and   are in the routing table:

Save configuration
Save running configuration:

Exit router
Exit frr:

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

Verify IP connectivity in the network:

Verify IPv6 connectivity in the network:

Troubleshooting
Verify the zebra daemon is up and running:

Verify advanced routing protocol daemons are up and running:

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

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

Continue using the help key on each command level, to view possible configuration settings.

Show the routing table:

Internal help works like a tree, where using the key displays further levels of commands.

External resources

 * FRR's linux kernel settings recommendations for advanced usage
 * Official Quagga website
 * Quagga_(software)
 * GNU/Zebra