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
FibService=> route programming interface FibService is main external service required to make Open/R functional, which comes pre-compiled with the
openrbinary 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.
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 169.254.0.13 fe80::20a:f7ff:fe9a:3616
/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
Description=Facebook Open Routing Platform After=network.target [Service] Type=simple ExecStart=/usr/local/bin/openr -v 2 --config /etc/openr.conf Restart=always RestartSec=3 TimeoutSec=10 TimeoutStartSec=10 TimeoutStopSec=10 LimitNOFILE=10000000 LimitCORE=32G [Install] WantedBy=multi-user.target
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
-vCLI argument to openr
DECISION_DEBOUNCE_MIN_MS / DECISION_DEBOUNCE_MAX_MS¶
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.