Hi Ben, > If you're not using an OpenFlow controller, then I'd expect OVS to > learn from any packet sent by a VM.
I would have thought so too. Here's some detailed info I'm capturing to show working/non-working: # bit of background on setup [root@phys ~]# ovs-vsctl get-controller br-inet [root@phys ~]# [root@phys ~]# ovs-vsctl list-ports br-inet ens224 vethE9WNKT vethTE2X2G - sending a continuous ping from host 10.0.0.250 to 192.168.0.12 - router on segment 192.168.0.0/24 already has an ARP entry for 192.168.0.12 generate a gratuitous ARP *request* from container expect to see fdb/show updated with correct port ID ====================================================================== [root@container ~]# ifconfig inet | grep 'ether' ether fe:dd:3f:1e:71:f6 txqueuelen 1000 (Ethernet) [root@phys ~]# ovs-appctl fdb/show br-inet | grep fe:dd:3f:1e:71:f6 1 0 fe:dd:3f:1e:71:f6 186 [root@container ~]# arping -U -c 3 -I inet 192.168.0.12 ARPING 192.168.0.12 from 192.168.0.12 inet Sent 3 probes (3 broadcast(s)) Received 0 response(s) [root@phys ~]# tcpdump -nni vethE9WNKT -e ether host fe:dd:3f:1e:71:f6 tcpdump: WARNING: vethE9WNKT: no IPv4 address assigned tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on vethE9WNKT, link-type EN10MB (Ethernet), capture size 65535 bytes 14:14:00.067056 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.12 (ff:ff:ff:ff:ff:ff) tell 192.168.0.12, length 28 14:14:00.067481 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.168.0.12 (ff:ff:ff:ff:ff:ff) tell 192.168.0.12, length 46 14:14:01.067342 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.12 (ff:ff:ff:ff:ff:ff) tell 192.168.0.12, length 28 14:14:01.068215 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.168.0.12 (ff:ff:ff:ff:ff:ff) tell 192.168.0.12, length 46 14:14:02.067507 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.12 (ff:ff:ff:ff:ff:ff) tell 192.168.0.12, length 28 14:14:02.068663 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.168.0.12 (ff:ff:ff:ff:ff:ff) tell 192.168.0.12, length 46 [root@phys ~]# tcpdump -nni br-inet ether host fe:dd:3f:1e:71:f6 tcpdump: WARNING: br-inet: no IPv4 address assigned tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on br-inet, link-type EN10MB (Ethernet), capture size 65535 bytes 14:14:00.067260 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.12 (ff:ff:ff:ff:ff:ff) tell 192.168.0.12, length 28 14:14:00.067479 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.168.0.12 (ff:ff:ff:ff:ff:ff) tell 192.168.0.12, length 46 14:14:01.067593 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.12 (ff:ff:ff:ff:ff:ff) tell 192.168.0.12, length 28 14:14:01.068214 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.168.0.12 (ff:ff:ff:ff:ff:ff) tell 192.168.0.12, length 46 14:14:02.067790 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.12 (ff:ff:ff:ff:ff:ff) tell 192.168.0.12, length 28 14:14:02.068661 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.168.0.12 (ff:ff:ff:ff:ff:ff) tell 192.168.0.12, length 46 # expect to see this updated [root@phys ~]# ovs-appctl fdb/show br-inet | grep fe:dd:3f:1e:71:f6 1 0 fe:dd:3f:1e:71:f6 179 generate a gratuitous ARP *reply* from container fdb/show correct & ICMP tests start woring ====================================================================== [root@phys ~]# ovs-appctl fdb/show br-inet | grep fe:dd:3f:1e:71:f6 1 0 fe:dd:3f:1e:71:f6 200 [root@container~]# arping -A -c 3 -I inet 192.168.0.12 ARPING 192.168.0.12 from 192.168.0.12 inet Broadcast reply from 192.168.0.12 [FE:DD:3F:1E:71:F6] 6.374ms Sent 3 probes (1 broadcast(s)) Received 1 response(s) (1 broadcast(s)) [root@phys ~]# tcpdump -nni br-inet -e ether host fe:dd:3f:1e:71:f6 tcpdump: WARNING: br-inet: no IPv4 address assigned tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on br-inet, link-type EN10MB (Ethernet), capture size 65535 bytes 14:14:56.949646 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Reply 192.168.0.12 is-at fe:dd:3f:1e:71:f6, length 28 14:14:56.955326 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Reply 192.168.0.12 is-at fe:dd:3f:1e:71:f6, length 46 14:14:58.052880 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.1 tell 192.168.0.12, length 28 14:14:58.053314 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.168.0.1 tell 192.168.0.12, length 46 14:14:59.054547 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.1 tell 192.168.0.12, length 28 14:14:59.055140 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.168.0.1 tell 192.168.0.12, length 46 [root@phys ~]# tcpdump -nni vethE9WNKT -e ether host fe:dd:3f:1e:71:f6 tcpdump: WARNING: vethE9WNKT: no IPv4 address assigned tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on vethE9WNKT, link-type EN10MB (Ethernet), capture size 65535 bytes 14:14:56.949545 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Reply 192.168.0.12 is-at fe:dd:3f:1e:71:f6, length 28 14:14:56.955329 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Reply 192.168.0.12 is-at fe:dd:3f:1e:71:f6, length 46 14:14:57.949656 fe:dd:3f:1e:71:f6 > fe:dd:3f:1e:71:f6, ethertype ARP (0x0806), length 42: Reply 192.168.0.12 is-at fe:dd:3f:1e:71:f6, length 28 14:14:58.052653 00:13:7f:f6:a7:b0 > fe:dd:3f:1e:71:f6, ethertype IPv4 (0x0800), length 98: 10.0.0.250 > 192.168.0.12: ICMP echo request, id 17712, seq 547, length 64 14:14:58.052713 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.1 tell 192.168.0.12, length 28 14:14:58.053315 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.168.0.1 tell 192.168.0.12, length 46 14:14:58.949796 fe:dd:3f:1e:71:f6 > fe:dd:3f:1e:71:f6, ethertype ARP (0x0806), length 42: Reply 192.168.0.12 is-at fe:dd:3f:1e:71:f6, length 28 14:14:59.054303 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.1 tell 192.168.0.12, length 28 14:14:59.055142 fe:dd:3f:1e:71:f6 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.168.0.1 tell 192.168.0.12, length 46 14:14:59.055318 00:13:7f:f6:a7:b0 > fe:dd:3f:1e:71:f6, ethertype ARP (0x0806), length 60: Reply 192.168.0.1 is-at 00:13:7f:f6:a7:b0, length 46 14:14:59.055340 fe:dd:3f:1e:71:f6 > 00:13:7f:f6:a7:b0, ethertype IPv4 (0x0800), length 98: 192.168.0.12 > 10.0.0.250: ICMP echo reply, id 17712, seq 547, length 64 14:15:00.053992 00:13:7f:f6:a7:b0 > fe:dd:3f:1e:71:f6, ethertype IPv4 (0x0800), length 98: 10.0.0.250 > 192.168.0.12: ICMP echo request, id 17712, seq 549, length 64 14:15:00.054048 fe:dd:3f:1e:71:f6 > 00:13:7f:f6:a7:b0, ethertype IPv4 (0x0800), length 98: 192.168.0.12 > 10.0.0.250: ICMP echo reply, id 17712, seq 549, length 64 14:15:01.055304 00:13:7f:f6:a7:b0 > fe:dd:3f:1e:71:f6, ethertype IPv4 (0x0800), length 98: 10.0.0.250 > 192.168.0.12: ICMP echo request, id 17712, seq 550, length 64 14:15:01.055369 fe:dd:3f:1e:71:f6 > 00:13:7f:f6:a7:b0, ethertype IPv4 (0x0800), length 98: 192.168.0.12 > 10.0.0.250: ICMP echo reply, id 17712, seq 550, length 64 14:15:02.055583 00:13:7f:f6:a7:b0 > fe:dd:3f:1e:71:f6, ethertype IPv4 (0x0800), length 98: 10.0.0.250 > 192.168.0.12: ICMP echo request, id 17712, seq 551, length 64 14:15:02.055638 fe:dd:3f:1e:71:f6 > 00:13:7f:f6:a7:b0, ethertype IPv4 (0x0800), length 98: 192.168.0.12 > 10.0.0.250: ICMP echo reply, id 17712, seq 551, length 64 14:15:03.056550 00:13:7f:f6:a7:b0 > fe:dd:3f:1e:71:f6, ethertype IPv4 (0x0800), length 98: 10.0.0.250 > 192.168.0.12: ICMP echo request, id 17712, seq 552, length 64 14:15:03.056606 fe:dd:3f:1e:71:f6 > 00:13:7f:f6:a7:b0, ethertype IPv4 (0x0800), length 98: 192.168.0.12 > 10.0.0.250: ICMP echo reply, id 17712, seq 552, length 64 [root@phys ~]# ovs-appctl fdb/show br-inet | grep fe:dd:3f:1e:71:f6 6 0 fe:dd:3f:1e:71:f6 27 Any tips on what I'm doing wrong? Should OVS be learning from an ethernet broadcast generated by the LXC container? Thanks, Chris _______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss