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 theopenr
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 169.254.0.13
fe80::20a:f7ff:fe9a:3616
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
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¶
MIN_LOG_LEVEL¶
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
MIN_LOG_LEVEL=0
VERBOSITY¶
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
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.
DECISION_DEBOUNCE_MIN_MS=10
DECISION_DEBOUNCE_MAX_MS=250
ENABLE_PERF_MEASUREMENT¶
Experimental feature to measure convergence performance. Performance information
can be viewed via breeze API breeze perf fib
IP_TOS¶
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
IP_TOS=192
ENABLE_SECURE_THRIFT_SERVER¶
Flag to enable TLS for our thrift server. Disable this for plaintext thrift.
X509_CERT_PATH¶
If we are running an SSL thrift server, this option specifies the certificate path for the associated wangle::SSLContextConfig
X509_KEY_PATH¶
If we are running an SSL thrift server, this option specifies the key path for the associated wangle::SSLContextConfig
X509_CA_PATH¶
If we are running an SSL thrift server, this option specifies the certificate authority path for verifying peers
TLS_TICKET_SEED_PATH¶
If we are running an SSL thrift server, this option specifies the TLS ticket seed file path to use for client session resumption
ECC_CURVE_NAME¶
If we are running an SSL thrift server, this option specifies the eccCurveName for the associated wangle::SSLContextConfig
TLS_ACCEPTABLE_PEERS¶
A comma separated list of strings. Strings are x509 common names to accept SSL connections from.