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 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.
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.
For performance reasons, it is best to set this to a single core on
the system, rather than allow lcore threads to float.
If not specified, the value will be determined by choosing the lowest
CPU core from initial cpu affinity list. Otherwise, the value will be
passed directly to the DPDK library.
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 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
.
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.