hi list:

I recently set up an openstack project using a compute node(node1) and a
controller, VMs in compute nodes can ping each other, everything is OK. But
when I use floodlight as a controller, VMs suddenly cannot ping each other.

I use openvswitch-switch 1.9.90-1bsn7 which is built by BigSwitch for
floodlight, openstack quantum uses namespace.

I debuged floodlight, when VM1 pings VM2, if floodlight does not know how
to route the arp or ping packet, it send a FLOOD action to OVS, but there
are no flow in node1's OVS db:

root@node1:~# ovs-appctl bridge/dump-flows br-int
duration=46s, priority=180006, n_packets=0, n_bytes=0,
priority=180006,arp,arp_spa=30.0.0.1,arp_op=1,actions=NORMAL
duration=46s, priority=180000, n_packets=0, n_bytes=0,
priority=180000,udp,in_port=65534,dl_src=b2:b1:1c:05:98:45,tp_src=68,tp_dst=67,actions=NORMAL
duration=46s, priority=180008, n_packets=0, n_bytes=0,
priority=180008,tcp,nw_src=30.0.0.1,tp_src=6633,actions=NORMAL
duration=46s, priority=180007, n_packets=0, n_bytes=0,
priority=180007,tcp,nw_dst=30.0.0.1,tp_dst=6633,actions=NORMAL
duration=46s, priority=180005, n_packets=0, n_bytes=0,
priority=180005,arp,arp_tpa=30.0.0.1,arp_op=2,actions=NORMAL
duration=46s, priority=180003, n_packets=0, n_bytes=0,
priority=180003,arp,dl_dst=44:03:a7:74:a6:49,arp_op=2,actions=NORMAL
duration=46s, priority=180001, n_packets=0, n_bytes=0,
priority=180001,arp,dl_dst=b2:b1:1c:05:98:45,arp_op=2,actions=NORMAL
duration=46s, priority=180004, n_packets=0, n_bytes=0,
priority=180004,arp,dl_src=44:03:a7:74:a6:49,arp_op=1,actions=NORMAL
duration=46s, priority=180002, n_packets=0, n_bytes=0,
priority=180002,arp,dl_src=b2:b1:1c:05:98:45,arp_op=1,actions=NORMAL
table_id=254, duration=4265s, priority=0, n_packets=2613, n_bytes=519476,
priority=0,reg0=0x1,actions=controller(reason=no_match)
table_id=254, duration=4265s, priority=0, n_packets=0, n_bytes=0,
priority=0,reg0=0x2,drop

root@node1:~# ovs-dpctl dump-flows br-int
in_port(38),eth(src=fa:16:3e:5c:fd:52,dst=fa:16:3e:f7:3d:5e),eth_type(0x0800),ipv4(src=100.0.0.6,dst=100.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0),
packets:1, bytes:98, used:0.312s,
actions:userspace(pid=4294953729,slow_path(controller))

I can capture packet at br-int, but no packets at eth2 or br-tun(packets
should go through eth2 in GRE tunnel br-tun, br-tun and br-int are
interconnected with port patch-int and patch-tun)
root@node1:~# tcpdump -i br-int -nn
tcpdump: WARNING: br-int: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br-int, link-type EN10MB (Ethernet), capture size 65535 bytes
16:36:29.805357 ARP, Request who-has 100.0.0.1 tell 100.0.0.6, length 28
16:36:31.804091 ARP, Request who-has 100.0.0.1 tell 100.0.0.6, length 28

root@node1:~# tcpdump -i br-tun -nn
tcpdump: WARNING: br-tun: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br-tun, link-type EN10MB (Ethernet), capture size 65535 bytes
16:38:34.271453 IP6 :: > ff02::16: HBH ICMP6, multicast listener report v2,
1 group record(s), length 28
16:38:35.119489 IP6 fe80::c478:c5ff:fecf:f64a > ff02::2: ICMP6, router
solicitation, length 16
16:38:39.131454 IP6 fe80::c478:c5ff:fecf:f64a > ff02::2: ICMP6, router
solicitation, length 16


