]> git.proxmox.com Git - ovs.git/commitdiff
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 81f49e251183526d9b0b6211f2f24baf9f237271..e3461f42a6446d9d4e97747f6a7f3d5ed7f8aa8b 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 26206742505508d24ec625594eb1123c60336db7..54c1b44b47aa01dfca6cb9b90807c5050c813956 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 5f78f9ca738ba270029d934a8879fd5efa20c23d..46b6ca5a68983221a00c7f292192c377fd91dc36 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 478c5c393698fa3d3cff1013593887542c2e2b66..f3fc05e129621d45ca95f40665382caf2ce3c276 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