This is to make explicit the conditional select of libunwind is only needed for libopenvswitch. If we spill it over other packages, the generated kconfig will have recursive dependency issue. 2 new patches were made for this goal The other thing is that "+libunwind" will cause it to be built if any of the packages defined in this Makefile is enabled (y or m). This is at the moment by-design of the build system. Libunwind does not support architectures like arc. Use conditional select To avoid (libunwind) build failures like the following, checking for ELF helper width... configure: error: Unknown ELF target: arc make[3]: *** [Makefile:65: /data/openwrt/build_dir/target-arc_arc700_uClibc/ libunwind-1.3.1/.configured_68b329da9893e34099c7d8ad5cb9c940] Error 1 Things like "+PACKAGE_openvswitch-libopenvswitch:libunwind" will also result in recursive deps error for chains of 3 nodes. Kconfig construct like the following will be made config A tristate select B depends on !(C) || (x) config B tristate select C config C tristate config x bool Other changes include - Shared use of variable ovs__common_depends was removed - Ovn doc build was patched out Link: https://github.com/openwrt/packages/pull/12959#issuecomment-665021413 Reported-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com> |
||
---|---|---|
.. | ||
files | ||
patches | ||
Makefile | ||
openvswitch.mk | ||
README.md |
Which packages to install
Install openvswitch
if you need OpenFlow virtual switch function. It
contains ovs-vswitchd, ovsdb-server and helper utilities such as ovs-vsctl,
ovs-ofctl, ovs-ctl etc.
Linux kernel datapath module openvswitch.ko will also be installed along with
package openvswitch
. Tunnel encap support for gre, geneve, vxlan can be
included by installing kmod-openvswitch-{gre,geneve,vxlan}
respectively
For OVN deployment
- Install
openvswitch-ovn-north
for ovs-northd, ovsdb-server, ovn helper utitlies - Install
openvswitch-ovn-host
for ovn-controller andopenvswitch
How to use them
Open vSwitch provides a few very useful helper script in
/usr/share/openvswitch/scripts/
. A simple initscript is provided. It's
mainly a wrapper around ovs-ctl
and ovn-ctl
with simple knobs from
/etc/config/openvswitch
. Procd is not used here.
/etc/init.d/openvswitch start
/etc/init.d/openvswitch stop
/etc/init.d/openvswitch stop north
/etc/init.d/openvswitch restart ovs
/etc/init.d/openvswitch status
Use ovs-ctl
and ovn-ctl
directly for more functionalities
Open vSwitch in-tree Linux datapath modules
The Open vSwitch build system uses regexp and conditional-compilation heuristics to support building the shipped kernel module source code against a wide range of kernels, as of openvswitch-2.10, the list is supposed to include vanilla linux 3.10 to 4.15, plus a few distro kernels.
It may NOT work
- Sometimes the code does not compile
- Sometimes the code compiles but insmod will fail
- Sometimes modules are loaded okay but actually does not function right
For these reasons, the in-tree datapath modules are NOT visible/enabled by default.
Building and using in-tree datapath modules requires some level of devel abilities to proceed. You are expected to configure build options and build the code on your own
E.g. pair openvswitch userspace with in-tree datapath module
CONFIG_DEVEL=y
CONFIG_PACKAGE_openvswitch=y
# CONFIG_PACKAGE_kmod-openvswitch is not set
CONFIG_PACKAGE_kmod-openvswitch-intree=y
E.g. replace in-tree datapath module with upstream version
opkg remove --force-depends kmod-openvswitch-intree
opkg install kmod-openvswitch
ovs-ctl force-reload-kmod
UCI configuration options
There are 4 config section types in package openvswitch: ovs ovn_northd, ovn_controller & ovs_bridge.
Each of these supports a disabled option, which should be set to 0 to launch the respective daemons.
The ovs_bridge section also supports the options below, for initialising a virtual bridge with an OpenFlow controller.
Name | Type | Required | Default | Description |
---|---|---|---|---|
disabled | boolean | no | 0 | If set to true, disable initialisation of the named bridge |
name | string | no | Inherits UCI config block name | The name of the switch in the OVS daemon |
controller | string | no | (none) | The endpoint of an OpenFlow controller for this bridge |