summaryrefslogtreecommitdiff
path: root/rhel
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2015-12-01 16:48:04 +0200
committerBen Pfaff <blp@ovn.org>2015-12-22 13:46:42 -0800
commitf6bf8880613aaaf547409e9282b675ad2d85c6ba (patch)
tree67e0ee2abccd1d064e44bf3ca0d895128df021f7 /rhel
parent39c2baa9e357948fe8f45bc9e96661b456538755 (diff)
downloadopenvswitch-f6bf8880613aaaf547409e9282b675ad2d85c6ba.tar.gz
rhel: Add support DPDK port creation via network scripts
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>
Diffstat (limited to 'rhel')
-rw-r--r--rhel/README.RHEL43
-rwxr-xr-xrhel/etc_sysconfig_network-scripts_ifdown-ovs5
-rwxr-xr-xrhel/etc_sysconfig_network-scripts_ifup-ovs24
3 files changed, 69 insertions, 3 deletions
diff --git a/rhel/README.RHEL b/rhel/README.RHEL
index 262067425..54c1b44b4 100644
--- a/rhel/README.RHEL
+++ b/rhel/README.RHEL
@@ -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
--------------
diff --git a/rhel/etc_sysconfig_network-scripts_ifdown-ovs b/rhel/etc_sysconfig_network-scripts_ifdown-ovs
index 5f78f9ca7..46b6ca5a6 100755
--- a/rhel/etc_sysconfig_network-scripts_ifdown-ovs
+++ b/rhel/etc_sysconfig_network-scripts_ifdown-ovs
@@ -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
diff --git a/rhel/etc_sysconfig_network-scripts_ifup-ovs b/rhel/etc_sysconfig_network-scripts_ifup-ovs
index 478c5c393..f3fc05e12 100755
--- a/rhel/etc_sysconfig_network-scripts_ifup-ovs
+++ b/rhel/etc_sysconfig_network-scripts_ifup-ovs
@@ -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