rhel: Add support DPDK port creation via network scripts
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 1 Dec 2015 14:48:04 +0000 (16:48 +0200)
committerBen Pfaff <blp@ovn.org>
Tue, 22 Dec 2015 21:46:42 +0000 (13:46 -0800)
Add support for creating a userspace bridge and the four DPDK port
types via network scripts + basic documentation.

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: Aaron Conole <aconole@redhat.com>
Acked-by: Flavio Leitner <fbl@sysclose.org>
Signed-off-by: Ben Pfaff <blp@ovn.org>
NEWS
rhel/README.RHEL
rhel/etc_sysconfig_network-scripts_ifdown-ovs
rhel/etc_sysconfig_network-scripts_ifup-ovs

diff --git a/NEWS b/NEWS
index 81f49e2..e3461f4 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -39,6 +39,8 @@ v2.5.0 - xx xxx xxxx
      system to support virtual network abstraction.  OVN complements the
      existing capabilities of OVS to add native support for virtual network
      abstractions, such as virtual L2 and L3 overlays and security groups.
+   - RHEL packaging:
+     * DPDK ports may now be created via network scripts (see README.RHEL).
 
 
 v2.4.0 - 20 Aug 2015
index 2620674..54c1b44 100644 (file)
@@ -27,6 +27,19 @@ assignments.  The following OVS-specific variable names are supported:
 
         * "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, eg "dpdkr0")
+
+        * "OVSDPDKVhostPort" if <name> is a DPDK vhost-cuse port
+
+        * "OVSDPDKVhostUserPort" if <name> is a DPDK vhost-user port
+
     - OVS_BRIDGE: If TYPE is anything other than "OVSBridge", set to
       the name of the OVS bridge to which the port should be attached.
 
@@ -206,6 +219,36 @@ 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
 
 Reporting Bugs
 --------------
index 5f78f9c..46b6ca5 100755 (executable)
@@ -46,7 +46,7 @@ else
 fi
 
 case "$TYPE" in
-       OVSBridge)
+       OVSBridge|OVSUserBridge)
                ${OTHERSCRIPT} ${CONFIG} $2
                retval=$?
                ovs-vsctl -t ${TIMEOUT} -- --if-exists del-br "$DEVICE"
@@ -59,6 +59,9 @@ case "$TYPE" in
        OVSPatchPort|OVSTunnel)
                ovs-vsctl -t ${TIMEOUT} -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE"
                ;;
+       OVSDPDKPort|OVSDPDKRPort|OVSDPDKVhostPort|OVSDPDKVhostUserPort)
+               ovs-vsctl -t ${TIMEOUT} -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE"
+               ;;
        *)
                echo $"Invalid OVS interface type $TYPE"
                exit 1
index 478c5c3..f3fc05e 100755 (executable)
@@ -72,15 +72,19 @@ else
 fi
 
 case "$TYPE" in
-       OVSBridge)
+       OVSBridge|OVSUserBridge)
                # If bridge already exists and is up, it has been configured through
                # other cases like OVSPort, OVSIntPort and OVSBond. If it is down or
                # it does not exist, create it. It is possible for a bridge to exist
                # because it remained in the OVSDB for some reason, but it won't be up.
+               if [ "${TYPE}" = "OVSUserBridge" ]; then
+                       DATAPATH="netdev"
+               fi
                if check_device_down "${DEVICE}"; then
                        ovs-vsctl -t ${TIMEOUT} -- --may-exist add-br "$DEVICE" $OVS_OPTIONS \
                        ${OVS_EXTRA+-- $OVS_EXTRA} \
-                       ${STP+-- set bridge "$DEVICE" stp_enable="${STP}"}
+                       ${STP+-- set bridge "$DEVICE" stp_enable="${STP}"} \
+                       ${DATAPATH+-- set bridge "$DEVICE" datapath_type="$DATAPATH"}
                else
                        OVSBRIDGECONFIGURED="yes"
                fi
@@ -150,6 +154,22 @@ case "$TYPE" in
                ifup_ovs_bridge
                ovs-vsctl -t ${TIMEOUT} -- --may-exist add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS -- set Interface "$DEVICE" type=patch options:peer="${OVS_PATCH_PEER}" ${OVS_EXTRA+-- $OVS_EXTRA}
                ;;
+       OVSDPDKPort)
+               ifup_ovs_bridge
+               ovs-vsctl -t ${TIMEOUT} -- --may-exist add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS -- set Interface "$DEVICE" type=dpdk ${OVS_EXTRA+-- $OVS_EXTRA}
+               ;;
+       OVSDPDKRPort)
+               ifup_ovs_bridge
+               ovs-vsctl -t ${TIMEOUT} -- --may-exist add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS -- set Interface "$DEVICE" type=dpdkr ${OVS_EXTRA+-- $OVS_EXTRA}
+               ;;
+       OVSDPDVhostPort)
+               ifup_ovs_bridge
+               ovs-vsctl -t ${TIMEOUT} -- --may-exist add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS -- set Interface "$DEVICE" type=dpdkvhost ${OVS_EXTRA+-- $OVS_EXTRA}
+               ;;
+       OVSDPDKVhostUserPort)
+               ifup_ovs_bridge
+               ovs-vsctl -t ${TIMEOUT} -- --may-exist add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS -- set Interface "$DEVICE" type=dpdkvhostuser ${OVS_EXTRA+-- $OVS_EXTRA}
+               ;;
        *)
                echo $"Invalid OVS interface type $TYPE"
                exit 1