summaryrefslogtreecommitdiff
path: root/debian
diff options
context:
space:
mode:
authorGurucharan Shetty <guru@ovn.org>2019-04-19 00:18:27 -0700
committerGurucharan Shetty <guru@ovn.org>2019-04-22 03:12:40 -0700
commit1f00f85c2f44f853d9f36a68b4d81e056f647188 (patch)
treebedbd1a9703dca284fbd748576b0fc8c12bfe9bb /debian
parent3bb479d9aa52f0a25e941bb3156b5fc4ddca3c8c (diff)
downloadopenvswitch-1f00f85c2f44f853d9f36a68b4d81e056f647188.tar.gz
debian: Notes for systemd-networkd integration with OVS.
Signed-off-by: Gurucharan Shetty <guru@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'debian')
-rw-r--r--debian/openvswitch-switch.README.Debian76
1 files changed, 74 insertions, 2 deletions
diff --git a/debian/openvswitch-switch.README.Debian b/debian/openvswitch-switch.README.Debian
index 7556844a1..f5a006221 100644
--- a/debian/openvswitch-switch.README.Debian
+++ b/debian/openvswitch-switch.README.Debian
@@ -40,8 +40,8 @@ In order of increasing manual effort, these are:
* Build and install the kernel module by hand.
-Debian network scripts integration
-----------------------------------
+Debian network scripts (ifupdown) integration
+------------------------------------------------
This package lets a user to optionally configure Open vSwitch bridges
and ports from /etc/network/interfaces. Please refer to the interfaces(5)
manpage for more details regarding /etc/network/interfaces.
@@ -205,6 +205,78 @@ ex 8: Create and destroy bridges.
ifup --allow=ovs $list_of_bridges
ifdown --allow=ovs $list_of_bridges
+Open vSwitch integration with systemd-networkd
+-----------------------------------------------
+
+There is no native integration of OVS with systemd-networkd. That is,
+you cannot create OVS bridges, ports and bonds by simply writing configuration
+files in /etc/systemd/network. But, you can create OVS devices using ovs-vsctl
+and then write configuration files to provide them IP addresses.
+
+As soon as a OVS device is visible, systemd-networkd will provide that device
+an IP address. Since OVS database is persistent across reboots, the OVS
+devices will get re-created after a reboot as soon as OVS startup script is
+invoked. And systemd-networkd will immediately assign the configuration defined
+in /etc/systemd/network.
+
+Example:
+
+If you have a physical ethernet device "ens160" which has been configured with
+DHCP, your systemd-networkd's .network config file will look something like
+this:
+
+```
+[Match]
+Name=ens160
+
+[Network]
+DHCP=ipv4
+
+[DHCP]
+ClientIdentifier=mac
+```
+
+Please note how the DHCP ClientIdentifier above has been configured with the
+mac address.
+
+To create a OVS bridge "br-ens160" and add "ens160" as a port of that
+bridge, you can change the .network configuration for "ens160" to look like:
+
+```
+[Match]
+Name=ens160
+```
+
+Now create a new .network configuration file for "br-ens160". Something like:
+
+```
+[Match]
+Name=br-ens160
+
+[Network]
+DHCP=ipv4
+
+[DHCP]
+ClientIdentifier=mac
+```
+
+Now, use ovs-vsctl to create br-ens160 and add ens160 as a port of it. You
+will also have to flush the IP address of ens160 and restart systemd-networkd
+in the same line. It is important to let br-ens160 have the same mac address as
+ens160 to get the same IP address to br-ens160 from the DHCP server. In the
+below command, "$mac_of_ens160" holds the mac address of ens160. For e.g:
+
+```
+mac_of_ens160='"00:0c:29:77:27:7a"'
+ovs-vsctl --may-exist add-br br-ens160 -- \
+ --may-exist add-port br-ens160 ens160 -- \
+ set interface br-ens160 mac="$mac_of_ens160"; ip addr flush dev ens160; \
+ systemctl restart systemd-networkd
+```
+
+br-ens160 should now have the same DHCP IP. It should also have the correct
+DNS resolution servers configured.
+
Notes on dependencies:
---------------------