diff options
author | Panu Matilainen <pmatilai@redhat.com> | 2015-12-01 16:48:04 +0200 |
---|---|---|
committer | Ben Pfaff <blp@ovn.org> | 2015-12-22 13:46:42 -0800 |
commit | f6bf8880613aaaf547409e9282b675ad2d85c6ba (patch) | |
tree | 67e0ee2abccd1d064e44bf3ca0d895128df021f7 | |
parent | 39c2baa9e357948fe8f45bc9e96661b456538755 (diff) | |
download | openvswitch-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>
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | rhel/README.RHEL | 43 | ||||
-rwxr-xr-x | rhel/etc_sysconfig_network-scripts_ifdown-ovs | 5 | ||||
-rwxr-xr-x | rhel/etc_sysconfig_network-scripts_ifup-ovs | 24 |
4 files changed, 71 insertions, 3 deletions
@@ -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 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 |