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
[email protected]
http://openvswitch.org/mailman/listinfo/discuss