Provided by: openvswitch-switch_2.5.9-0ubuntu0.16.04.3_amd64 bug

NAME

       ovsdb-server - Open vSwitch database server

SYNOPSIS

       ovsdb-server [database]...  [--remote=remote]...  [--run=command]

       Daemon options:
              [--pidfile[=pidfile]] [--overwrite-pidfile] [--detach] [--no-chdir]

       Service options:
              [--service] [--service-monitor]

       Logging options:
              [-v[module[:destination[:level]]]]...
              [--verbose[=module[:destination[:level]]]]...
              [--log-file[=file]]

       Public key infrastructure options:
              [--private-key=privkey.pem]
              [--certificate=cert.pem]
              [--ca-cert=cacert.pem]
              [--bootstrap-ca-cert=cacert.pem]
              [--peer-ca-cert=peer-cacert.pem]

       Runtime management options:
              --unixctl=socket

       Common options:
              [-h | --help] [-V | --version]

DESCRIPTION

       The  ovsdb-server  program  provides  RPC  interfaces to one or more Open vSwitch databases (OVSDBs).  It
       supports JSON-RPC client connections over active or passive TCP/IP or Unix domain sockets.

       Each OVSDB file may be specified on the command line as database.  If none is specified, the  default  is
       /etc/openvswitch/conf.db.   The  database files must already have been created and initialized using, for
       example, ovsdb-tool create.

