Re: Combining bridging, 802.1q, and tap
From: Garry Dolley
Date: Thu Apr 16 2009 - 01:20:11 EST
On Wed, Apr 15, 2009 at 09:08:02PM -0500, Chris Adams wrote:
> Once upon a time, Garry Dolley <gdolley@xxxxxxxxxxxxxxx> said:
> > On Wed, Apr 15, 2009 at 07:53:04PM -0500, Chris Adams wrote:
> > > If I run tcpdump in the VM and ping from the VM, I see:
> > >
> > > 19:02:04.443160 00:04:61:4a:ee:27 > Broadcast, ethertype ARP (0x0806), length 42: arp who-has 172.24.54.14 tell 172.24.54.207
> > >
> > >
> > > I swear I saw tagged packets within the VM earlier. :-(
> >
> > Are you running tcpdump in the VM on eth2?
>
> Yes.
>
> > If so, you won't see tagged packets on eth2.
>
> Huh, I didn't realize that. I set up a different test, and you are
> right (confusing, but correct).
>
> However, if I (in the host) tcpdump tap2 or br2, the packets are
> untagged there as well. So, either:
>
> - they are not being tagged in the VM
Possibly. But your setup looks correct.
> - qemu-kvm is stripping the tag
Doubt it.
> - the tap interface is stripping the tag
My tap's pass tags w/o trouble, so it's probably not that.
> > > Okay, if I watch eth2 and eth2.20 with the same tcpdump command as
> > > above, I see incoming packets correctly. On eth2, I see the tag, and
> > > then they show up on eth2.20 without the tag. It appears to only be a
> > > problem with outbound packets not getting tagged (I see the same
> > > untagged packets in the host with a tcpdump on tap2).
> >
> > Are you sure you see the tag on eth2? I woulda killed to see the
> > tag on the physical int when doing my setup a few weeks ago.
>
> I only see it on traffic from the LAN, but yes, I do see it there.
>
> > I wonder if VLAN hardware acceleration has anything to do with it.
>
> Is that something that can be turned on/off within the VM?
No, it is a hardware NIC issue. I heard you need to recompile the
driver to turn it off (almost all NICs these days do hardware VLAN
acceleration).
> > Can you show a tcpdump on the host when pinging from inside the VM?
>
> # tcpdump -s0 -e -n -i tap2
> 20:55:30.927645 00:04:61:4a:ee:27 > Broadcast, ethertype ARP (0x0806), length 42: arp who-has 172.24.54.13 tell 172.24.54.207
>
> # tcpdump -s0 -e -n -i br2
> 20:56:11.474010 00:04:61:4a:ee:27 > Broadcast, ethertype ARP (0x0806), length 42: arp who-has 172.24.54.13 tell 172.24.54.207
>
>
> Aha! Apparently, there's a fourth option to the above possible sources
> of the problem:
>
> - the 8139 driver (either in the VM kernel or qemu-kvm) is stripping the
> tag
>
> I switched qemu-kvm to emulate an Intel i82557b (using e100 driver in
> the VM), and it all works!
Ah!! Yup, I forgot that all my *BSD VMs use the e1000 driver, not
the default 8139. I've heard the rtl8139 hardware is bad / broken, so
emulating broken hardware in turn is broken ;)
> Thanks for letting me know it _should_ work and helping me think through
> it.
Not a problem.
--
Garry Dolley
ARP Networks, Inc. | http://www.arpnetworks.com | (818) 206-0181
Data center, VPS, and IP Transit solutions
Member Los Angeles County REACT, Unit 336 | WQGK336
Blog http://scie.nti.st
--
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html