'\" t .\" Title: nm-openvswitch .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 02/24/2024 .\" Manual: Open vSwitch support overview .\" Source: NetworkManager 1.46.0 .\" Language: English .\" .TH "NM\-OPENVSWITCH" "7" "" "NetworkManager 1\&.46\&.0" "Open vSwitch support overview" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" nm-openvswitch \- overview of NetworkManager Open vSwitch support .SH "OVERVIEW" .PP NetworkManager includes basic Open vSwitch support, good enough to be capable of setting up simple Open vSwitch configurations\&. It is not extensive and does not expose all functionality of Open vSwitch provides\&. For large or complicated deployments users are advised to use native tools shipped with Open vSwitch\&. This document seeks to provide overview of functionality currently provided by NetworkManager, its capabilities and limitations\&. .PP First and foremost: NetworkManager applies the configuration by modifying the OVSDB directly\&. Its configuration model follows the OVSDB database model closely and it does not provide the level of abstraction \fBovs\-vsctl\fR provides\&. .PP In practical terms it means the following: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} NetworkManager only ever talks to a single OVSDB instance via an UNIX domain socket\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} The configuration is made up of Bridges, Ports and Interfaces\&. Interfaces are always enslaved to Ports, and Ports are always enslaved to Bridges\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} NetworkManager only creates Bridges, Ports and Interfaces you ask it to\&. Unlike \fBovs\-vsctl\fR, it doesn\*(Aqt create the local interface nor its port automatically\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} You can\*(Aqt enslave Interface directly to a Bridge\&. You always need a Port, even if it has just one interface\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} There are no VLANs\&. The VLAN tagging is enabled by setting a ovs\-port\&.tag property on a Port\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} There are no bonds either\&. The bonding is enabled by enslaving multiple Interfaces to a Port and configured by setting properties on a port\&. .RE .sp .SS "Bridges" .PP Bridges are represented by connections of ovs\-bridge type\&. Due to the limitations of OVSDB, "empty" Bridges (with no Ports) can\*(Aqt exist\&. NetworkManager inserts the records for Bridges into OVSDB when a Port is enslaved\&. .SS "Ports" .PP Ports are represented by connections of ovs\-port type\&. Due to the limitations of OVSDB, "empty" Ports (with no Interfaces) can\*(Aqt exist\&. Ports can also be configured to do VLAN tagging or Bonding\&. NetworkManager inserts the records for Ports into OVSDB when an Interface is enslaved\&. Ports must be enslaved to a Bridge\&. .SS "Interfaces" .PP Interfaces are represented by a connections enslaved to a Port\&. The system interfaces (that have a corresponding Linux link) have a respective connection\&.type of the link (e\&.g\&. "wired", "bond", "dummy", etc\&.)\&. Other interfaces ("internal" or "patch" interfaces) are of ovs\-interface type\&. The OVSDB entries are inserted upon enslavement to a Port\&. .SH "EXAMPLES" .PP \fBExample\ \&1.\ \&Creating a Bridge with a single internal Interface\fR .sp .if n \{\ .RS 4 .\} .nf $ \fBnmcli conn add type ovs\-bridge conn\&.interface bridge0\fR Connection \*(Aqovs\-bridge\-bridge0\*(Aq (d10fc64d\-1d48\-4394\-a1b8\-e1aea72f27d5) successfully added\&. $ \fBnmcli conn add type ovs\-port conn\&.interface port0 master bridge0\fR Connection \*(Aqovs\-port\-port0\*(Aq (5ae22bae\-bba4\-4815\-9ade\-7e635633e1f0) successfully added\&. $ \fBnmcli conn add type ovs\-interface slave\-type ovs\-port conn\&.interface iface0 \e master port0 ipv4\&.method manual ipv4\&.address 192\&.0\&.2\&.1/24\fR Connection \*(Aqovs\-interface\-iface0\*(Aq (3640d2a1\-a2fd\-4718\-92f1\-cffadb5b6cdc) successfully added\&. .fi .if n \{\ .RE .\} .PP As said above, you need to create a Port even for a single interface\&. Also, before you add the Interface, the Bridge and Port devices appear active, but are not configured in OVSDB yet\&. You can inspect the results with \fBovs\-vsctl show\fR\&. .PP \fBExample\ \&2.\ \&Adding a Linux interface to a Bridge\fR .sp .if n \{\ .RS 4 .\} .nf $ \fBnmcli conn add type ovs\-port conn\&.interface port1 master bridge0\fR Connection \*(Aqovs\-port\-port1\*(Aq (67d041eb\-8e7b\-4458\-afee\-a1d07c9c4552) successfully added\&. $ \fBnmcli conn add type ethernet conn\&.interface eth0 master port1\fR Connection \*(Aqovs\-slave\-eth0\*(Aq (d459c45c\-cf78\-4c1c\-b4b7\-505e71379624) successfully added\&. .fi .if n \{\ .RE .\} .PP Again, you need a port\&. .PP \fBExample\ \&3.\ \&Creating a VLAN\fR .sp .if n \{\ .RS 4 .\} .nf $ \fBnmcli conn add type ovs\-port conn\&.interface port2 master bridge0 ovs\-port\&.tag 120\fR Connection \*(Aqovs\-port\-port2\*(Aq (3994c093\-4ef7\-4549\-a4fd\-627b831c3cb8) successfully added\&. $ \fBnmcli conn add type ethernet conn\&.interface eth1 master port2\fR Connection \*(Aqovs\-slave\-eth1\*(Aq (099be06e\-71ad\-484d\-8d5a\-fcadc5f207f5) successfully added\&. .fi .if n \{\ .RE .\} .PP It\*(Aqs just a port with a tag\&. .PP \fBExample\ \&4.\ \&Creating a Bond\fR .sp .if n \{\ .RS 4 .\} .nf $ \fBnmcli conn add type ovs\-port conn\&.interface bond0 master bridge0\fR Connection \*(Aqovs\-port\-bond0\*(Aq (d154ebf9\-e999\-4e1b\-a084\-a3de53d25d8a) successfully added\&. $ \fBnmcli conn add type ethernet conn\&.interface eth2 master bond0\fR Connection \*(Aqovs\-slave\-eth2\*(Aq (475ac1bf\-30b2\-4534\-a877\-27f33f58b082) successfully added\&. $ \fBnmcli conn add type ethernet conn\&.interface eth3 master bond0\fR Connection \*(Aqovs\-slave\-eth3\*(Aq (8dedeecb\-ed12\-482b\-b77a\-24a4fb835136) successfully added\&. .fi .if n \{\ .RE .\} .PP It\*(Aqs just a Port with multiple interfaces\&. See nm\-settings\-nmcli manual for Bonding options you can use with "nmcli c add" or "nmcli c modify"\&. You could even set a VLAN tag on the same Port to do VLAN tagging and bonding at the same time\&. .SH "BUGS" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Not all Open vSwitch capabilities are supported\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Open vSwitch devices don\*(Aqt expose many useful properties on D\-Bus\&. .RE .PP Probably many more\&. .SH "SEE ALSO" .PP \m[blue]\fBRFC 7047: The Open vSwitch Database Management Protocol\fR\m[]\&\s-2\u[1]\d\s+2, \fBovs-vsctl\fR(8), \fBovs-vswitchd.conf.db\fR(5), \fBnm-settings-nmcli\fR(5), \fBnmcli\fR(1) .SH "NOTES" .IP " 1." 4 RFC 7047: The Open vSwitch Database Management Protocol .RS 4 \%https://www.rfc-editor.org/rfc/rfc7047.txt .RE