2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-31 22:35:15 +00:00

doc: Remove ivshmem instructions.

ivshmem is a path to the guest using DPDK rings that was
introduced before userspace vhost was available in the OVS-DPDK
datapath. ivshmem is external to OVS but the scheme of using it
with DPDK rings is documented.

Remove ivshmem instruction documentation because:

- The ivshmem library has been removed in DPDK since DPDK 16.11.
- The instructions/scheme provided will not work with current
  supported and future DPDK versions.
- The linked patch needed to enable support in QEMU has never
  been upstreamed and does not apply to the last 4 QEMU releases.
- Userspace vhost has become the defacto OVS-DPDK path to the guest.

Fixes: 04de404e1b ("netdev-dpdk: Add support for DPDK 16.11")
Cc: Ciara Loftus <ciara.loftus@intel.com>
Cc: Stephen Finucane <stephen@that.guru>
Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
Acked-by: Stephen Finucane <stephen@that.guru>
Acked-by: Mauricio Vasquez B <mauricio.vasquez@polito.it>
Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
This commit is contained in:
Kevin Traynor
2017-01-03 18:21:28 +00:00
committed by Daniele Di Proietto
parent 932c96b7b0
commit 90ca71dd31
6 changed files with 2 additions and 107 deletions

View File

@@ -29,7 +29,6 @@ EXTRA_DIST += \
Documentation/topics/design.rst \
Documentation/topics/dpdk/index.rst \
Documentation/topics/dpdk/vhost-user.rst \
Documentation/topics/dpdk/ivshmem.rst \
Documentation/topics/testing.rst \
Documentation/topics/high-availability.rst \
Documentation/topics/integration.rst \

View File

@@ -558,71 +558,3 @@ devices to bridge ``br0``. Once complete, follow the below steps:
Check traffic on multiple queues::
$ cat /proc/interrupts | grep virtio
PHY-VM-PHY (IVSHMEM loopback)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IVSHMEM can also be validated using the PHY-VM-PHY configuration. To begin, add
a userspace bridge, two ``dpdk`` (PHY) ports, and a single ``dpdkr`` port::
# Add userspace bridge
$ ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev
# Add two dpdk ports
$ ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 type=dpdk
$ ovs-vsctl add-port br0 dpdk1 -- set Interface dpdk1 type=dpdk
# Add one dpdkr ports
$ ovs-vsctl add-port br0 dpdkr0 -- set Interface dpdkr0 type=dpdkr
.. TODO(stephenfin): What flows should the user configure?
QEMU must be patched to enable IVSHMEM support::
$ cd /usr/src/
$ wget http://wiki.qemu.org/download/qemu-2.2.1.tar.bz2
$ tar -jxvf qemu-2.2.1.tar.bz2
$ cd /usr/src/qemu-2.2.1
$ wget https://raw.githubusercontent.com/netgroup-polito/un-orchestrator/master/orchestrator/compute_controller/plugins/kvm-libvirt/patches/ivshmem-qemu-2.2.1.patch
$ patch -p1 < ivshmem-qemu-2.2.1.patch
$ ./configure --target-list=x86_64-softmmu --enable-debug --extra-cflags='-g'
$ make -j 4
In addition, the ``cmdline_generator`` utility must be downloaded and built::
$ mkdir -p /usr/src/cmdline_generator
$ cd /usr/src/cmdline_generator
$ wget https://raw.githubusercontent.com/netgroup-polito/un-orchestrator/master/orchestrator/compute_controller/plugins/kvm-libvirt/cmdline_generator/cmdline_generator.c
$ wget https://raw.githubusercontent.com/netgroup-polito/un-orchestrator/master/orchestrator/compute_controller/plugins/kvm-libvirt/cmdline_generator/Makefile
$ export RTE_SDK=/usr/src/dpdk-16.11
$ export RTE_TARGET=x86_64-ivshmem-linuxapp-gcc
$ make
Once both the patche QEMU and ``cmdline_generator`` utilities have been built,
run ``cmdline_generator`` to generate a suitable QEMU commandline, and use this
to instantiate a guest. For example::
$ ./build/cmdline_generator -m -p dpdkr0 XXX
$ cmdline=`cat OVSMEMPOOL`
$ export VM_NAME=ivshmem-vm
$ export QCOW2_IMAGE=/root/CentOS7_x86_64.qcow2
$ export QEMU_BIN=/usr/src/qemu-2.2.1/x86_64-softmmu/qemu-system-x86_64
$ taskset 0x20 $QEMU_BIN -cpu host -smp 2,cores=2 -hda $QCOW2_IMAGE \
-m 4096 --enable-kvm -name $VM_NAME -nographic -vnc :2 \
-pidfile /tmp/vm1.pid $cmdline
When the guest has started, connect to it and build and run the sample
``dpdkr`` app. This application will simply loopback packets received over the
DPDK ring port::
$ echo 1024 > /proc/sys/vm/nr_hugepages
$ mount -t hugetlbfs nodev /dev/hugepages (if not already mounted)
# Build the DPDK ring application in the VM
$ export RTE_SDK=/root/dpdk-16.11
$ export RTE_TARGET=x86_64-ivshmem-linuxapp-gcc
$ make
# Run dpdkring application
$ ./build/dpdkr -c 1 -n 4 -- -n 0
# where "-n 0" refers to ring '0' i.e dpdkr0

View File

@@ -72,8 +72,7 @@ Deeper Dive
:doc:`topics/porting`
- **DPDK** :doc:`howto/dpdk` |
:doc:`topics/dpdk/vhost-user` |
:doc:`topics/dpdk/ivshmem`
:doc:`topics/dpdk/vhost-user`
- **Windows** :doc:`topics/windows`

View File

@@ -91,10 +91,6 @@ Install DPDK
$ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET
$ make install T=$DPDK_TARGET DESTDIR=install
If IVSHMEM support is required, use a different target::
$ export DPDK_TARGET=x86_64-ivshmem-linuxapp-gcc
#. (Optional) Export the DPDK shared library location
If DPDK was built as a shared library, export the path to this library for
@@ -226,7 +222,7 @@ listed below. Defaults will be provided for all values not explicitly set.
``vhost-sock-dir``
Option to set the path to the vhost-user unix socket files.
If allocating more than one GB hugepage (as for IVSHMEM), you can configure the
If allocating more than one GB hugepage, you can configure the
amount of memory used from any given NUMA nodes. For example, to use 1GB from
NUMA node 0, run::
@@ -240,8 +236,6 @@ threads and pin them to cores 1,2, run::
$ ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x6
For details on using IVSHMEM with DPDK, refer to :doc:`/topics/dpdk/ivshmem`.
Refer to ovs-vswitchd.conf.db(5) for additional information on configuration
options.

View File

@@ -29,4 +29,3 @@ The DPDK Datapath
:maxdepth: 2
vhost-user
ivshmem

View File

@@ -1,28 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
Convention for heading levels in Open vSwitch documentation:
======= Heading 0 (reserved for the title in a document)
------- Heading 1
~~~~~~~ Heading 2
+++++++ Heading 3
''''''' Heading 4
Avoid deeper levels because they do not render well.
==================
DPDK IVSHMEM Ports
==================
**TODO**