OPTIONS

       --remote=remote
              Adds remote as a connection method used by ovsdb-server.  remote must take one  of  the  following
              forms:

              pssl:port[:ip]
                     Listen  on the given SSL port for a connection.  By default, connections are not bound to a
                     particular local IP address and it listens only on  IPv4  (but  not  IPv6)  addresses,  but
                     specifying  ip  limits connections to those from the given ip, either IPv4 or IPv6 address.
                     If ip is an IPv6 address, then wrap ip with square brackets,  e.g.:  pssl:6640:[::1].   The
                     --private-key, --certificate, and --ca-cert options are mandatory when this form is used.

              ptcp:port[:ip]
                     Listen  on the given TCP port for a connection.  By default, connections are not bound to a
                     particular local IP address and it listens only on IPv4 (but not IPv6)  addresses,  but  ip
                     may  be  specified  to  listen  only  for  connections to the given ip, either IPv4 or IPv6
                     address.   If  ip  is  an  IPv6  address,  then  wrap  ip  with  square   brackets,   e.g.:
                     ptcp:6640:[::1].

              punix:file
                     On POSIX, listen on the Unix domain server socket named file for a connection.

                     On Windows, listen on a kernel chosen TCP port on the localhost. The kernel chosen TCP port
                     value is written in file.

              ssl:ip:port
                     The  specified  SSL  port  on  the  host  at the given ip, which must be expressed as an IP
                     address (not a DNS name) in IPv4 or IPv6 address format.  If ip is an  IPv6  address,  then
                     wrap  ip with square brackets, e.g.: ssl:[::1]:6640.  The --private-key, --certificate, and
                     --ca-cert options are mandatory when this form is used.

              tcp:ip:port
                     Connect to the given TCP port on ip, where ip can be IPv4 or IPv6 address. If ip is an IPv6
                     address, then wrap ip with square brackets, e.g.: tcp:[::1]:6640.

              unix:file
                     On POSIX, connect to the Unix domain server socket named file.

                     On Windows, connect to a localhost TCP port whose value is written in file.

              db:db,table,column
                     Reads additional connection methods from column in all of the rows in table within db.   As
                     the  contents  of  column  changes,  ovsdb-server  also  adds  and drops connection methods
                     accordingly.

                     If column's type is string or set  of  strings,  then  the  connection  methods  are  taken
                     directly  from the column.  The connection methods in the column must have one of the forms
                     described above.

                     If column's type is UUID or set of UUIDs and references a table, then each UUID  is  looked
                     up  in  the referenced table to obtain a row.  The following columns in the row, if present
                     and of the correct type,  configure  a  connection  method.   Any  additional  columns  are
                     ignored.

                     target (string)
                            Connection  method,  in one of the forms described above.  This column is mandatory:
                            if it is missing or empty then no connection method can be configured.

                     max_backoff (integer)
                            Maximum number of milliseconds to wait between connection attempts.

                     inactivity_probe (integer)
                            Maximum number of milliseconds of idle time on connection to client  before  sending
                            an inactivity probe message.

                     It is an error for column to have another type.

              To connect or listen on multiple connection methods, use multiple --remote options.

       --run=command]
              Ordinarily ovsdb-server runs forever, or until it is told to exit (see RUNTIME MANAGEMENT COMMANDS
              below).   With  this option, ovsdb-server instead starts a shell subprocess running command.  When
              the subprocess terminates, ovsdb-server also exits gracefully.  If the subprocess  exits  normally
              with  exit  code  0,  then ovsdb-server exits with exit code 0 also; otherwise, it exits with exit
              code 1.

              This option can be useful where a database server is needed only to run a  single  command,  e.g.:
              ovsdb-server --remote=punix:socket --run='ovsdb-client dump unix:socket Open_vSwitch'

              This option is not supported on Windows platform.

   Daemon Options
       The following options are valid on POSIX based platforms.

       --pidfile[=pidfile]
              Causes  a  file  (by  default,  ovsdb-server.pid)  to be created indicating the PID of the running
              process.  If the pidfile argument is not specified, or if it does not begin with  /,  then  it  is
              created in /var/run/openvswitch.

              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, ovsdb-server refuses 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  ovsdb-server  as  a background process.  The process forks, and in the child it starts a new
              session, closes the standard file descriptors (which has the side effect of disabling  logging  to
              the  console),  and  changes  its  current directory to the root (unless --no-chdir is specified).
              After the child completes its initialization, the parent exits.  ovsdb-server detaches only  after
              it starts listening on all configured remotes.

       --monitor
              Creates  an  additional  process  to monitor the ovsdb-server daemon.  If the daemon 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, ovsdb-server changes its current working directory to  the
              root  directory  after  it  detaches.   Otherwise,  invoking ovsdb-server 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 ovsdb-server 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.

       --user Causes  ovsdb-server  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
              are assumed respectively. Only daemons started by the root user accepts this argument.

              On  Linux,  daemons  will  be  granted CAP_IPC_LOCK and CAP_NET_BIND_SERVICES before dropping root
              privileges. Daemons interact with datapath, such as ovs-vswitchd, will be granted  two  additional
              capabilities,  namely  CAP_NET_ADMIN and CAP_NET_RAW. The capability change will apply even if new
              user is "root".

              On Windows, this option is not currently supported. For security reasons, specifying  this  option
              will cause the daemon process not to start.

   Service Options
       The following options are valid only on Windows platform.

       --service
              Causes  ovsdb-server  to  run as a service in the background. The service should already have been
              created through external tools like SC.exe.

       --service-monitor
              Causes the ovsdb-server service to be automatically restarted by the Windows services  manager  if
              the service dies or exits for unexpected reasons.

              When --service is not specified, this option has no effect.

   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 separated by spaces or commas or colons, up to  one  from
              each category below:

              •      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,  ovsdb-server  closes  its
                     standard file descriptors, so logging to the console will have no effect.)

                     On  Windows  platform,  syslog  is  accepted  as  a  word and is only useful along with the
                     --syslog-target option (the word has no effect otherwise).

              •      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-appctl(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,  local5, 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 /var/log/openvswitch/ovsdb-server.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  how  syslog  messages  should  be  sent  to  syslog  daemon.  Following forms are
              supported:

              •      libc, use libc syslog() function.  This is the default behavior.  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 domain socket.

              •      unix:file, use 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,  use  UDP  socket.   With  this method it is possible 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,  accidental  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.

   Public Key Infrastructure Options
       The options described below for configuring the SSL public key infrastructure accept a special syntax for
       obtaining  their configuration from the database.  If any of these options is given db:db,table,column as
       its argument, then the actual file name is read  from  the  specified  column  in  table  within  the  db
       database.  The column must have type string or set of strings.  The first nonempty string in the table is
       taken as the file name.  (This means that ordinarily there should be at most one row in table.)

       -p privkey.pem
       --private-key=privkey.pem
              Specifies  a  PEM file containing the private key used as ovsdb-server's identity for outgoing SSL
              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 trustworthy.  The certificate must be signed by the certificate authority (CA)
              that the peer in SSL connections will use to verify it.

       -C cacert.pem
       --ca-cert=cacert.pem
              Specifies  a  PEM  file  containing  the  CA  certificate  that  ovsdb-server should use to verify
              certificates presented to it by SSL peers.  (This may be the same certificate that SSL  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 peers.  This introduces  a  security  risk,
              because it means that certificates cannot be verified to be those of known trusted hosts.

       --bootstrap-ca-cert=cacert.pem
              When cacert.pem exists, this option has the same effect as -C or --ca-cert.  If it does not exist,
              then  ovsdb-server  will  attempt  to obtain the CA certificate from the SSL peer on its first SSL
              connection and save it to the named PEM file.  If it is successful, it will immediately  drop  the
              connection  and  reconnect,  and  from  then  on  all  SSL  connections must be authenticated by a
              certificate signed by the CA certificate thus obtained.

              This option exposes the SSL connection to a man-in-the-middle  attack  obtaining  the  initial  CA
              certificate, but it may be useful for bootstrapping.

              This option is only useful if the SSL peer sends its CA certificate as part of the SSL certificate
              chain.  The SSL protocol does not require the server to send the CA certificate.

              This option is mutually exclusive with -C and --ca-cert.

       --peer-ca-cert=peer-cacert.pem
              Specifies  a  PEM  file  that  contains  one or more additional certificates to send to SSL peers.
              peer-cacert.pem should be the CA certificate used to sign ovsdb-server's own certificate, that is,
              the certificate specified on -c or --certificate.  If ovsdb-server's certificate  is  self-signed,
              then --certificate and --peer-ca-cert should specify the same file.

              This  option  is  not  useful  in  normal operation, because the SSL peer must already have the CA
              certificate for the peer to have any confidence in ovsdb-server's identity.  However, this  offers
              a way for a new installation to bootstrap the CA certificate on its first SSL connection.

   Other Options
       --unixctl=socket
              Sets  the name of the control socket on which ovsdb-server listens for runtime management commands
              (see RUNTIME MANAGEMENT COMMANDS, below).  If socket does not begin with /, it is  interpreted  as
              relative  to  /var/run/openvswitch.   If  --unixctl  is  not  used  at  all, the default socket is
              /var/run/openvswitch/ovsdb-server.pid.ctl, where pid is ovsdb-server's process ID.

              On Windows, uses a kernel chosen TCP port on  the  localhost  to  listen  for  runtime  management
              commands.  The kernel chosen TCP port value is written in a file whose absolute path is pointed by
              socket. If --unixctl is not used at all, the file is created as ovsdb-server.ctl in the configured
              OVS_RUNDIR directory.

              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

       ovs-appctl(8)  can send commands to a running ovsdb-server process.  The currently supported commands are
       described below.

   OVSDB-SERVER COMMANDS
       These commands are specific to ovsdb-server.

       exit   Causes ovsdb-server to gracefully terminate.

       ovsdb-server/compact [db]...
              Compacts each database db in-place.  If no db is  specified,  compacts  every  database  in-place.
              Databases are also automatically compacted occasionally.

       ovsdb-server/reconnect
              Makes ovsdb-server drop all of the JSON-RPC connections to database clients and reconnect.

              This command might be useful for debugging issues with database clients.

       ovsdb-server/add-remote remote
              Adds  a  remote,  as  if --remote=remote had been specified on the ovsdb-server command line.  (If
              remote is already a remote, this command succeeds without changing the configuration.)

       ovsdb-server/remove-remote remote
              Removes the specified remote from the configuration, failing  with  an  error  if  remote  is  not
              configured  as  a  remote.   This  command  only works with remotes that were named on --remote or
              ovsdb-server/add-remote, that is, it will not remove remotes added indirectly  because  they  were
              read  from  the  database  by configuring a db:db,table,column remote.  (You can remove a database
              source with  ovsdb-server/remove-remote  db:db,table,column,  but  not  individual  remotes  found
              indirectly through the database.)

       ovsdb-server/list-remotes
              Outputs  a  list of the currently configured remotes named on --remote or ovsdb-server/add-remote,
              that is, it does not list remotes added indirectly because they were read  from  the  database  by
              configuring a db:db,table,column remote.

       ovsdb-server/add-db database
              Adds  the  database to the running ovsdb-server.  The database file must already have been created
              and initialized using, for example, ovsdb-tool create.

       ovsdb-server/remove-db database
              Removes database from the running ovsdb-server.  database must be a database  name  as  listed  by
              ovsdb-server/list-dbs.

              If   a   remote   has   been   configured   that   points   to   the   specified   database  (e.g.
              --remote=db:database,... on the command line), then it will be  disabled  until  another  database
              with the same name is added again (with ovsdb-server/add-db).

              Any    public    key    infrastructure    options    specified   through   this   database   (e.g.
              --private-key=db:database,... on the command line) will be disabled until  another  database  with
              the same name is added again (with ovsdb-server/add-db).

       ovsdb-server/list-dbs
              Outputs  a  list  of  the  currently configured databases added either through the command line or
              through the ovsdb-server/add-db command.

   VLOG COMMANDS
       These commands manage ovsdb-server's logging settings.

       vlog/set [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 separated by spaces or commas or colons, up to one from
              each category below:

              •      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.

                     On  Windows  platform,  syslog  is  accepted  as  a  word and is only useful along with the
                     --syslog-target option (the word has no effect otherwise).

              •      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
              ovsdb-server was invoked with the --log-file option.

              For compatibility with older versions of OVS, any is accepted as a word but has no effect.

       vlog/set PATTERN:destination:pattern
              Sets  the log pattern for destination to pattern.  Refer to ovs-appctl(8) for a description of the
              valid syntax for pattern.

       vlog/list
              Lists the supported logging modules and their current levels.

       vlog/list-pattern
              Lists logging patterns used for each destination.

       vlog/reopen
              Causes ovsdb-server to close and reopen its log file.  (This is useful after rotating  log  files,
              to cause a new log file to be used.)

              This has no effect unless ovsdb-server was invoked with the --log-file option.

       vlog/disable-rate-limit [module]...
       vlog/enable-rate-limit [module]...
              By  default, ovsdb-server limits the rate at which certain messages can be logged.  When a message
              would appear more frequently than the limit, it is suppressed.  This saves disk space, makes  logs
              easier  to  read,  and speeds up execution, but occasionally troubleshooting requires more detail.
              Therefore, vlog/disable-rate-limit allows rate limits to be disabled at the level of an individual
              log module.  Specify one or more module names, as displayed by the vlog/list command.   Specifying
              either no module names at all or the keyword any disables rate limits for every log module.

              The  vlog/enable-rate-limit  command,  whose syntax is the same as vlog/disable-rate-limit, can be
              used to re-enable a rate limit that was previously disabled.

   MEMORY COMMANDS
       These commands report memory usage.

       memory/show
              Displays some basic statistics about ovsdb-server's memory usage.   ovsdb-server  also  logs  this
              information soon after startup and periodically as its memory consumption grows.

   COVERAGE COMMANDS
       These  commands  manage  ovsdb-server's ``coverage counters,'' which count the number of times particular
       events occur during a daemon's runtime.  In addition to these commands, ovsdb-server  automatically  logs
       coverage  counter values, at INFO level, when it detects that the daemon's main loop takes unusually long
       to run.

       Coverage counters are useful mainly for performance analysis and debugging.

       coverage/show
              Displays the averaged per-second rates for the last few seconds, the  last  minute  and  the  last
              hour, and the total counts of all of the coverage counters.

SPECIFICATIONS

       ovsdb-server  implements  the  Open  vSwitch  Database  (OVSDB)  protocol specified in RFC 7047, with the
       following clarifications:

       3.1. JSON Usage
              RFC 4627 says that names within a JSON object should be unique.   The  Open  vSwitch  JSON  parser
              discards all but the last value for a name that is specified more than once.

              The  definition  of <error> allows for implementation extensions.  Currently ovsdb-server uses the
              following additional "error" strings which might change in later releases):

              syntax error or unknown column
                     The request could not be parsed as an OVSDB request.  An additional "syntax" member,  whose
                     value  is a string that contains JSON, may narrow down the particular syntax that could not
                     be parsed.

              internal error
                     The request triggered a bug in ovsdb-server.

              ovsdb error
                     A map or set contains a duplicate key.

       3.2. Schema Format
              RFC 7047 requires the "version" field in  <database-schema>.   Current  versions  of  ovsdb-server
              allow it to be omitted (future versions are likely to require it).

       4. Wire Protocol
              The original OVSDB specifications included the following reason, omitted from RFC 7047, to operate
              JSON-RPC directly over a stream instead of over HTTP:

              •      JSON-RPC  is a peer-to-peer protocol, but HTTP is a client-server protocol, which is a poor
                     match.  Thus, JSON-RPC over HTTP requires the client to periodically  poll  the  server  to
                     receive server requests.

              •      HTTP  is  more  complicated  than  stream connections and doesn't provide any corresponding
                     advantage.

              •      The JSON-RPC specification for HTTP transport is incomplete.

       4.1.5. Monitor
              For backward compatibility, ovsdb-server currently permits a single <monitor-request> to  be  used
              instead  of  an  array;  it is treated as a single-element array.  Future versions of ovsdb-server
              might remove this compatibility feature.

              Because the <json-value> parameter is used to match subsequent update notifications (see below) to
              the request, it must be unique among all active monitors.  ovsdb-server rejects attempt to  create
              two monitors with the same identifier.

       5.1. Notation
              For <condition>, RFC 7047 only allows the use of !=, ==, includes, and excludes operators with set
              types.   Open  vSwitch  2.4  and  later  extend  <condition>  to allow the use of <, <=, >=, and >
              operators with columns with type ``set of 0 or 1 integer'' and ``set of  0  or  1  real''.   These
              conditions  evaluate to false when the column is empty, and otherwise as described in RFC 7047 for
              integer and real types.

BUGS

       In Open vSwitch before version 2.4, when ovsdb-server sent JSON-RPC error responses to some requests,  it
       incorrectly  formulated them with the result and error swapped, so that the response appeared to indicate
       success (with a nonsensical result) rather than an error.  The requests that suffered from  this  problem
       were:

       transact
       get_schema
              Only if the request names a nonexistent database.

       monitor
       lock
       unlock In all error cases.

       Of  these  cases,  the  only  error that a well-written application is likely to encounter in practice is
       monitor of tables or columns that do not exist, in an situation where the application has  been  upgraded
       but  the  old  database  schema  is  still  temporarily  in use.  To handle this situation gracefully, we
       recommend that clients should treat a monitor response with a result that  contains  an  error  key-value
       pair as an error (assuming that the database being monitored does not contain a table named error).

SEE ALSO

       ovsdb-tool(1).

Open vSwitch                                          2.5.9                                      ovsdb-server(1)