2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-25 15:07:05 +00:00
Files
openvswitch/rhel
Stephen Finucane 11e029064c doc: Populate 'faq' section
This is mostly the exact same contents, albeit broken up into multiple
files.

Signed-off-by: Stephen Finucane <stephen@that.guru>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2016-12-12 08:58:14 -08:00
..

===================================
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 ``<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
    with ``dpdk`` and end with portid, eg ``dpdk0``)

  * ``OVSDPDKRPort``, if ``<name>`` is a DPDK ring port (name must start with
    ``dpdkr`` and end with portid, e.g. ``dpdkr0``)

  * ``OVSDPDKVhostUserPort`` if ``<name>`` is a DPDK vhost-user port

  * ``OVSDPDKBond`` if ``<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.

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.