Updated: May 21, 2019
Initially, Cumulus OS used the Quagga suite for routing capability. However, more recently, there has been a general adoption of a fork of Quagga called FRRouting (FRR) - Cumulus now includes FRR instead of Quagga. Like always, you can either edit the files directly or using Cumulus' NCLU to enable the respective routing features as well.
We'll be using the following network topology for this post:
Routing configuration is stored in /etc/frr/frr.conf (like how interface configuration is stored in /etc/network/interfaces). It is important to note that the protocols under FRR run as deamons on the OS and are not enabled by default. To see the list of daemons and their status, you can view the /etc/frr/daemons file:
'zebra' is the IP routing manager and controls things like static routes. It provides kernel routing table updates, interface lookups, and redistribution of routes between different routing protocols (quoted from 'http://docs.frrouting.org/en/latest/zebra.html').
Let's configure some static routes to provide connectivity between PC1 and PC2. The option to add static routes comes under 'net add routing':
Among other things, you can debug zebra, create route-maps from here as well. To serve the purpose of this topology, we simply need to create a static route for 18.104.22.168/24 on SW1 with a next hop of SW2 and a static route for 10.1.1.0/24 on SW2 with a next hop of SW1.
The changes made to /etc/frr/frr.conf are highlighted in the previous outputs (in blue). PC1 can ping PC2 now:
Pretty straightforward, wasn't it?
I am going to undo these changes now and move towards a routing protocol like OSPF instead.
Let's bring up OSPF now.
Verify that OSPF is up and that the LSDB has the correct information:
SW1 and SW2 should have installed 10.1.1.0/24 and 22.214.171.124/24 respectively into RIB/FIB as well.
The only thing left to verify is the connectivity from PC1 to PC2.
Works like a charm! In our next post, we'll take a look at implementing BGP with OSPF as an IGP on Cumulus VX.