On 24/10/2016 00:31, "Michael Qiu" <08005...@163.com> wrote:
>Hi, all
>
>
>When I self-compiled the OVS-2.6 from commit:
>
>commit 7a0f907b2393626dac1387617355990eab69aef7
>Author: Justin Pettit <jpet...@ovn.org>
>Date: Tue Sep 27 10:13:42 2016 -0700
>
> Set release date for 2.6.0.
>
> Signed-off-by: Justin Pettit <jpet...@ovn.org>
> Acked-by: Ben Pfaff <b...@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
>
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev