The RPM packages for Open vSwitch provide some integration with Red Hat's network scripts. Using this integration is optional.
To use the integration for a Open vSwitch bridge or interface named <name>,
create or edit /etc/sysconfig/network-scripts/ifcfg-<name>. This is a
shell script that consists of a series of VARIABLE=VALUE assignments. The
following OVS-specific variable names are supported:
- DEVICETYPE
- Always set to "ovs".
- TYPE
If this is "OVSBridge", then this file represents an OVS bridge named <name>. Otherwise, it represents a port on an OVS bridge and TYPE must have one of the following values:
OVSPort, if<name>is a physical port (e.g. eth0) or virtual port (e.g. vif1.0).OVSIntPort, if<name>is an internal port (e.g. a tagged VLAN).OVSBond, if<name>is an OVS bond.OVSTunnel, if<name>is an OVS tunnel.OVSPatchPort, if<name>is a patch port
Additionally the following DPDK port types may be available, depends on OVS build- and runtime configuration:
OVSDPDKPort, if<name>is a physical DPDK NIC port (name must start withdpdkand end with portid, egdpdk0)OVSDPDKRPort, if<name>is a DPDK ring port (name must start withdpdkrand end with portid, e.g.dpdkr0)OVSDPDKVhostUserPortif<name>is a DPDK vhost-user portOVSDPDKBondif<name>is an OVS DPDK bond.
- OVS_BRIDGE
- If TYPE is anything other than "OVSBridge", set to the name of the OVS bridge to which the port should be attached.
- OVS_OPTIONS
- Optionally, extra options to set in the "Port" table when adding the port to the bridge, as a sequence of column[:key]=value options. For example, "tag=100" to make the port an access port for VLAN 100. See the documentation of "add-port" in ovs-vsctl(8) for syntax and the section on the Port table in ovs-vswitchd.conf.db(5) for available options.
- OVS_EXTRA
- Optionally, additional ovs-vsctl commands, separated by
--(double dash). - BOND_IFACES
- For "OVSBond" and "OVSDPDKBond" interfaces, a list of physical interfaces to bond together.
- OVS_TUNNEL_TYPE
- For "OVSTunnel" interfaces, the type of the tunnel. For example, "gre", "vxlan", etc.
- OVS_TUNNEL_OPTIONS
- For "OVSTunnel" interfaces, this field should be used to specify the tunnel options like remote_ip, key, etc.
- OVS_PATCH_PEER
- For "OVSPatchPort" devices, this field specifies the patch's peer on the other bridge.
ifdownon a bridge will not bring individual ports on the bridge down. "ifup" on a bridge will not add ports to the bridge. This behavior should be compatible with standard bridges (withTYPE=Bridge).- If
ifupon an interface is called multiple times, one can seeRTNETLINK answers: File existsprinted on the console. This comes from ifup-eth trying to add zeroconf route multiple times and is harmless.
Standalone bridge:
==> ifcfg-ovsbridge0 <== DEVICE=ovsbridge0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSBridge BOOTPROTO=static IPADDR=A.B.C.D NETMASK=X.Y.Z.0 HOTPLUG=no
Enable DHCP on the bridge:
- Needs
OVSBOOTPROTOinstead ofBOOTPROTO. - All the interfaces that can reach the DHCP server as a space separated list
in
OVSDHCPINTERFACES.
DEVICE=ovsbridge0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSBridge OVSBOOTPROTO="dhcp" OVSDHCPINTERFACES="eth0" HOTPLUG=no
Adding Internal Port to ovsbridge0:
==> ifcfg-intbr0 <== DEVICE=intbr0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSIntPort OVS_BRIDGE=ovsbridge0 HOTPLUG=no
Internal Port with fixed IP address:
DEVICE=intbr0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSIntPort OVS_BRIDGE=ovsbridge0 BOOTPROTO=static IPADDR=A.B.C.D NETMASK=X.Y.Z.0 HOTPLUG=no
Internal Port with DHCP:
- Needs
OVSBOOTPROTOorBOOTPROTO. - All the interfaces that can reach the DHCP server as a space separated list
in
OVSDHCPINTERFACES.
DEVICE=intbr0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSIntPort OVS_BRIDGE=ovsbridge0 OVSBOOTPROTO="dhcp" OVSDHCPINTERFACES="eth0" HOTPLUG=no
Adding physical eth0 to ovsbridge0 described above:
==> ifcfg-eth0 <== DEVICE=eth0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSPort OVS_BRIDGE=ovsbridge0 BOOTPROTO=none HOTPLUG=no
Tagged VLAN interface on top of ovsbridge0:
==> ifcfg-vlan100 <== DEVICE=vlan100 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSIntPort BOOTPROTO=static IPADDR=A.B.C.D NETMASK=X.Y.Z.0 OVS_BRIDGE=ovsbridge0 OVS_OPTIONS="tag=100" OVS_EXTRA="set Interface $DEVICE external-ids:iface-id=$(hostname -s)-$DEVICE-vif" HOTPLUG=no
Bonding:
==> ifcfg-bond0 <== DEVICE=bond0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSBond OVS_BRIDGE=ovsbridge0 BOOTPROTO=none BOND_IFACES="gige-1b-0 gige-1b-1 gige-21-0 gige-21-1" OVS_OPTIONS="bond_mode=balance-tcp lacp=active" HOTPLUG=no
==> ifcfg-gige-* <== DEVICE=gige-* ONBOOT=yes HOTPLUG=no
An Open vSwitch Tunnel:
==> ifcfg-gre0 <== DEVICE=ovs-gre0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSTunnel OVS_BRIDGE=ovsbridge0 OVS_TUNNEL_TYPE=gre OVS_TUNNEL_OPTIONS="options:remote_ip=A.B.C.D"
Patch Ports:
==> ifcfg-patch-ovs-0 <== DEVICE=patch-ovs-0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSPatchPort OVS_BRIDGE=ovsbridge0 OVS_PATCH_PEER=patch-ovs-1
==> ifcfg-patch-ovs-1 <== DEVICE=patch-ovs-1 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSPatchPort OVS_BRIDGE=ovsbridge1 OVS_PATCH_PEER=patch-ovs-0
User bridge:
==> ifcfg-obr0 <== DEVICE=obr0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSUserBridge BOOTPROTO=static IPADDR=A.B.C.D NETMASK=X.Y.Z.0 HOTPLUG=no
DPDK NIC port:
==> ifcfg-dpdk0 <== DPDK vhost-user port: DEVICE=dpdk0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSDPDKPort OVS_BRIDGE=obr0
==> ifcfg-vhu0 <== DEVICE=vhu0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSDPDKVhostUserPort OVS_BRIDGE=obr0
==> ifcfg-bond0 <== DEVICE=bond0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSDPDKBond OVS_BRIDGE=ovsbridge0 BOOTPROTO=none BOND_IFACES="dpdk0 dpdk1" OVS_OPTIONS="bond_mode=active-backup" HOTPLUG=no
Please report problems to bugs@openvswitch.org.