Hey Chris, May I know which release are you using?
Did a similar test on my local setup using scapy. The arp entry is refreshed expectedly with Gratuitous ARP. Thanks, Alex Wang, On Sat, Sep 27, 2014 at 9:54 PM, Chris Bennett <ch...@ceegeebee.com> wrote: > 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 >
_______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss