;; ;; Copyright (c) 2010-2017 Intel Corporation ;; ;; 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. ;; ;; ; This configuration is similar to config/nop.cfg with the difference being the ; type of interfaces. The physical ports are replaced by DPDK rings. To use this ; functionality, RTE_TARGET must be set to x86_64-ivshmem-linuxapp-gcc before ; compiling DPDK (i.e. export RTE_TARGET=x86_64-ivshmem-linuxapp-gcc). Also, ; DPDK needs to be compiled with both CONFIG_RTE_BUILD_COMBINE_LIBS=y and ; CONFIG_RTE_LIBRTE_VHOST=y ; The configuration can then be used inside a VM running on top of Open vSwitch. ; The SHA-1 of the Open vSwitch version that has been tested is c78a00b112c9. To ; run the VM, Qemu needs to be patched to support ivshmem with multiple regions ; and the right command line arguments to be used to share memory. Download and ; patch Qemu 1.6.2 using the following commands: ; git clone git://git.qemu-project.org/qemu.git ; cd qemu ; git checkout v1.6.2 ; wget https://01.org/sites/default/files/page/qemu-v1.6.2-ivshmem-dpdk.patch ; patch -p1 < qemu-v1.6.2-ivshmem-dpdk.patch ; ./configure ; make ; After Open vSwitch has been configured with DPDK rings as ports (i.e. ports ; with type dpdkr), Qemu needs to be started with the correct command line ; arguments. Refer to Section 11.1 from the DPDK Programmer's Guide on how to ; build the Qemu command line arguments. ; This configuration uses 4 ports. This means that 8 rings (4 for TX and 4 for ; RX) will need to be shared with the VM through ivshmem. ;; [eal options] -n=4 ; force number of memory channels no-output=no ; disable DPDK debug output [port 0] name=if0 mac=00:00:00:00:00:01 rx_ring=dpdkr0_tx tx_ring=dpdkr0_rx [port 1] name=if1 mac=00:00:00:00:00:02 rx_ring=dpdkr1_tx tx_ring=dpdkr1_rx [port 2] name=if2 mac=00:00:00:00:00:03 rx_ring=dpdkr2_tx tx_ring=dpdkr2_rx [port 3] name=if3 mac=00:00:00:00:00:04 rx_ring=dpdkr3_tx tx_ring=dpdkr3_rx [defaults] mempool size=8K [global] start time=5 name=NOP forwarding rings (4x) [core 0] mode=master [core 1] name=nop task=0 mode=nop rx port=if0 tx port=if1 drop=no [core 2] name=nop task=0 mode=nop rx port=if1 tx port=if0 drop=no [core 3] name=nop task=0 mode=nop rx port=if2 tx port=if3 drop=no [core 4] name=nop task=0 mode=nop rx port=if3 tx port=if2 drop=no