ovn-northd(8) OVN Manual ovn-northd(8)
NAME
ovn-northd - Open Virtual Network central control daemon
SYNOPSIS
ovn-northd [options]
DESCRIPTION
ovn-northd is a centralized daemon responsible for translating the high-
level OVN configuration into logical configuration consumable by daemons
such as ovn-controller. It translates the logical network configuration in
terms of conventional network concepts, taken from the OVN Northbound Data‐
base (see ovn-nb(5)), into logical datapath flows in the OVN Southbound
Database (see ovn-sb(5)) below it.
OPTIONS
--ovnnb-db=database
The OVSDB database containing the OVN Northbound Database. If the
OVN_NB_DB environment variable is set, its value is used as the de‐
fault. Otherwise, the default is unix:/ovnnb_db.sock.
--ovnsb-db=database
The OVSDB database containing the OVN Southbound Database. If the
OVN_SB_DB environment variable is set, its value is used as the de‐
fault. Otherwise, the default is unix:/ovnsb_db.sock.
--dry-run
Causes ovn-northd to start paused. In the paused state, ovn-northd
does not apply any changes to the databases, although it continues
to monitor them. For more information, see the pause command, under
Runtime Management Commands below.
--n-threads=N
In certain situations, it may be desirable to enable parallelization
on a system to decrease latency (at the potential cost of increasing
CPU usage).
This option will cause ovn-northd to use N threads when building
logical flows, when N is within [2-256]. If N is 1, parallelization
is disabled (default behavior). If N is less than 1, then N is set
to 1, parallelization is disabled and a warning is logged. If N is
more than 256, then N is set to 256, parallelization is enabled
(with 256 threads) and a warning is logged.
--dump-inc-proc-graph[=node]
Dump the incremental processing engine graph representation in DOT
format to stdout at startup and then exit. If node is specified,
only the subgraph rooted at that engine node is printed.
database in the above options must be an OVSDB active or passive connection
method, as described in ovsdb(7).
Daemon Options
--pidfile[=pidfile]
Causes a file (by default, program.pid) to be created indicating the
PID of the running process. If the pidfile argument is not speci‐
fied, or if it does not begin with /, then it is created in .
If --pidfile is not specified, no pidfile is created.
--overwrite-pidfile
By default, when --pidfile is specified and the specified pidfile
already exists and is locked by a running process, the daemon re‐
fuses to start. Specify --overwrite-pidfile to cause it to instead
overwrite the pidfile.
When --pidfile is not specified, this option has no effect.
--detach
Runs this program as a background process. The process forks, and in
the child it starts a new session, closes the standard file descrip‐
tors (which has the side effect of disabling logging to the con‐
sole), and changes its current directory to the root (unless
--no-chdir is specified). After the child completes its initializa‐
tion, the parent exits.
--monitor
Creates an additional process to monitor this program. If it dies
due to a signal that indicates a programming error (SIGABRT,
SIGALRM, SIGBUS, SIGFPE, SIGILL, SIGPIPE, SIGSEGV, SIGXCPU, or
SIGXFSZ) then the monitor process starts a new copy of it. If the
daemon dies or exits for another reason, the monitor process exits.
This option is normally used with --detach, but it also functions
without it.
--no-chdir
By default, when --detach is specified, the daemon changes its cur‐
rent working directory to the root directory after it detaches. Oth‐
erwise, invoking the daemon from a carelessly chosen directory would
prevent the administrator from unmounting the file system that holds
that directory.
Specifying --no-chdir suppresses this behavior, preventing the dae‐
mon from changing its current working directory. This may be useful
for collecting core files, since it is common behavior to write core
dumps into the current working directory and the root directory is
not a good directory to use.
This option has no effect when --detach is not specified.
--no-self-confinement
By default this daemon will try to self-confine itself to work with
files under well-known directories determined at build time. It is
better to stick with this default behavior and not to use this flag
unless some other Access Control is used to confine daemon. Note
that in contrast to other access control implementations that are
typically enforced from kernel-space (e.g. DAC or MAC), self-con‐
finement is imposed from the user-space daemon itself and hence
should not be considered as a full confinement strategy, but instead
should be viewed as an additional layer of security.
--user=user:group
Causes this program to run as a different user specified in
user:group, thus dropping most of the root privileges. Short forms
user and :group are also allowed, with current user or group as‐
sumed, respectively. Only daemons started by the root user accepts
this argument.
On Linux, daemons will be granted CAP_IPC_LOCK and CAP_NET_BIND_SER‐‐
VICES before dropping root privileges. Daemons that interact with a
datapath, such as ovs-vswitchd, will be granted three additional ca‐
pabilities, namely CAP_NET_ADMIN, CAP_NET_BROADCAST and CAP_NET_RAW.
The capability change will apply even if the new user is root.
Logging Options
-v[spec]
--verbose=[spec]
Sets logging levels. Without any spec, sets the log level for every
module and destination to dbg. Otherwise, spec is a list of words sep‐
arated by spaces or commas or colons, up to one from each category be‐
low:
• A valid module name, as displayed by the vlog/list command on
ovs-appctl(8), limits the log level change to the specified
module.
• syslog, console, or file, to limit the log level change to only
to the system log, to the console, or to a file, respectively.
(If --detach is specified, the daemon closes its standard file
descriptors, so logging to the console will have no effect.)
• off, emer, err, warn, info, or dbg, to control the log level.
Messages of the given severity or higher will be logged, and
messages of lower severity will be filtered out. off filters
out all messages. See ovs-appctl(8) for a definition of each
log level.
Case is not significant within spec.
Regardless of the log levels set for file, logging to a file will not
take place unless --log-file is also specified (see below).
For compatibility with older versions of OVS, any is accepted as a
word but has no effect.
-v
--verbose
Sets the maximum logging verbosity level, equivalent to --verbose=dbg.
-vPATTERN:destination:pattern
--verbose=PATTERN:destination:pattern
Sets the log pattern for destination to pattern. Refer to ovs-ap‐‐
pctl(8) for a description of the valid syntax for pattern.
-vFACILITY:facility
--verbose=FACILITY:facility
Sets the RFC5424 facility of the log message. facility can be one of
kern, user, mail, daemon, auth, syslog, lpr, news, uucp, clock, ftp,
ntp, audit, alert, clock2, local0, local1, local2, local3, local4, lo‐‐
cal5, local6 or local7. If this option is not specified, daemon is
used as the default for the local system syslog and local0 is used
while sending a message to the target provided via the --syslog-target
option.
--log-file[=file]
Enables logging to a file. If file is specified, then it is used as
the exact name for the log file. The default log file name used if
file is omitted is /usr/local/var/log/ovn/program.log.
--syslog-target=host:port
Send syslog messages to UDP port on host, in addition to the system
syslog. The host must be a numerical IP address, not a hostname.
--syslog-method=method
Specify method as how syslog messages should be sent to syslog daemon.
The following forms are supported:
• libc, to use the libc syslog() function. Downside of using this
options is that libc adds fixed prefix to every message before
it is actually sent to the syslog daemon over /dev/log UNIX do‐
main socket.
• unix:file, to use a UNIX domain socket directly. It is possible
to specify arbitrary message format with this option. However,
rsyslogd 8.9 and older versions use hard coded parser function
anyway that limits UNIX domain socket use. If you want to use
arbitrary message format with older rsyslogd versions, then use
UDP socket to localhost IP address instead.
• udp:ip:port, to use a UDP socket. With this method it is possi‐
ble to use arbitrary message format also with older rsyslogd.
When sending syslog messages over UDP socket extra precaution
needs to be taken into account, for example, syslog daemon
needs to be configured to listen on the specified UDP port, ac‐
cidental iptables rules could be interfering with local syslog
traffic and there are some security considerations that apply
to UDP sockets, but do not apply to UNIX domain sockets.
• null, to discard all messages logged to syslog.
The default is taken from the OVS_SYSLOG_METHOD environment variable;
if it is unset, the default is libc.
PKI Options
PKI configuration is required in order to use SSL/TLS for the connections
to the Northbound and Southbound databases.
-p privkey.pem
--private-key=privkey.pem
Specifies a PEM file containing the private key used as iden‐
tity for outgoing SSL/TLS connections.
-c cert.pem
--certificate=cert.pem
Specifies a PEM file containing a certificate that certifies
the private key specified on -p or --private-key to be trust‐
worthy. The certificate must be signed by the certificate au‐
thority (CA) that the peer in SSL/TLS connections will use to
verify it.
-C cacert.pem
--ca-cert=cacert.pem
Specifies a PEM file containing the CA certificate for verify‐
ing certificates presented to this program by SSL/TLS peers.
(This may be the same certificate that SSL/TLS peers use to
verify the certificate specified on -c or --certificate, or it
may be a different one, depending on the PKI design in use.)
-C none
--ca-cert=none
Disables verification of certificates presented by SSL/TLS
peers. This introduces a security risk, because it means that
certificates cannot be verified to be those of known trusted
hosts.
--ssl-server-name=servername
Specifies the server name to use for TLS Server Name Indication
(SNI). By default, the hostname from the connection string is
used for SNI. This option allows overriding the SNI hostname,
which is useful when connecting through proxies or service
meshes where the connection endpoint differs from the intended
server name.
Other Options
--unixctl=socket
Sets the name of the control socket on which program listens for
runtime management commands (see RUNTIME MANAGEMENT COMMANDS, be‐
low). If socket does not begin with /, it is interpreted as relative
to . If --unixctl is not used at all, the default socket is /pro�
gram.pid.ctl, where pid is program’s process ID.
Specifying none for socket disables the control socket feature.
-h
--help
Prints a brief help message to the console.
-V
--version
Prints version information to the console.
RUNTIME MANAGEMENT COMMANDS
ovn-appctl can send commands to a running ovn-northd process. The currently
supported commands are described below.
exit Causes ovn-northd to gracefully terminate.
pause Pauses ovn-northd. When it is paused, ovn-northd receives
changes from the Northbound and Southbound database changes
as usual, but it does not send any updates. A paused
ovn-northd also drops database locks, which allows any other
non-paused instance of ovn-northd to take over.
resume
Resumes the ovn-northd operation to process Northbound and
Southbound database contents and generate logical flows. This
will also instruct ovn-northd to aspire for the lock on SB
DB.
is-paused
Returns "true" if ovn-northd is currently paused, "false"
otherwise.
status
Prints this server’s status. Status will be "active" if ovn-
northd has acquired OVSDB lock on SB DB, "standby" if it has
not or "paused" if this instance is paused.
sb-cluster-state-reset
Reset southbound database cluster status when databases are
destroyed and rebuilt.
If all databases in a clustered southbound database are re‐
moved from disk, then the stored index of all databases will
be reset to zero. This will cause ovn-northd to be unable to
read or write to the southbound database, because it will al‐
ways detect the data as stale. In such a case, run this com‐
mand so that ovn-northd will reset its local index so that it
can interact with the southbound database again.
nb-cluster-state-reset
Reset northbound database cluster status when databases are
destroyed and rebuilt.
This performs the same task as sb-cluster-state-reset except
for the northbound database client.
parallel-build/set-n-threads N
Set the number of threads used for building logical flows.
When N is within [2-256], parallelization is enabled. When N
is 1 parallelization is disabled. When N is less than 1 or
more than 256, an error is returned. If ovn-northd fails to
start parallelization (e.g. fails to setup semaphores), par‐
allelization is disabled and an error is returned.
parallel-build/get-n-threads
Return the number of threads used for building logical flows.
nb-connection-status
Prints whether the connection to the OVN Northbound database
is currently connected or not.
sb-connection-status
Prints whether the connection to the OVN Southbound database
is currently connected or not.
debug/chassis-features-list
Lists the chassis feature flags and their current values as
determined by ovn-northd. These features reflect the capabil‐
ities reported by the connected chassis.
inc-engine/show-stats
Display ovn-northd engine counters. For each engine node the
following counters have been added:
• recompute
• compute
• abort
inc-engine/show-stats engine_node_name [counter_name]
Display the ovn-northd engine counter(s) for the specified
engine_node_name. counter_name is optional and can be one of
recompute, compute or cancel.
inc-engine/clear-stats
Reset ovn-northd engine counters.
inc-engine/recompute
Triggers a full recompute of the incremental processing en‐
gine on the next iteration.
inc-engine/compute-log-timeout msecs
Sets the timeout in milliseconds for logging engine compute
events.
inc-engine/list-stopwatches [node]
Lists the engine nodes and their change handler names. If
node is specified, only the handlers for that engine node are
listed.
inc-engine/enable-stopwatch [node]
Enables the per-node and per-handler stopwatches in the in‐
cremental processing engine. If node is specified, only that
node’s stopwatches are enabled; otherwise all nodes are af‐
fected. While enabled, every engine node recompute and change
handler invocation is timed and the results can be viewed
with the stopwatch/show command. Stopwatches are disabled by
default because they add measurable CPU overhead.
inc-engine/disable-stopwatch [node]
Disables the per-node and per-handler stopwatches in the in‐
cremental processing engine. If node is specified, only that
node’s stopwatches are disabled; otherwise all nodes are af‐
fected. This is the default state.
ACTIVE-STANDBY FOR HIGH AVAILABILITY
You may run ovn-northd more than once in an OVN deployment. When connected
to a standalone or clustered DB setup, OVN will automatically ensure that
only one of them is active at a time. If multiple instances of ovn-northd
are running and the active ovn-northd fails, one of the hot standby in‐
stances of ovn-northd will automatically take over.
Active-Standby with multiple OVN DB servers
You may run multiple OVN DB servers in an OVN deployment with:
• OVN DB servers deployed in active/passive mode with one ac‐
tive and multiple passive ovsdb-servers.
• ovn-northd also deployed on all these nodes, using unix ctl
sockets to connect to the local OVN DB servers.
In such deployments, the ovn-northds on the passive nodes will process the
DB changes and compute logical flows to be thrown out later, because write
transactions are not allowed by the passive ovsdb-servers. It results in
unnecessary CPU usage.
With the help of runtime management command pause, you can pause ovn-northd
on these nodes. When a passive node becomes master, you can use the runtime
management command resume to resume the ovn-northd to process the DB
changes.
LOGICAL FLOW TABLE STRUCTURE
For a detailed description of the logical flow tables that ovn-northd popu‐
lates in the OVN_Southbound database, including logical switch and router
datapath pipelines and drop sampling behavior, see ovn-logical-flows(7).
OVN 26.09.90 ovn-northd ovn-northd(8)