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

Reply via email to