coolsnowwolf-packages/net/openvswitch
Alexandru Ardelean ad722593a3 openvswitch: remove python-six dependency
Python six was required to build the OVS Python libs during the time
when
they were supporting both Python 2 & 3.

Python 3 is a minimum requirement for OVS Python's libs since commits:
1ca0323e7c
bd90524550
and Six is no longer required since commit
0c4d144a98

The end-goal here is to get rid of the Python Six host-build.
OVS is the only user.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2022-11-10 16:25:28 +08:00
..
files packages: use old extra_command wrapper 2021-07-03 10:21:11 +08:00
patches packages: merge upstream 2021-06-15 17:47:11 +08:00
Makefile openvswitch: remove python-six dependency 2022-11-10 16:25:28 +08:00
openvswitch.mk packages: merge upstream 2021-06-15 17:47:11 +08:00
README.md packages: merge upstream 2021-06-15 17:47:11 +08:00

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 and openvswitch

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