[ovs-dev] Reply: ovs + dpdk vhost-user match flows but cannot execute actions

lifuqiong lifuqiong at cncloudsec.com
Thu Apr 21 08:21:58 UTC 2016


Hi Mauricio Vasquez:

         Thank you for advice.

         I connect dpdk NIC to outside PC directly , but things still do not work. 

         

         While using test_pmd to test my NIC,  When executing :

 

        testpmd> start

 

         After a while,  port stats show there are a lot missed and error packets.

My Nic is Intel I350;

And CmdLine as follows:

cat /proc/cmdline

BOOT_IMAGE=/vmlinuz-3.16.0-30-generic.efi.signed root=/dev/mapper/host52--vg-root ro default_hugepagesz=1GB hugepagesz=1G hugepages=8 iommu=pt intel_iommu=on

 

Is there something suspicious? 

 

show port stats all

 

  ######################## NIC statistics for port 0  ########################

  RX-packets: 211        RX-missed: 1062       RX-bytes:  27840

  RX-errors: 1062

  RX-nombuf:  0

  TX-packets: 0          TX-errors: 0          TX-bytes:  0

  ############################################################################

 

  ######################## NIC statistics for port 1  ########################

  RX-packets: 211        RX-missed: 1062       RX-bytes:  27865

  RX-errors: 1062

  RX-nombuf:  0

  TX-packets: 0          TX-errors: 0          TX-bytes:  0

  ############################################################################

 

 

Thank you

LiFuqiong 

发件人: Mauricio Vásquez [mailto:mauricio.vasquezbernal at studenti.polito.it] 
发送时间: 2016年4月20日 20:01
收件人: lifuqiong
抄送: dev at openvswitch.org
主题: Re: Reply: [ovs-dev] ovs + dpdk vhost-user match flows but cannot execute actions

 

The problem appears to be outside ovs.
Somewhere you wrote that you are using a physical switch. Could you remove that and connect the outside PC directly to the dpdk port?

 

If things still do not work, I would suggest to use the test_pmd (http://dpdk.org/doc/guides/testpmd_app_ug/index.html) application to test your card.

Once again, please let me know the results.

Mauricio Vasquez, 

 

On Wed, Apr 20, 2016 at 1:01 PM, lifuqiong <lifuqiong at cncloudsec.com> wrote:

Hi Mauricio Vasquez:

    Thank you for your good advice.

    I changed my environment as you metioned, And try to ping from VM to pc, but they cannot still ping each other.

    The result is still my dpdk physical NIC drop packets. Is my NIC problem?

 

    Here is my configuration:

1.  ovs-ofctl dump-flows ovsbr0

NXST_FLOW reply (xid=0x4):

cookie=0x0, duration=364.902s, table=0, n_packets=0, n_bytes=0, idle_age=364, in_port=1 actions=output:3

cookie=0x0, duration=356.014s, table=0, n_packets=191, n_bytes=8334, idle_age=1, in_port=3 actions=output:1

 

2.  ovs-ofctl dump-ports ovsbr0

OFPST_PORT reply (xid=0x2): 3 ports

  port LOCAL: rx pkts=23, bytes=1278, drop=0, errs=0, frame=0, over=0, crc=0

           tx pkts=631, bytes=28750, drop=0, errs=0, coll=0

  port  1: rx pkts=272, bytes=26283, drop=188024, errs=0, frame=?, over=?, crc=?

           tx pkts=0, bytes=0, drop=0, errs=0, coll=?

  port  3: rx pkts=2110, bytes=192508, drop=?, errs=0, frame=?, over=?, crc=?

           tx pkts=2462, bytes=205658, drop=0, errs=?, coll=?

 

3.  ovs-ofctl show ovsbr0

OFPT_FEATURES_REPLY (xid=0x2): dpid:00002c534a01cd5e

n_tables:254, n_buffers:256

capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP

actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst

1(dpdk0): addr:2c:53:4a:01:cd:5e

     config:     0

     state:      0

     current:    100MB-FD

     supported:  100MB-FD 1GB-HD 1GB-FD 10GB-FD AUTO_NEG AUTO_PAUSE_ASYM

     speed: 100 Mbps now, 10000 Mbps max

3(vhost-user-0): addr:00:00:00:00:00:00

     config:     PORT_DOWN

     state:      LINK_DOWN

     speed: 0 Mbps now, 0 Mbps max

LOCAL(ovsbr0): addr:2c:53:4a:01:cd:5e

     config:     0

     state:      0

     current:    10MB-FD COPPER

     speed: 10 Mbps now, 0 Mbps max

OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0

发件人: Mauricio Vásquez [mailto:mauricio.vasquezbernal at studenti.polito.it] 
发送时间: 2016年4月20日 18:00
收件人: lifuqiong
抄送: dev at openvswitch.org
主题: Re: 答复: Reply: [ovs-dev] ovs + dpdk vhost-user match flows but cannot execute actions

 

Hi lifuqion,

It appears to me that the problem is that port1 is dropping the packets. I would suggest to create a simplified setup:

- One dpdk physical NIC

- One vhost-user port

- Remove the NORMAL flow
ovs-ofctl del-flows ovsbr0

- Add a pair of flows between the physical NIC and the VM (please check the openflow numbers of the ports, you can use the ovs-ofctl show ovsbr0 command)
ovs-ofctl add-flow ovsbr0 "in_port=1 action=output:2"
ovs-ofctl add-flow ovsbr0 "in_port=2 action=output:1"

Try to ping, use the dump-flows and dump-ports commands to view the packets counters,

Please let me know the results of that test.

Mauricio Vasquez, 

 

On Wed, Apr 20, 2016 at 2:30 AM, lifuqiong <lifuqiong at cncloudsec.com> wrote:

Hi Mauricio Vasquez:

         

root at host52:~# ovs-vsctl show

f2664a74-7523-4240-812a-4f022051346a

    Bridge "ovsbr0"

        Port "vhost-user-1"

            Interface "vhost-user-1"

                type: dpdkvhostuser

        Port "dpdk0"

            Interface "dpdk0"

                type: dpdk

        Port "ovsbr0"

            Interface "ovsbr0"

                type: internal

        Port "vhost-user-0"

            Interface "vhost-user-0"

                type: dpdkvhostuser

        Port "dpdk1"

            Interface "dpdk1"

                type: dpdk

 

root at host52:~# ovs-ofctl dump-flows ovsbr0

NXST_FLOW reply (xid=0x4):

cookie=0x0, duration=291278.976s, table=0, n_packets=4414, n_bytes=392730, idle_age=65534, hard_age=65534, priority=0 actions=NORMAL

 

 

root at host52:~# ovs-ofctl dump-ports ovsbr0

OFPST_PORT reply (xid=0x2): 5 ports

  port  4: rx pkts=2472, bytes=207008, drop=?, errs=0, frame=?, over=?, crc=?

           tx pkts=1893, bytes=181572, drop=49, errs=?, coll=?

  port LOCAL: rx pkts=23, bytes=1278, drop=0, errs=0, frame=0, over=0, crc=0

           tx pkts=631, bytes=28750, drop=0, errs=0, coll=0

  port  1: rx pkts=272, bytes=26283, drop=127396, errs=0, frame=?, over=?, crc=?

           tx pkts=0, bytes=0, drop=0, errs=0, coll=?

  port  2: rx pkts=0, bytes=0, drop=0, errs=0, frame=?, over=?, crc=?

           tx pkts=0, bytes=0, drop=0, errs=0, coll=?

  port  3: rx pkts=1919, bytes=184174, drop=?, errs=0, frame=?, over=?, crc=?

           tx pkts=2462, bytes=205658, drop=0, errs=?, coll=?

 

Thank you.

发件人: Mauricio Vásquez [mailto:mauricio.vasquezbernal at studenti.polito.it] 
发送时间: 2016年4月19日 21:49
收件人: lifuqiong
抄送: dev at openvswitch.org
主题: Re: Reply: [ovs-dev] ovs + dpdk vhost-user match flows but cannot execute actions

 

Hi lifuqiong, 

Could you provide the output of the following commands in your setup?:
ovs-vsctl show
ovs-ofctl dump-flows
ovs-ofctl dump-ports

Mauricio Vasquez, 

 

On Sat, Apr 16, 2016 at 10:23 AM, lifuqiong <lifuqiong at cncloudsec.com> wrote:

Hi Mauricio:

         I changed my qemu version from 2.2.1 to 2.5.0 and the vms can communication with each other. But the VM cannot ping PC in the outside network. They in a same subnet.

 

PC(192.168.0.103/24) ping vm(192.168.0.90);  vm’s host’s dpdk NIC and PC are in a L2 switch. And DPDK NIC connected to switch’s Port Eth1/0/8

Investigation:

         Binding VM’s IP and Mac in PC’s ARP table, and binding VM’s Mac in Port Eth1/0/8; PC is pinging vm, I can see Output packets of Eth1/0/8 increasing regularly, which means the ping request packet has send to DPDK NIC.

 

But the VM can not receive the packet?

       

         My switch has NO vlan , the default VLAN is 1. But when I ping from vm1 to vm2 , showing MaC address in OVS which shows as follows:

port  VLAN  MAC                Age

    4     0  00:00:00:00:02:12    1

3     0  00:00:00:00:00:04    1

 

 

What was the reason why VM cannot communication with the PC? Thank you

 

发件人: lifuqiong [mailto:lifuqiong at cncloudsec.com] 
发送时间: 2016年4月15日 9:22
收件人: 'Mauricio Vásquez'
抄送: 'dev at openvswitch.org'
主题: 答复: [ovs-dev] ovs + dpdk vhost-user match flows but cannot execute actions

 

Hello Mauricio Vasquez:

    It works. Thank you very much.

 

 

发件人: Mauricio Vásquez [mailto:mauricio.vasquezbernal at studenti.polito.it] 
发送时间: 2016年4月14日 14:55
收件人: lifuqiong
抄送: dev at openvswitch.org
主题: Re: [ovs-dev] ovs + dpdk vhost-user match flows but cannot execute actions

 

Hello lifuqiong,

I faced the same problem some days ago (http://openvswitch.org/pipermail/dev/2016-March/068282.html), the bug is already fixed. 

Where are you downloading OVS from?, it appears that the bug is still present in the version on http://openvswitch.org/releases/openvswitch-2.5.0.tar.gz, please download ovs from git and switch to branch-2.5.

Mauricio Vasquez, 

 

On Thu, Apr 14, 2016 at 4:28 AM, lifuqiong <lifuqiong at cncloudsec.com> wrote:

I want to test dpdk vhost-user port on ovs to follow https://software.intel.com/en-us/blogs/2015/06/09/building-vhost-user-for-ovs-today-using-dpdk-200;
I create ovs+dpdk environment followed INSTALL.DPDK.md; and create 2 VM2, try to ping each other but show me “Destination Host Unreachable”;
Dump-flows shows packets matched the flow, but can’t output to port 4, why ? I can’t get any useful error or warning info from ovs-vswitchd.log.
While ping from vm1 to vm2, statistics on vm1 shows that eth1 RX_packet keeps zero, TX_PACKET keeps increasing.
1.
        OVS: 2.5.0
        Dpdk: 2.2.0
        Qemu: 2.2.1

2. ovs-ofctl dump-flows ovsbr0
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=836.946s, table=0, n_packets=628, n_bytes=26376, idle_age=0, in_port=3 actions=output:4
cookie=0x0, duration=831.458s, table=0, n_packets=36, n_bytes=1512, idle_age=770, in_port=4 actions=output:3

3. root at host152:/usr/local/var/run/openvswitch# ovs-vsctl show
03ae6f7d-3b71-45e3-beb0-09fa11292eaa
    Bridge "ovsbr0"
        Port "vhost-user-1"
            Interface "vhost-user-1"
                type: dpdkvhostuser
        Port "ovsbr0"
            Interface "ovsbr0"
                type: internal
        Port "dpdk1"
            Interface "dpdk1"
                type: dpdk
        Port "vhost-user-0"
            Interface "vhost-user-0"
                type: dpdkvhostuser
        Port "dpdk0"
            Interface "dpdk0"
                type: dpdk

4. Start VM info:
qemu-system-x86_64 -m 1024 -smp 2 -hda /root/vm11.qcow2 -boot c -enable-kvm -vnc 0.0.0.0:1 -chardev socket,id=char1,path=/usr/local/var/run/openvswitch/vhost-user-0 -netdev type=vhost-user,id=mynet1,chardev=char1,vhostforce -device virtio-net-pci,mac=00:00:00:00:01:12,netdev=mynet1 -object memory-backend-file,id=mem,size=1024M,mem-path=/dev/hugepages,share=on -numa node,memdev=mem -mem-prealloc -d exec

qemu-system-x86_64: -netdev type=vhost-user,id=mynet1,chardev=char1,vhostforce: chardev "char1" went up



5. My build command as follows:
#!/bin/bash

################ config and compile dpdk  ################ # cd dpdk # make config T=x86_64-native-linuxapp-gcc # make install T=x86_64-native-linuxapp-gcc ########################################################

################ config and compile ovs ################ # cd ovs # ./boot.sh # ./configure --localstatedir=/var --with-dpdk=/root/workplane/dpdk/x86_64-native-linuxapp-gcc
# make
# make install
########################################################

################ config and compile qemu ################ # cd qemu # ./configure # make # make install ########################################################

## set hugepage number, use boot cmdline or procfs echo 8 > /proc/sys/vm/nr_hugepages

## insert the kernel modules
modprobe uio
insmod $DPDK_BUILD/kmod/igb_uio.ko
insmod $DPDK_BUILD/kmod/rte_kni.ko
insmod $DPDK_DIR/lib/librte_vhost/eventfd_link/eventfd_link.ko

# unbind the dpdk interface

$DPDK_DIR/tools/dpdk_nic_bind.py --bind=igb_uio 01:00.0 $DPDK_DIR/tools/dpdk_nic_bind.py --bind=igb_uio 01:00.1

#Mount hugetable
mkdir -p /dev/hugepages
mount -t hugetlbfs -o pagesize=1G none /dev/hugepages

#first time
#ovsdb-tool create /usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema

ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach --log-file

#firsttime only
#ovs-vsctl --no-wait init
ovs-vswitchd --dpdk -c 0x77 -n 2 --socket-mem 2048,0 -- unix:$DB_SOCK --pidfile --detach --log-file

##############################################################################
## Add brige
/usr/local/bin/ovs-vsctl add-br ovsbr0 -- set bridge ovsbr0 datapath_type=netdev

## Add dpdk port
/usr/local/bin/ovs-vsctl add-port ovsbr0 dpdk0 -- set Interface dpdk0 type=dpdk /usr/local/bin/ovs-vsctl add-port ovsbr0 dpdk1 -- set Interface dpdk1 type=dpdk # /usr/local/bin/ovs-vsctl add-port ovsbr0 dpdk2 -- set Interface dpdk2 type=dpdk # /usr/local/bin/ovs-vsctl add-port ovsbr0 dpdk3 -- set Interface dpdk3 type=dpdk

## Add vhost-user port
/usr/local/bin/ovs-vsctl add-port ovsbr0 vhost-user-0 -- set Interface vhost-user-0 type=dpdkvhostuser /usr/local/bin/ovs-vsctl add-port ovsbr0 vhost-user-1 -- set Interface vhost-user-1 type=dpdkvhostuser



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

 

 

 

 




More information about the dev mailing list