Map of datapath types to datapaths. The
column of the
table is used as a key for this map. The value points to a row in
the table.
Set of bridges managed by the daemon.
SSL/TLS used globally by the daemon.
A unique identifier for the Open vSwitch's physical host.
The form of the identifier depends on the type of the host.
The hostname for the host running Open vSwitch. This is a fully
qualified domain name since version 2.6.2.
In Open vSwitch 2.8 and later, the run directory of the running Open
vSwitch daemon. This directory is used for runtime state such as
control and management sockets. The value of is relative to this
directory.
Interval for updating statistics to the database, in milliseconds.
This option will affect the update of the statistics
column in the following tables: Port, Interface
, Mirror.
Default value is 5000 ms.
Getting statistics more frequently can be achieved via OpenFlow.
When ovs-vswitchd starts up, it has an empty flow table
and therefore it handles all arriving packets in its default fashion
according to its configuration, by dropping them or sending them to
an OpenFlow controller or switching them as a standalone switch.
This behavior is ordinarily desirable. However, if
ovs-vswitchd is restarting as part of a ``hot-upgrade,''
then this leads to a relatively long period during which packets are
mishandled.
This option allows for improvement. When ovs-vswitchd
starts with this value set as true, it will neither
flush or expire previously set datapath flows nor will it send and
receive any packets to or from the datapath. When this value is
later set to false, ovs-vswitchd will
start receiving packets from the datapath and re-setup the flows.
Additionally, ovs-vswitchd is prevented from connecting
to controllers when this value is set to true. This
prevents controllers from making changes to the flow table in the
middle of flow restoration, which could result in undesirable
intermediate states. Once this value has been set to
false and the desired flow state has been
restored, ovs-vswitchd will be able to reconnect to
controllers and process any new flow table modifications.
Thus, with this option, the procedure for a hot-upgrade of
ovs-vswitchd becomes roughly the following:
-
Stop
ovs-vswitchd.
-
Set
to true.
-
Start
ovs-vswitchd.
-
Use
ovs-ofctl (or some other program, such as an
OpenFlow controller) to restore the OpenFlow flow table
to the desired state.
-
Set
to false (or remove it entirely from the database).
The ovs-ctl's ``restart'' and ``force-reload-kmod''
functions use the above config option during hot upgrades.
The maximum
number of flows allowed in the datapath flow table. Internally OVS
will choose a flow limit which will likely be lower than this number,
based on real time network conditions. Tweaking this value is
discouraged unless you know exactly what you're doing.
The default is 200000.
The maximum time (in ms) that idle flows will remain cached in the
datapath. Internally OVS will check the validity and activity for
datapath flows regularly and may expire flows quicker than this
number, based on real time network conditions. Tweaking this
value is discouraged unless you know exactly what you're doing.
The default is 10000.
The maximum time (in ms) that revalidator threads will wait before
executing flow revalidation. Note that this is maximum allowed value.
Actual timeout used by OVS is minimum of max-idle and max-revalidator
values. Tweaking this value is discouraged unless you know exactly
what you're doing.
The default is 500.
Set minimum pps that flow must have in order to be revalidated when
revalidation duration exceeds half of max-revalidator config variable.
Setting to 0 means always revalidate flows regardless of pps.
The default is 5.
Set worst case delay (in ms) it might take before statistics of
offloaded flows are updated. Offloaded flows younger than this
delay will always be revalidated regardless of
.
The default is 2000.
Set this value to true to enable netdev flow offload.
The default value is false. Changing this value requires
restarting the daemon
Currently Open vSwitch supports hardware offloading on
Linux systems. On other systems, this value is ignored.
This functionality is considered 'experimental'. Depending
on which OpenFlow matches and actions are configured,
which kernel version is used, and what hardware is
available, Open vSwitch may not be able to offload
functionality to hardware.
In order to dump HW offloaded flows use
ovs-appctl dpctl/dump-flows, ovs-dpctl
doesn't support this functionality. See ovs-vswitchd(8) for details.
This configuration sets the order of the hardware offload providers
to try when multiple exist for a given datapath implementation.
The argument provided should be a list of comma-separated hardware
offload provider names.
If implementations are missing from the list, they are added at the
end in undefined order.
The default value is tc,dpdk. Changing this value
requires restarting the daemon if hardware offload is already
enabled.
Set this value to the number of threads created to manage hardware
offloads.
The default value is 1. Changing this value requires
restarting the daemon.
This is only relevant for userspace datapath and only if
is enabled.
Specified the policy used with HW offloading.
Options:
none
- Add software rule and offload rule to HW.
skip_sw
- Offload rule to HW only.
skip_hw
- Add software rule without offloading rule to HW.
This is only relevant if
is enabled.
The default value is none.
Set this value to true or try to enable
runtime support for DPDK ports. The vswitch must have compile-time
support for DPDK as well.
A value of true will cause the ovs-vswitchd process to
abort if DPDK cannot be initialized. A value of try
will allow the ovs-vswitchd process to continue running even if DPDK
cannot be initialized.
The default value is false. Changing this value requires
restarting the daemon
If this value is false at startup, any dpdk ports which
are configured in the bridge will fail due to memory errors.
Specifies the CPU cores where dpdk lcore threads should be spawned.
The DPDK lcore threads are used for DPDK library tasks, such as
library internal message processing, logging, etc. Value should be in
the form of a hex string (so '0x123') similar to the 'taskset' mask
input.
The lowest order bit corresponds to the first CPU core. A set bit
means the corresponding core is available and an lcore thread will be
created and pinned to it. If the input does not cover all cores,
those uncovered cores are considered not set.
The lowest set core will be assigned in DPDK as the DPDK main thread.
Other set bits will be assigned by DPDK as DPDK worker threads.
As OVS implements its own threading for the datapath (see
), DPDK worker
threads will be unused.
If this option is specified, all OVS main, handler, and revalidator
threads will be pinned to the selected DPDK main thread core.
This means that potentially many threads will share a single CPU
core, which may not be desirable for performance reasons.
If this option is not specified the value for DPDK initialization
will be auto-determined and all OVS main, revalidator and handler
threads will float on the OVS cpu affinity list.
Specifies CPU mask for setting the cpu affinity of PMD (Poll
Mode Driver) threads. Value should be in the form of hex string,
similar to the dpdk EAL '-c COREMASK' option input or the 'taskset'
mask input.
The lowest order bit corresponds to the first CPU core. A set bit
means the corresponding core is available and a pmd thread will be
created and pinned to it. If the input does not cover all cores,
those uncovered cores are considered not set.
If not specified, one pmd thread will be created for each numa node
and pinned to any available core on the numa node by default.
Specifies the amount of memory to preallocate from the hugepage pool,
regardless of socket. It is recommended that dpdk-socket-mem is used
instead.
Specifies the amount of memory to preallocate from the hugepage pool,
on a per-socket basis.
The specifier is a comma-separated string, in ascending order of CPU
socket. E.g. On a four socket system 1024,0,2048 would set socket 0
to preallocate 1024MB, socket 1 to preallocate 0MB, socket 2 to
preallocate 2048MB and socket 3 (no value given) to preallocate 0MB.
If and
are not specified,
neither will be used and there will be no default value for each numa
node. DPDK defaults will be used instead.
If and
are specified at
the same time,
will be used as default.
Changing this value requires restarting the daemon.
Limits the maximum amount of memory that can be used from the
hugepage pool, on a per-socket basis.
The specifier is a comma-separated list of memory limits per socket.
0 will disable the limit for a particular socket.
If not specified, OVS will not configure limits by default.
Changing this value requires restarting the daemon.
Specifies the path to the hugetlbfs mount point.
If not specified, this will be guessed by the DPDK library (default
is /dev/hugepages). Changing this value requires restarting the
daemon.
Specifies whether DPDK should probe all devices available at the
time DPDK is initialized. When set to false (the
default), OVS will instruct DPDK to skip probing devices at
initialization, unless
already contains allowed or blocked devices. This is required when
declaring DPDK ports using the
class=eth,mac=XX:XX:XX:XX:XX:XX syntax.
Enabling this option implies higher resource consumption, as OVS may
not use all probed devices. It may also cause undesired side effects
such as additional interrupt handling and link status checks for
unused devices. For example, mlx5 devices maintain link status and
liveness by taking kernel locks frequently, even when OVS only uses
a subset of the available ports.
Note that this option has no effect when
contains allowed
(-a or --allow) or blocked
(-b or --block) devices, as DPDK will
honor those specifications regardless of this setting.
Defaults to false.
Specifies additional eal command line arguments for DPDK.
The default is empty. Changing this value requires restarting the
daemon
Specifies a relative path from to the vhost-user unix domain socket files. If this
value is unset, the sockets are put directly in .
Changing this value requires restarting the daemon.
vHost IOMMU is a security feature, which restricts the vhost memory
that a virtio device may access. vHost IOMMU support is disabled by
default, due to a bug in QEMU implementations of the vhost REPLY_ACK
protocol, (on which vHost IOMMU relies) prior to v2.9.1. Setting this
value to true enables vHost IOMMU support for vHost User
Client ports in OvS-DPDK, starting from DPDK v17.11.
Changing this value requires restarting the daemon.
vHost post-copy is a feature which allows switching live migration
of VM attached to dpdkvhostuserclient port to post-copy mode if
default pre-copy migration can not be converged or takes too long to
converge.
Setting this value to true enables vHost post-copy
support for all dpdkvhostuserclient ports. Available starting from
DPDK v18.11 and QEMU 2.12.
Changing this value requires restarting the daemon.
By default OVS DPDK uses a shared memory model wherein devices
that have the same MTU and socket values can share the same
mempool. Setting this value to true changes this
behaviour. Per port memory allow DPDK devices to use private
memory per device. This can provide greater transparency as
regards memory usage but potentially at the cost of greater memory
requirements.
Changing this value requires restarting the daemon if dpdk-init has
already been set to true.
Specifies dpdk shared mempool config.
Value should be set in the following form:
other_config:shared-mempool-config=<
user-shared-mempool-mtu-list>
where
-
<user-shared-mempool-mtu-list> ::=
NULL | <non-empty-list>
-
<non-empty-list> ::= <user-mtus> |
<user-mtus> ,
<non-empty-list>
-
<user-mtus> ::= <mtu-all-socket> |
<mtu-socket-pair>
-
<mtu-all-socket> ::= <mtu>
-
<mtu-socket-pair> ::= <mtu> : <socket-id>
Changing this value requires restarting the daemon if dpdk-init has
already been set to true.
Specifies the time in microseconds that a packet can wait in output
batch for sending i.e. amount of time that packet can spend in an
intermediate output queue before sending to netdev.
This option can be used to configure balance between throughput
and latency. Lower values decreases latency while higher values
may be useful to achieve higher performance.
Defaults to 0 i.e. instant packet sending (latency optimized).
Enables recording of detailed PMD performance metrics for analysis
and trouble-shooting. This can have a performance impact in the
order of 1%.
Defaults to false but can be changed at any time.
Signature match cache or SMC is a cache between EMC and megaflow
cache. It does not store the full key of the flow, so it is more
memory efficient comparing to EMC cache. SMC is especially useful
when flow count is larger than EMC capacity.
Defaults to false but can be changed at any time.
Specifies how RX queues will be automatically assigned to CPU cores.
Options:
cycles
- Rxqs will be sorted by order of measured processing cycles
before being assigned to CPU cores.
roundrobin
- Rxqs will be round-robined across CPU cores.
group
- Rxqs will be sorted by order of measured processing cycles
before being assigned to CPU cores with lowest estimated load.
The default value is cycles.
Changing this value will affect an automatic re-assignment of Rxqs to
CPUs. Note: Rxqs mapped to CPU cores with
pmd-rxq-affinity are unaffected.
Specifies if a CPU core will be isolated after being pinned with
an Rx queue.
Set this value to false to non-isolate a CPU core after
it is pinned with an Rxq using pmd-rxq-affinity. This
will allow OVS to assign other Rxqs to that CPU core.
The default value is true.
This can only be false when pmd-rxq-assign
is set to group.
Attempts to specify the number of threads for software datapaths to
use for handling new flows. Some datapaths may choose to ignore
this and it will be set to a sensible option for the datapath type.
This configuration is per datapath. If you have more than one
software datapath (e.g. some system bridges and some
netdev bridges), then the total number of threads is
n-handler-threads times the number of software
datapaths.
Attempts to specify the number of threads for software datapaths to
use for revalidating flows in the datapath. Some datapaths may
choose to ignore this and will set to a sensible option for the
datapath type.
Typically, there is a direct correlation between the
number of revalidator threads, and the number of flows allowed in the
datapath. The default is the number of cpu cores divided by four
plus one. If n-handler-threads is set, the default
changes to the number of cpu cores minus the number
of handler threads.
This configuration is per datapath. If you have more than one
software datapath (e.g. some system bridges and some
netdev bridges), then the total number of threads is
n-handler-threads times the number of software
datapaths.
Specifies the inverse probability (1/emc-insert-inv-prob) of a flow
being inserted into the Exact Match Cache (EMC). On average one in
every emc-insert-inv-prob packets that generate a unique
flow will cause an insertion into the EMC.
A value of 1 will result in an insertion for every flow (1/1 = 100%)
whereas a value of zero will result in no insertions and essentially
disable the EMC.
Defaults to 100 ie. there is (1/100 =) 1% chance of EMC insertion.
Limits the number of VLAN headers that can be matched to the
specified number. Further VLAN headers will be treated as payload,
e.g. a packet with more 802.1q headers will match Ethernet type
0x8100.
Open vSwitch userspace currently supports at most 2 VLANs, and each
datapath has its own limit. If vlan-limit is nonzero,
it acts as a further limit.
If this value is absent, the default is currently 1. This maintains
backward compatibility with controllers that were designed for use
with Open vSwitch versions earlier than 2.8, which only supported one
VLAN.
The maximum time (in seconds) that idle bundles will wait
to be expired since it was either opened, modified or closed.
OpenFlow specification mandates the timeout to be at least one
second. The default is 10 seconds.
Configures HW offload rebalancing, that allows to dynamically
offload and un-offload flows while an offload-device is out of
resources (OOR). This policy allows flows to be selected for
offloading based on the packets-per-second (pps) rate of flows.
Set this value to true to enable this option.
The default value is false. Changing this value requires
restarting the daemon.
This is only relevant if HW offloading is enabled (hw-offload).
When this policy is enabled, it also requires 'tc-policy' to
be set to 'skip_sw'.
Configures PMD Auto Load Balancing that allows automatic assignment of
RX queues to PMDs if any of PMDs is overloaded (i.e. a processing
cycles >
).
It uses current scheme of cycle based assignment of RX queues that
are not statically pinned to PMDs.
The default value is false.
Set this value to true to enable this option. It is
currently disabled by default and an experimental feature.
This only comes in effect if cycle based assignment is enabled and
there are more than one non-isolated PMDs present and at least one of
it polls more than one queue.
The minimum time (in minutes) 2 consecutive PMD Auto Load Balancing
iterations.
The default value is 1 min. If configured to 0 then it would be
converted to default value i.e. 1 min
This option can be configured to avoid frequent trigger of auto load
balancing of PMDs. For e.g. set the value (in min) such that it occurs
once in few hours or a day or a week.
Specifies the minimum PMD thread load threshold (% of used cycles) of
any non-isolated PMD threads when a PMD Auto Load Balance may be
triggered.
The default value is 95%.
Specifies the minimum evaluated % improvement in load distribution
across the non-isolated PMD threads that will allow a PMD Auto Load
Balance to occur.
Note, setting this parameter to 0 will always allow an auto load
balance to occur regardless of estimated improvement or not.
The default value is 25%.
Specifies the maximum sleep time that will be requested in
microseconds per iteration for a PMD thread which has received zero
or a small amount of packets from the Rx queues it is polling.
The actual sleep time requested is based on the load
of the Rx queues that the PMD polls and may be less than
the maximum value.
The default value is 0 microseconds, which means
that the PMD will not sleep regardless of the load from the
Rx queues that it polls.
The maximum value is 10000 microseconds.
other_config:pmd-sleep-max=<pmd-sleep-list>
where
-
<pmd-sleep-list> ::= NULL | <non-empty-list>
-
<non-empty-list> ::= <pmd-sleep-value> |
<pmd-sleep-value> ,
<non-empty-list>
-
<pmd-sleep-value> ::= <global-default-sleep-value> |
<pmd-core-sleep-pair>
-
<global-default-sleep-value> ::= <max-sleep-time>
-
<pmd-core-sleep-pair> ::= <core> :
<max-sleep-time>
Set this value to true to enable userspace support for
TCP Segmentation Offloading (TSO). When it is enabled, the interfaces
can provide an oversized TCP segment to the datapath and the datapath
will offload the TCP segmentation and checksum calculation to the
interfaces when necessary.
The default value is false. Changing this value requires
restarting the daemon.
The feature only works if Open vSwitch is built with DPDK support.
The feature is considered experimental.
When a flow is installed in the datapath with an empty action list,
it indicates an implicit "drop" action. Most datapaths report this
for event for statistics and monitoring (in datapath-specific ways).
However, if any of the per-bridge or per-flow sampling functionalities
are enabled (e.g: sFlow, IPFIX, local sampling), the action list might
not be empty, but contain an action to implement such functionality.
This makes the datapaths not report the packet drop.
This knob makes Open vSwitch detect when the last datapath action
comes from these sampling features and add an explicit drop action at
the end to keep drop statistics accurate.
The default value is false.