Configuration Guide

Good work on building and installing Open/R. Here are some ways you can run Open/R. You should have the openr C++ binary, a JSON configuration and a python CLI tool breeze all installed under the appropriate bin directory on your system.

  • FibService => route programming interface FibService is main external service required to make Open/R functional, which comes pre-compiled with the openr binary for Linux only and can be enabled or disabled via command line flag or configuration options.

Checkout Platform.thrift for more detail about these services.

Quick Start

You can run the openr binary directly with some command line parameters and query links from it

// On shell-1
$ openr --ifname_regex_include=eth.*

// On shell-2
$ breeze lm links
Interface    Status    Overloaded    Metric Override    ifIndex    Addresses
-----------  --------  ------------  -----------------  ---------  ------------------------
eth0         Up                                         2

Run OpenR

/path/to/openr -v 2 --config /path/to/openr.confg

You can also pass in a custom configuration file and override/add openr flags:

Running as a Daemon

openr should be run as a daemon so that if it crashes or node gets restarted, the service comes up automatically. For newer Linux versions like CentOS we run it as a systemd service. The following describes openr.service for systems supporting systemd.

Description=Facebook Open Routing Platform

ExecStart=/usr/local/bin/openr -v 2 --config /etc/openr.conf


Thrift-based JSON Configuration File

The configuration file is expected to be in JSON format of the Open/R configuration thrift model, OpenrConfig.thrift. This model contains various knobs which were provided as command line configuration options before. Please check it out for configuration specification.

Command Line Configuration Options


Log messages at or above this level. Again, the numbers of severity levels INFO, WARNING, ERROR, and FATAL are 0, 1, 2, and 3, respectively. Defaults to 0



Show all verbose VLOG(m) messages for m less or equal the value of this flag. Use higher value for more verbose logging. Defaults to 1

  • Control using the -v CLI argument to openr


Knobs to control how often to run Decision. On receipt of first even debounce is created with MIN time which grows exponentially up to max if there are more events before debounce is executed. This helps us to react to single network failures quickly enough (with min duration) while avoid high CPU utilization under heavy network churn.



Experimental feature to measure convergence performance. Performance information can be viewed via breeze API breeze perf fib


Set type of service (TOS) value with which every control plane packet from Open/R will be marked with. This marking can be used to prioritize control plane traffic (as compared to data plane) so that congestion in network doesn’t affect operations of Open/R



Flag to enable TLS for our thrift server. Disable this for plaintext thrift.


If we are running an SSL thrift server, this option specifies the certificate path for the associated wangle::SSLContextConfig


If we are running an SSL thrift server, this option specifies the key path for the associated wangle::SSLContextConfig


If we are running an SSL thrift server, this option specifies the certificate authority path for verifying peers


If we are running an SSL thrift server, this option specifies the TLS ticket seed file path to use for client session resumption


If we are running an SSL thrift server, this option specifies the eccCurveName for the associated wangle::SSLContextConfig


A comma separated list of strings. Strings are x509 common names to accept SSL connections from.