=================================== Red Hat network scripts integration =================================== 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 ````, create or edit ``/etc/sysconfig/network-scripts/ifcfg-``. 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 . Otherwise, it represents a port on an OVS bridge and TYPE must have one of the following values: * ``OVSPort``, if ```` is a physical port (e.g. eth0) or virtual port (e.g. vif1.0). * ``OVSIntPort``, if ```` is an internal port (e.g. a tagged VLAN). * ``OVSBond``, if ```` is an OVS bond. * ``OVSTunnel``, if ```` is an OVS tunnel. * ``OVSPatchPort``, if ```` is a patch port Additionally the following DPDK port types may be available, depends on OVS build- and runtime configuration: * ``OVSDPDKPort``, if ```` is a physical DPDK NIC port (name must start with ``dpdk`` and end with portid, eg ``dpdk0``) * ``OVSDPDKRPort``, if ```` is a DPDK ring port (name must start with ``dpdkr`` and end with portid, e.g. ``dpdkr0``) * ``OVSDPDKVhostUserPort`` if ```` is a DPDK vhost-user port * ``OVSDPDKBond`` if ```` 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. Note ---- * ``ifdown`` on 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 (with ``TYPE=Bridge``). * If ``ifup`` on an interface is called multiple times, one can see ``RTNETLINK answers: File exists`` printed on the console. This comes from ifup-eth trying to add zeroconf route multiple times and is harmless. Examples -------- 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 ``OVSBOOTPROTO`` instead of ``BOOTPROTO``. * 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 ``OVSBOOTPROTO`` or ``BOOTPROTO``. * 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 Reporting Bugs -------------- Please report problems to bugs@openvswitch.org.