root@node1:~# tcpdump -i eth2 proto gre -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes


How can I let the arp request packets go through br-tun to eth2, so that
the controller node can receive them?


root@node1:~# ovs-vsctl show
afaf59ee-48cc-4f5b-9a1d-4311b509a6c5
    *Bridge br-int*
        *Controller "tcp:30.0.0.1:6633"*
*            is_connected: true*
        Port "qvof3dc86e4-82"
            tag: 1
            Interface "qvof3dc86e4-82"
        Port patch-tun
            Interface patch-tun
                type: patch
                options: {peer=patch-int}
        Port "qvofc3fe9ed-fb"
            tag: 4095
            Interface "qvofc3fe9ed-fb"
        Port br-int
            Interface br-int
                type: internal
        Port "qvo8cb91d2a-7f"
            tag: 1
            Interface "qvo8cb91d2a-7f"
        Port "qvo329db52d-81"
            tag: 1
            Interface "qvo329db52d-81"
    Bridge "qbr329db52d-81"
        Port "qbr329db52d-81"
            Interface "qbr329db52d-81"
                type: internal
        Port "tap329db52d-81"
            Interface "tap329db52d-81"
        Port "qvb329db52d-81"
            Interface "qvb329db52d-81"
    Bridge "qbrc8ec86f4-3a"
        Port "qbrc8ec86f4-3a"
            Interface "qbrc8ec86f4-3a"
                type: internal
        Port "qvbc8ec86f4-3a"
            Interface "qvbc8ec86f4-3a"
    Bridge "qbrf3dc86e4-82"
        Port "qbrf3dc86e4-82"
            Interface "qbrf3dc86e4-82"
                type: internal
        Port "qvbf3dc86e4-82"
            Interface "qvbf3dc86e4-82"
        Port "tapf3dc86e4-82"
            Interface "tapf3dc86e4-82"
    Bridge "qbr31c6e35b-81"
        Port "qbr31c6e35b-81"
            Interface "qbr31c6e35b-81"
                type: internal
        Port "qvb31c6e35b-81"
            Interface "qvb31c6e35b-81"
    Bridge "qbr28117358-50"
        Port "qvb28117358-50"
            Interface "qvb28117358-50"
        Port "qbr28117358-50"
            Interface "qbr28117358-50"
                type: internal
    Bridge "qbr054163ed-d1"
        Port "qvb054163ed-d1"
            Interface "qvb054163ed-d1"
        Port "qbr054163ed-d1"
            Interface "qbr054163ed-d1"
                type: internal
    Bridge "qbr5c2a6893-3c"
        Port "qvb5c2a6893-3c"
            Interface "qvb5c2a6893-3c"
        Port "qbr5c2a6893-3c"
            Interface "qbr5c2a6893-3c"
                type: internal
    Bridge "qbr8cb91d2a-7f"
        Port "tap8cb91d2a-7f"
            Interface "tap8cb91d2a-7f"
        Port "qvb8cb91d2a-7f"
            Interface "qvb8cb91d2a-7f"
        Port "qbr8cb91d2a-7f"
            Interface "qbr8cb91d2a-7f"
                type: internal
    Bridge "qbrfc3fe9ed-fb"
        Port "qvbfc3fe9ed-fb"
            Interface "qvbfc3fe9ed-fb"
        Port "qbrfc3fe9ed-fb"
            Interface "qbrfc3fe9ed-fb"
                type: internal
    Bridge "br0"
        Port "eth0"
            Interface "eth0"
        Port "br0"
            Interface "br0"
                type: internal
    *Bridge br-tun*
        *Port "gre-1"*
            Interface "gre-1"
                type: gre
                options: {in_key=flow, out_key=flow, remote_ip="30.0.0.1"}
        Port br-tun
            Interface br-tun
                type: internal
        Port patch-int
            Interface patch-int
                type: patch
                options: {peer=patch-tun}
    .....
    ovs_version: "1.9.0"
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to