On 5/24/15 9:55 AM, 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.
According to the diagram above, dpdk0 is the input side. Are the tx
errors on dpd0 or are they on dpdkvhost0?
Can any packets be emitted from the guest on either interface and seen
in the ovs/dpdk data path? Are you running dpdk/l3fwd on the guest or
are you forwarding with the linux kernel.
I am wondering if you can send packets from the guest to try to isolate
the errors either to the vhost ports or the pmd ports.
*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
--
Thomas F. Herbert
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev