On Sun, May 24, 2015 at 08:55:59AM -0500, Ravi Rao wrote:
> Hi
>   Below are the exact sequence of steps that I followed..
> 
> 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.


I looked at your setup and I am not finding anything wrong.
Maybe there is an error inside of guest that packets are being
flooded?  What happens if you change the flows in such way that
it loops the packet back to IXIA instead of guest? Does it work?

fbl

> 
> *Qemu vesion is 2.2.1**
> *
> Thanks & Regards,
> Ravi..
> 
> On 05/22/15 19:38, Flavio Leitner wrote:
> >On Fri, May 15, 2015 at 02:07:07PM +0000, 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?
> >This is the right place, but it would be great if you could tell us
> >the configuration, how you're testing and the qemu version too.
> >
> >fbl
> >
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to