[ovs-dev] Issue about "action=normal" in OVS-DPDK

Daniele Di Proietto diproiettod at vmware.com
Mon Oct 24 17:16:16 UTC 2016






On 24/10/2016 00:31, "Michael Qiu" <08005325 at 163.com> wrote:

>Hi, all
>
>
>When I self-compiled the OVS-2.6 from commit:
>
>commit 7a0f907b2393626dac1387617355990eab69aef7
>Author: Justin Pettit <jpettit at ovn.org>
>Date:   Tue Sep 27 10:13:42 2016 -0700
>
>     Set release date for 2.6.0.
>
>     Signed-off-by: Justin Pettit <jpettit at ovn.org>
>     Acked-by: Ben Pfaff <blp at ovn.org>
>
>I found that when I using "action=normal", the fdb table will never 
>learn the mac addr in the packets from the patch port, is it a bug?
>
>
>This issue lead other problems, all packets to patch port will flooding 
>to all ports with the same vlan in the bridge, and I see lots of packet 
>copy.
>
>
>See below:
>
>
># ovs-ofctl show br-int
>OFPT_FEATURES_REPLY (xid=0x2): dpid:000072fe77bb5849
>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(vhuffc5b772-c6): addr:00:00:00:00:00:00
>      config:     0
>      state:      LINK_DOWN
>      speed: 0 Mbps now, 0 Mbps max
>  2(patch-tun): addr:7a:85:c5:7d:2f:da
>      config:     0
>      state:      0
>      speed: 0 Mbps now, 0 Mbps max
>  3(vhu88dab7aa-ae): addr:00:00:00:00:00:00
>      config:     0
>      state:      LINK_DOWN
>      speed: 0 Mbps now, 0 Mbps max
>  8(vhu29e6e817-63): addr:00:00:00:00:00:00
>      config:     0
>      state:      0
>      speed: 0 Mbps now, 0 Mbps max
>  LOCAL(br-int): addr:72:fe:77:bb:58:49
>      config:     PORT_DOWN
>      state:      LINK_DOWN
>      current:    10MB-FD COPPER
>      speed: 10 Mbps now, 0 Mbps max
>OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0
>
>
># ovs-ofctl show br-tun
>OFPT_FEATURES_REPLY (xid=0x2): dpid:00007e58c1f5b141
>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(patch-int): addr:56:36:bb:1e:ec:c7
>      config:     0
>      state:      0
>      speed: 0 Mbps now, 0 Mbps max
>  5(vxlan-c0a8c80b): addr:26:e9:2b:31:62:8b
>      config:     0
>      state:      0
>      speed: 0 Mbps now, 0 Mbps max
>  6(vxlan-c0a8c80c): addr:2a:07:0e:84:fd:8e
>      config:     0
>      state:      0
>      speed: 0 Mbps now, 0 Mbps max
>  LOCAL(br-tun): addr:7e:58:c1:f5:b1:41
>      config:     PORT_DOWN
>      state:      LINK_DOWN
>      current:    10MB-FD COPPER
>      speed: 10 Mbps now, 0 Mbps max
>OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0
>
>
>
># ovs-vsctl show
>57863254-3c79-4dc7-a6a0-277eb8c741f4
>     Bridge br-dpdk
>         Port br-dpdk
>             Interface br-dpdk
>                 type: internal
>         Port "dpdk0"
>             Interface "dpdk0"
>                 type: dpdk
>     Bridge br-int
>         fail_mode: secure
>         Port patch-tun
>             Interface patch-tun
>                 type: patch
>                 options: {peer=patch-int}
>         Port "vhu29e6e817-63"
>             tag: 1
>             Interface "vhu29e6e817-63"
>                 type: dpdkvhostuser
>         Port "vhuffc5b772-c6"
>             tag: 2
>             Interface "vhuffc5b772-c6"
>                 type: dpdkvhostuser
>         Port "vhu88dab7aa-ae"
>             tag: 1
>             Interface "vhu88dab7aa-ae"
>                 type: dpdkvhostuser
>         Port br-int
>             Interface br-int
>                 type: internal
>
>     Bridge br-tun
>         fail_mode: secure
>         Port br-tun
>             Interface br-tun
>                 type: internal
>         Port "vxlan-c0a8c80b"
>             Interface "vxlan-c0a8c80b"
>                 type: vxlan
>                 options: {df_default="true", in_key=flow, 
>local_ip="192.168.200.14", out_key=flow, remote_ip="192.168.200.11"}
>         Port "vxlan-c0a8c80c"
>             Interface "vxlan-c0a8c80c"
>                 type: vxlan
>                 options: {df_default="true", in_key=flow, 
>local_ip="192.168.200.14", out_key=flow, remote_ip="192.168.200.12"}
>         Port patch-int
>             Interface patch-int
>                 type: patch
>                 options: {peer=patch-tun}
>     ovs_version: "2.6.0"
>
>
>Flow Table:
>
>br-int:
>
>ovs-ofctl add-flow br-int "in_port=2,action=output:8"

I suspect that the above flow is preventing the mac learning from happening.

If you output directly to a specific port, OVS will not perform any mac learning.

Could you maybe try with normal action here, instead of outputting directly to port 8?

>
>ovs-ofctl add-flow br-int "in_port=8,action=output:normal"
>
>
>br-tun
>
>ovs-ofctl add-flow br-tun 
>"in_port=1,action=set_tunnel:0x46,strip_vlan,output:6"
>
>ovs-ofctl add-flow br-tun "in_port=6,action=output:1"
>
>
>VM using port 8(vhu29e6e817-63)  as vhost-user port:
>
>(creat hugepage first)
>
>/usr/libexec/qemu-kvm -machine pc,accel=kvm,usb=off  -cpu host -m 2048 
>-smp 2,sockets=2,cores=1,threads=1 -drive 
>file=/var/lib/nova/instances/_base/0fc2479281ab0a4ca901b7981122a180f843b2bf 
>-chardev socket,id=charnet0,path=/var/run/openvswitch/vhu29e6e817-63 
>-netdev type=vhost-user,id=hostnet0,chardev=charnet0 -device 
>virtio-net-pci,netdev=hostnet0,id=net0,mac=fa:16:3e:61:23:ed,bus=pci.0,addr=0x3 
>-object 
>memory-backend-file,id=ram-node0,prealloc=yes,mem-path=/dev/hugepages/libvirt/qemu,share=yes,size=2147483648,host-nodes=0,policy=bind 
>-numa node,nodeid=0,cpus=0-1,memdev=ram-node0  -vnc 0.0.0.0:0 -k en-us 
>-device cirrus-vga,id=video0,bus=pci.0,addr=0x2
>
>
>In VM ping another VM in other hosts, which  using native OVS.
>
>Then find in OVS-DPDK:
>
># ovs-appctl fdb/show br-int
>  port  VLAN  MAC                Age
>     8     1       fa:16:3e:61:23:ed    1
>
>
>In OVS(another host, port 4 is patch port.):
>
>  ovs-appctl fdb/show br-int
>  port  VLAN  MAC                Age
>     6     2       fa:16:3e:09:9d:bc    0
>     4     2       fa:16:3e:61:23:ed    0
>
>
>This issue will cause packets flooding in br-int.
>
>Any sulotions?
>
>
>-- 
>Thanks,
>Michael
>
>


More information about the dev mailing list