Quagga OSPF

Another package that makes a link-state routing protocol available is Quagga OSPF. This implementation of the OSPF protocol is available as a package. It can be installed by going to System | Packages in the same manner as other packages described in this section. If you read the package description, however, you will notice that it mentions that QuaggaOSPF is installed in the same location as OpenBPGD. Installing both packages will break things. If you are going to install Quagga OSPF and you already have OpenBGPD installed, it is recommended that you uninstall OpenBGPD first.

Once Quagga OSPF is installed, you can begin configuration by navigating to Services | Quagga OSPFd. There are several tabs; the first is Global Settings. You must enter the password for the Zebra and OSPFd daemons, which you can do in the Master Password field. The Logging option, if enabled, will cause OSPF information to be written to the syslog, which can be useful in diagnosing and troubleshooting issues. Similarly, the Log Adjacency Changes option allows you to have OSPF daemon write adjacency changes to the syslog. The router ID is entered in the Router ID field. This ID is customarily written in the dotted decimal format in which IP addresses are written (for example, 1.1.1.1); however, the router ID does not represent an actual IP address, and expressing the router ID in this form is optional.

The Area field is where you enter the OSPFd area; we differentiate OSPF areas by the fact that each area has its own link-state database. As with router IDs, areas are usually expressed in IPv4 format, but they do not have to be. The Disable FIB updates option, if enabled, allows you to turn the router into a stub router. A stub router only receives route advertisements within the autonomous system (AS).

The Redistribute connected networks option, as the name implies, enables redistribution of connected networks. The Redistribute default route option enables redistribution of a default route to pfSense. Redistribute static enables the redistribution of static routes, but only if you are using Quagga static routes. Redistribute Kernel enables redistribution of the kernel routing table. It is required if you are using pfSense static routes.

In the SPF Hold Time edit box, you can specify the SPF hold time in milliseconds. This is the minimum time between two consecutive shortest path first calculations. The default value of SPF Hold Time is 5 seconds. In the SPF Delay field, you can specify the delay between receiving an update to the link-state database and starting the shortest path first calculation (the default is 1 second).

Enabling the RFC 1583 option causes decisions regarding AS-external routes to be evaluated according to RFC 1583. If this option is not enabled, intra-area routes will always be favored over inter-area routes, regardless of the cost.

In the next section, you can generate rules for certain areas that will take precedence over any redistribute options otherwise specified. Each entry must have a subnet to the route and an area ID. You can also disable redistribution for each entry and disable acceptance. Clicking on the Add button adds an entry. The CARP Status IP edit box is essentially identical to this setting in OpenBGPD, and it allows you to specify the IP address used to determine the CARP status. When you are done, click on the Save button.

On the Interface Settings tab, you can specify which interfaces will send and receive OSPF data. Click on the Add button under the table to add a new interface; the configuration page has several options. The Interface dropdown is where you can specify the participating interface. The Network Type drop-down box is where you enter the participating interface. And the Network Type drop-down box is where you specify the OSPF network type. The following are the options:

Take note of the fact that the only two modes officially supported by OSPF are nonbroadcast and point-to-multipoint networks. Broadcast and point-to-point modes were defined by Cisco for use in non-broadcast multi-access (NBMA) networks. OSPF was defined in RFC 2328.

The Metric field is where you can enter the cost for the OSPF interface, and the Area field is where you can specify the area. You can enter a description in the Description field. Enabling Interface is Passive prevents the transmission/receiving of OSPF packets on the interface, transforming the interface into a stub network. Enabling Accept Filter results in the daemon not adding routes for this interface subnet from OSPF into the routing table. This can be helpful in multi-WAN environments. The Enable MD5 password checkbox enables the use of an MD5 password on the interface, if checked. To use this option, you must specify a password in the next field.

The Router Priority field is where you can specify the router priority in a DR election; the default is 1. The Hello Interval field lets you specify the interval at which Hello discovery packets are sent; the default for this interval is 10 seconds. The Retransmit Interval edit box is where you can specify the retransmit interval; the default is 5 seconds. Finally, there is the Dead Time field, where you can specify the interval at which OSPF will check to see if a neighbor is still alive (therefore, not dead); the default is 40 seconds.

As is the case with OpenBGPD, Quagga OSPF has a Raw Config tab. Here, you can edit the OSPF config files manually. There are also fields where you can enter both the physical and virtual IPs of interfaces for CARP configurations. Each configuration file has two text-boxes. The textbox labeled SAVED is where you can make changes to a config file, while the text-box labeled RUNNING is the version of the config that is currently running. Clicking on the Copy X Running to Saved button (where X is the name of the daemon whose configuration file is being edited) causes the contents of the RUNNING edit box to be copied into the SAVED edit box, enabling you to save any changes made.

The Status tab is where information about the different daemons is aggregated. There is a summary of data of the OSPF daemon, the BGP daemon, and the Zebra daemon, as well as any routes associated with them.