All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ravi Rao <Ravi.Rao@us.fujitsu.com>
To: therbert@redhat.com, "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: performance issue with ovs + dpdk2.0 with vhost
Date: Fri, 15 May 2015 11:11:43 -0500	[thread overview]
Message-ID: <55561ABF.8080205@us.fujitsu.com> (raw)
In-Reply-To: <5556059A.6000006@redhat.com>

Hi,
    This is what I am trying to Do.
Below is the setup..

|                   +----------------------+   |
                   | guest                |   |
                   |                      |   |
                   |                      |   |  guest
                   |  eth0   L3fwd  eth1  |   |
                   |   |              |   |   |
                   +---+--------------+---+ __|
                           ^      :
                           |      |
                           :      v                       __
     +-----------------+--------------+-----------------+   |
     |                 | ovs-br0      |                 |
     |                 +--------------+                 |   |
     |                     ^      :                     |   |
     |          +----------+      +---------+           |   |  host
     |          :                           v           |   |
     |   +--------------+            +--------------+   |   |
     |   |   dpdk0      |  ovs-dpdk  |   dpdk1      |   |   |
     +---+--------------+------------+--------------+---+ __|
                ^                           :
                |                           |
                :                           v
     +--------------------------------------------------+
     |                                                  |
     |                traffic generator                 |
     |                                                  |
     +--------------------------------------------------+|


Step1: Use the latest ovs and dpdk2.0 to get the ovs running with 2 dpdk 
interfaces that are bound to 2 10GB physical interfaces
#** Inser the required Modules
cd /root/dpdk-2.0.0
modprobe uio
modprobe cuse
rmmod igb_uio
rmmod rte_kni
insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko

#**** Assign the dpdk capable interfaces to igb_uio driver
tools/dpdk_nic_bind.py --status
tools/dpdk_nic_bind.py -b igb_uio 0000:02:00.0
tools/dpdk_nic_bind.py -b igb_uio 0000:02:00.1
tools/dpdk_nic_bind.py --status

#--- Setup the openVswitch
cd /root/ovs
pkill -9 ovs
mkdir -p /usr/local/etc/openvswitch
mkdir -p /usr/local/var/run/openvswitch
rm -rf /usr/local/etc/openvswitch/conf.db
ovsdb/ovsdb-tool create /usr/local/etc/openvswitch/conf.db 
vswitchd/vswitch.ovsschema

#Start ovsdb-server
ovsdb/ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock 
--remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach
utilities/ovs-vsctl --no-wait init

#Start vswitchd:
export DB_SOCK=/usr/local/var/run/openvswitch/db.sock
rm /dev/vhost-net
vswitchd/ovs-vswitchd --dpdk -c 0x3 -n 4 --socket-mem 1024,0 -- 
unix:$DB_SOCK --pidfile --detach

#Add bridge & ports
utilities/ovs-vsctl add-br ovs-br0 -- set bridge ovs-br0 
datapath_type=netdev
utilities/ovs-vsctl add-port ovs-br0 dpdk0 -- set Interface dpdk0 type=dpdk
utilities/ovs-vsctl add-port ovs-br0 dpdk1 -- set Interface dpdk1 type=dpdk

Step2: Create the dpdkvhost interfaces and bring up the guestVM using QEMU
export DPDK_DIR=/root/dpdk-2.0.0
insmod $DPDK_DIR/lib/librte_vhost/eventfd_link/eventfd_link.ko
cd /root/ovs
utilities/ovs-vsctl add-port ovs-br0 dpdkvhost0 -- set Interface 
dpdkvhost0 type=dpdkvhost
utilities/ovs-vsctl add-port ovs-br0 dpdkvhost1 -- set Interface 
dpdkvhost1 type=dpdkvhost

#**** Start the guest ubuntu VM1 from a terminal that is logged in as root
qemu-system-x86_64 --enable-kvm -k fr -m 1G \
         -cpu host -smp cores=2,threads=1,sockets=1 \
         -serial telnet::4444,server,nowait -monitor 
telnet::5555,server,nowait \
         -hda /root/VMs/images/ubuntu-14.04-template.qcow2 \
         -object 
memory-backend-file,id=mem,size=1G,mem-path=/mnt/huge_1GB,share=on \
         -numa node,memdev=mem \
         -netdev 
type=tap,id=dpdkvhost0,script=no,downscript=no,ifname=dpdkvhost0,vhost=on \
         -device 
virtio-net-pci,netdev=dpdkvhost0,mac=52:54:00:12:34:56,csum=off,gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off 
\
         -netdev 
type=tap,id=dpdkvhost1,script=no,downscript=no,ifname=dpdkvhost1,vhost=on \
         -device 
virtio-net-pci,netdev=dpdkvhost1,mac=52:54:00:12:34:57,csum=off,gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off 
\
         -device ne2k_pci,mac=DE:AD:DE:01:02:03,netdev=user.0 -netdev 
user,id=user.0,hostfwd=tcp::2222-:22 &

# **** Add flows between ports
utilities/ovs-ofctl del-flows ovs-br0
utilities/ovs-ofctl add-flow ovs-br0 in_port=1,action=output:3
utilities/ovs-ofctl add-flow ovs-br0 in_port=2,action=output:4
utilities/ovs-ofctl add-flow ovs-br0 in_port=3,action=output:1
utilities/ovs-ofctl add-flow ovs-br0 in_port=4,action=output:2

Once I complete the above settings. I log into the VM and enable ipv4 
forwarding so that it could do l3 fwd between eth0 and eth1

The issue I am seeing is when I start pumping packets on IXIA port 
connected to physical port dpdk0 I see lots of tx_errors on dpdk0.
I can only pass about 1000 pps without getting any errors. Is there 
anything I am doing wrong or missing in the above setup.

Thanks & Regards,
Ravi..

On 05/15/15 09:41, Thomas F Herbert wrote:
> On 5/15/15 9:55 AM, Rao, Ravi wrote:
>> Hi All,
>>     I am trying to get a Guest VM connected to the dpdkvhost 
>> interface on a host which has the ovs running from the latest ovs git 
>> and dpdk2.0. Looks like I am missing something as 95% of traffic is 
>> not getting to the VM. Can one of you please let me know which 
>> mailing list I should be posting the details for getting a 
>> resolution. Is it this dpdk list OR would it be the openvswitch list?
> You could also try the openvswitch discuss list but this list is a 
> good starting point. I am working with vhost/dpdk2.0 and ovs and 
> others are too.
> Could you please send more details about what you are seeing? Are you 
> using the Linux stack in the guest? Do you see packets on the input IF 
> in the guest?
>> Regards,
>> Ravi..
>
>

  reply	other threads:[~2015-05-15 16:11 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-15 13:55 performance issue with ovs + dpdk2.0 with vhost Rao, Ravi
2015-05-15 14:01 ` Thomas F Herbert
2015-05-15 14:41 ` Thomas F Herbert
2015-05-15 16:11   ` Ravi Rao [this message]
2015-05-15 17:02     ` Traynor, Kevin
2015-05-15 17:27       ` Rao, Ravi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55561ABF.8080205@us.fujitsu.com \
    --to=ravi.rao@us.fujitsu.com \
    --cc=dev@dpdk.org \
    --cc=therbert@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.