[ovs-discuss] LXC, OVS and fdb learning problem

Alex Wang alexw at nicira.com
Mon Sep 29 00:18:18 UTC 2014


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 <chris at 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 at phys ~]# ovs-vsctl get-controller br-inet
> [root at phys ~]#
> [root at 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 at container ~]# ifconfig inet | grep 'ether'
>         ether fe:dd:3f:1e:71:f6  txqueuelen 1000  (Ethernet)
>
> [root at phys ~]# ovs-appctl fdb/show br-inet | grep fe:dd:3f:1e:71:f6
>     1     0  fe:dd:3f:1e:71:f6  186
>
> [root at 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 at 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 at 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 at 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 at phys ~]# ovs-appctl fdb/show br-inet | grep fe:dd:3f:1e:71:f6
>     1     0  fe:dd:3f:1e:71:f6  200
>
> [root at 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 at 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 at 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 at 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 at openvswitch.org
> http://openvswitch.org/mailman/listinfo/discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://openvswitch.org/pipermail/ovs-discuss/attachments/20140928/02d61161/attachment-0002.html>


More information about the discuss mailing list