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:
committed by
Daniele Di Proietto
parent
932c96b7b0
commit
90ca71dd31
@@ -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 \
|
||||
|
@@ -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
|
||||
|
@@ -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`
|
||||
|
||||
|
@@ -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.
|
||||
|
||||
|
@@ -29,4 +29,3 @@ The DPDK Datapath
|
||||
:maxdepth: 2
|
||||
|
||||
vhost-user
|
||||
ivshmem
|
||||
|
@@ -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**
|
Reference in New Issue
Block a user